私がリーダーではない私のプロジェクトが生えた【ICT Advent Calender 2019】
どこかのアドベントカレンダーにてカレーの作り方を紹介しようとしていた人がいたので、私もカレーの作り方を紹介しようと思いました。
そもそもカレーの作り方、わかりませんでした...。
これにてICT Advent Calender 2019 25日目の記事は終了です。
という冗談は置いといて。
こんにちは、最近燃やしがちの【削除済み】です。
25日目の記事は、バター氏とOB枠のコーヤ・ロードアゲイン氏が執筆してくださいました。
先輩をタカっていきたいですね。
バター氏
/* ここにリンクを張る */
コーヤ・ロードアゲイン氏
そして、私のことを知らない弊学OBの方々もいると思うので、はじめに自己紹介させてください。
目次👇
事故紹介
名前 ☞ 2tf (にとふ)
学科 ☞ メディア情報工学科
学年 ☞ 1年生 (16th)
2tfの呼び方は実は未定義です。undefined。なんでもいい(クソザコナメクジと呼べ)
特に変哲もない1年生です。よろしくお願いします。
長すぎる前置きはこのくらいにして。
本記事はICT Advent Calender 2019 25日目の記事となります。
プロジェクトが生えた
私は現在、Nocia(ノシア)という学校生活サポートアプリを開発しています。
開発するまでに至る経緯は、Nociaはもともと第30回高専プロコンで開発していたモバイルアプリにソフトウェア設計を転用するためのプロトタイプアプリであり、高専プロコンが終了してから何か利用できるものはないかと考えたら、学校サポートアプリを作ろうと計画したことにあります。
そうして立ち上げたプロジェクトが、「Nociaプロジェクト」。シャイな僕はリーダーをふんど氏に任命しました。おかしい。
チームメンバーは、
リーダー兼PM ☞ ふんど氏
Web ☞ べじ氏
これはなに? ☞ 2tf
となっています。あと、ロゴを微積氏に任せるつもりです。許諾していただき感謝。
皆頑張ってる(まだタスクを振ったことはない)
一応私一人ですが開発は進んでいます。リリースは2020年内にはしたい。
技術
Nociaは、Android・iOS対応のモバイルアプリとなっています。「プラットフォーム複数対応だとキツイものがない?」と聞かれますが、全然キツくないです。その秘密は使用しているフレームワークにあります。
Flutterってヤツ
その秘密のフレームワークというのは、Flutter(フラッター)です。
...
まぁまぁ、そんなに沸かないで。
Flutterの説明をしましょう。
Flutterは、Googleによって開発されているフリーのモバイルアプリケーションフレームワークです。お察しの通り、AndroidとiOS、クロスプラットフォームに対応した素晴らしいSDKです!沸くな沸くな!
Dart言語で記述されたコード単体で、両プラットフォームでアプリを動かすことができます。
※ 今回は長くなるのでFlutterのコード解説等は割愛します。
続いてNociaの設計について説明します。
ソフトウェアアーキテクチャ
Nociaでは、ドメイン駆動設計(Domain Driven Design、以下DDDと言う)を用いて設計されています。
DDDで設計すると何が嬉しいのか?
まずDDDとは、エリック・エヴァンスが提唱した開発手法です。
DDDを簡単に説明すると、
「顧客と開発者が業務を戦略的に理解し、共通の言葉を使いながらシステムを発展させる手法」
らしい。
開発陣とカスタマーのズレを解消するために『共通の言語』を用いることで、保守しやすいシステムの構築を効率よく図ることができます。
共通の言語とは?
ある業務の専門的な用語が通じる範囲を、『境界づけられたコンテキスト』と呼び、その境界づけられたコンテキスト内で通じる専門的な用語を『ユビキタス言語』と定義します。ユビキタス言語はそのコンテキスト内で通じる共通の言語であり、コンテキスト外では別の意味となります。
Nociaは一人での開発となっているのでユビキタス言語の強みなどを生かせられていませんが、大規模システム開発などのプロジェクトでは力が発揮される手法だと思います。
機能
Nociaには3つの機能の実装を予定しています。
- 学内ニュース配信
- 時間割
- 届作成
学内ニュース配信機能は、学校公式Webページで配信されているRSSを表示するほか、学生がNocia運営に提出したニュース、Nociaニュースを配信することができます。イベント告知による集客を可能にすることで、ユーザーを増やすのが狙いです。
時間割機能は、あらかじめ登録したユーザーの学科、学年、学期、またコースなどの情報から全講義データを取得し、講義を全講義リストからピックアップして時間割に登録することができます。登録した講義から講師名などの情報が確認できます。
届作成機能は、帰省届では、帰省日と帰寮日、またそれぞれの時間を入力することで、各三食の欠食数などの情報を算出し、PDF化、そして印刷までのサポートが行えます。
この機能は帰省届のPDFを用意できていないことと、技術的に厳しいことがあるので、実装は遅れることになるでしょう。
以上がNociaの大まかな機能の説明となります。
おわっちゃうのか
FlutterからDDDまで雑に説明しました。特にDDDに関しては全然説明していないので、是非もっと深く、わかりやすく説明されている記事を見てください。
Nocia、17期生が入学するタイミングにでもリリースできればいいな、と思っています。現実は厳しい。iOS何もわからなさすぎる。
では、Twitterでお会いしましょう。高専プロコン2020のアイデア出しつらいつらいしなければいけない。
27日目の記事は、私と同期のきしりんが執筆します。
バーモンドえだまめたぴおか、これはなに?