はじめまして! kikedaと申します。
大学院生をやりながら、個人開発でアプリを作ったりしています。
最近、私は「人間単語帳アプリ」なるものを制作しています。
リポジトリはpublicにしていますので以下からソースが見られます。
現状まだ開発途中なのですが、最近Qiitaの個人開発エンジニア応援企画というのを見かけたので、これを良い機会として今回おおまかに紹介させて頂きたいと思います!
【2023/12/29 追記】
iOS版のアプリが完成しました!
iOSユーザーの方、ぜひDLして使ってみてください!!
目次
1.どんなアプリか
2.技術面、特徴
3.制作のきっかけ
4.苦労した点
5.現状と今後
どんなアプリか
「人間単語帳」は、知り合った人の名前やプロフィールを記録し覚えるためのメモアプリです。
アプリのメイン画面では、登録してある人達のカードが一覧表示されます。
カードをタップすると詳細画面に移り、詳細の確認および編集/削除ができます。
登録画面では、名前に加えて、
- 所属組織(学校、職場、...)
- 特徴(出身、趣味...)
- その他エピソードなど
といった、その人のプロフィールに関するメモを箇条書きのような感覚で登録します。
特徴的なのが、クイズ機能です。
問題数を選択してスタートすると、プロフィールだけが表示され、対応する正しい名前を選択肢から選ぶというクイズが始まります。
このクイズによって単語帳で英単語を覚えるような感覚で、知り合った人の名前を暗記することができます。
以上が本アプリの主な機能です!
技術面と特徴
開発にはFlutterを使用しています。
iOS, android, その他様々なプラットフォームを統一的に開発することができる個人開発にはもってこいのフレームワークです。
単純なアプリなので、基本的には標準のライブラリばかり使用しています。
パッケージを管理するファイルpubspec.yamlの記述は現状これだけです。
(今後画像登録機能を追加したり、多言語対応などでもう少し増えるとは思います。
また実は初めは状態管理にRiverpodを使用していたのですが、今の自分にはとっつきづらく😅、StatefulWidgetで書いています。)
データ永続化のためのDBとしてはIsarを採用しています。
こちらは数あるFlutter向けのローカルDBの一つですが、ブラウザでレコードの状態が確認/編集できるInspectorなどの機能が開発するうえで非常に便利です。
こちらも個人開発にはおすすめです。
制作のきっかけ
- 「久々に会ったこの人、パッと名前が思い出せない、何さんだっけ...?」
- たまにしか会わない人との細かいプロフィールを忘れてしまう。
- 他の人と名前やエピソードを間違えてしまい、気まずい思いをする。
全て、自分自身で経験済みです😇
これらの悩みを解消するため、このアプリを作ろうと思い立ちました。
苦労した点
DBを使う以上、読み出しや書き込みで非同期処理が必要になるため、FutureBuilderやStreamBuilderの扱いで苦労しました。
また関連してレコードのプロパティであるlistを編集する際、組み込み関数のadd()やremoveAt()が使えず、代替表記することが必要でした。
静的解析ではエラーにならず実行後にExceptionが発生することも多く、ブレークポイントを張ってのデバッグも必要になりました。
これらエラー解決にあたり、一人だけでは難しいと感じたので、オンラインのFlutter開発コミュニティや、大学のIT系コミュニティにも顔を出すようにして、有識者の皆さんにアドバイスを受けながら進めています。
こういったプロの方々の助けにより何とか解決できたので、今となってはとてもいい勉強になったと感じています。
現状と今後
先にご紹介したメインの機能の70%ぐらいは実装完了しています。
あとはクイズ機能と、編集機能の細かいところを詰めていきたいという感じです。
11月中を目処にリリースを目指したいと考えています。
感想や改善案など、反応いただけると何でも嬉しいです!
ご覧いただきありがとうございました。