Project Y DAY6|写真を選べる。その一歩が意外と大きい
Project Y、DAY6。
前日までにワインアプリの方向性が少しずつ固まり始め、この日はより具体的な実装へ進んだ。
今日の中心は、スマホの中から写真を選べるようにすること。
言葉にすると、それだけ。今なら当たり前に感じる機能だけれど、初めてアプリを作っている側からすると、この「それだけ」が意外と簡単ではない。
写真を選ぶ。選んだ画像をアプリに渡す。画面に表示する。そして将来的には、その画像をAIに解析させる。
ワインアプリにとっては、ここが入口になる。
Photo Pickerを入れる
まず取り組んだのは、AndroidのPhoto Picker。ユーザーがスマートフォン内の画像を選び、その画像をアプリで扱えるようにする機能だ。
AIワイン説明アプリでは、次の流れを考えている。
ワインラベルの写真を選択する
AIが解析する
結果を表示する
だから画像選択は、単なる便利機能ではない。アプリ全体のスタート地点だ。
ここが動かなければ、その先のAI解析にも進めない。
画像表示のためにCoilを導入
画像を選べるようにするだけでは足りない。選択した画像をアプリ上に表示する必要がある。
そこで導入したのが、Androidで画像を扱うためのライブラリ「Coil」。
ここで少しずつ、「必要な機能を全部自分で一から作るのではなく、既存のライブラリを利用して組み立てていく」というアプリ開発の感覚も分かり始めた。
ただし当然、入れれば終わりではなかった。
GradleとKotlinに止められる
ライブラリを追加すると、今度は別の問題が出てくる。Gradle、Kotlin、バージョン、依存関係。
初心者からすると、「写真を表示したいだけなのに、なんでこんなところを直しているんだ?」という世界である。
実際、この日はKotlinのバージョン不一致にも遭遇した。
コードそのものではなく、開発環境同士の組み合わせが合っていないために動かない。こういう問題も、アプリ開発では普通に起こるらしい。
最初はエラーが出るたびに、「また壊したか?」と思う。
でも少しずつ、エラーは失敗ではなく、次に直す場所を教えてくれているだけ、という感覚にもなってきた。
画像表示の土台まで完成
試行錯誤しながら、この日は次のところまで進んだ。
Photo Pickerの導入
Coilの導入
Gradleのライブラリ設定
Kotlinのバージョン不一致の修正
そして最終的に、写真を選択して表示するための土台までは完成した。
ただし、この日の時点ではエミュレーター上で画像が表示されず、完全な動作確認まではできなかった。
つまり、機能として完成したわけではない。でも、昨日より確実に前へ進んでいる。
このくらいでいい。
「完成しなかった日」も進捗
開発を始める前は、一日の最後に何か一つ完全に完成していなければ、進んだ気がしないと思っていた。
でも実際は違う。
原因を一つ潰す
環境を整える
必要なライブラリを入れる
次回すぐ再開できる状態まで持っていく
それも立派な進捗だった。
むしろ毎回全部終わる方がおかしい。初めて触るものばかりなのだから、問題が出るのは当然だ。
このProject Yでは、止まらなければいい。少しでも前へ進めば、その日の作業は資産として残る。
CommitとPush
この頃から、作業が終わったらGitでコミット(Commit)とプッシュ(Push)をする流れも作り始めた。
以前なら、「保存したから大丈夫」くらいの感覚だった。
でもアプリ開発では、変更履歴を残しておけば、何を変更したのか確認できる。問題が起きても戻れるし、別の日でも続きから始めやすい。
開発そのものだけでなく、開発を続けるための仕組みも少しずつ作り始めていた。
アプリの後はRONIN
そしてProject Yは、アプリだけではない。その日のアプリ作業を終えたら、Unreal Engineを触る。
Project RONINは、自分にとって仕事というよりご褒美に近い。
アプリで頭を使ったあとに、ゲームの世界を作る。この切り替えが意外とちょうどいい。
全部を義務にすると続かない。だから、作業と遊びの境界が少し曖昧なくらいがちょうどいい。
Project Y自体を長く続けるには、そういう設計も必要なのかもしれない。
DAY6まとめ
DAY6は、大きなサービスを公開した日ではない。売上が出たわけでもない。
写真を選択して表示する。その入口を作っていただけだ。
それでも、この一歩がなければワインラベルのAI解析には進めない。
小さな部品を一つずつ作る。問題が出たら一つずつ直す。終わったらコミットしてプッシュする。そして翌日、また続きをやる。
派手さはない。でもたぶん、ものづくりはこういう日の積み重ねなんだと思う。
Project Y、DAY6。
ワインをAIに解析させるための「入口」が、少しだけ形になった。
コメント