自分が訪れた場所を記憶するアプリを開発したいと思った
欲しいと思ったきっかけ
これまで色々な場所へ訪れた。国内はもちろん海外も欧州や北米、南米も行った。アルゼンチンの南端で野生のペンギンも見てきた。この思い出を振り返ろうとした時にスマホの写真アプリを開いて遠い記憶をたどりながら、あれいつ行ったっけなぁ〜なんて言いながら大量のサムネイルをスクロールしながら目的の写真を指が痛くなるまでめくって見つだす。そうそう、野生のペンギンは意外に動かなっかったな。なんて思い出しながら周辺の思い出も探る。そういえばレストランで食べた豆のスープがあったな。 あーこれこれ。 このレストランの名前面白かったけど、なんて名前だっけな? このように旅行へ行ったことは覚えているけど訪れた場所や見た風景は強く印象が残っているもの以外はあやふやな状態。まぁそれがいいんだよ。って人もいるけど僕は思い出して旅情に満たされた時間を過ごしたいと思う時がある。過去訪れた場所を記録してくれるアプリがあるのでそれを使うことで僕の欲求は満足されると思ったのだが使ってみると自分の思うようには過去の位置情報は整理されない。訪れた場所を時間で遡ってリスト表示されたり、種別ごとで検索できるのだが、僕の欲しいのはそれじゃない。 旅行の計画をバックトレースできるアプリなんだ。アプリストアを探したけど目的のアプリを見つけ出すことができずにいたので、「そうだ作っちゃえばいいんだ」という結論に至った。
開発に使ったサービスや技術
何を使うと一番早く開発ができるのか。Cやアセンブラは得意だけど、最近のソフト開発さっぱりわからない。Webサービス開発だと3年ほど前にRailsのチュートリアルをやった程度の経験値だが、これしか無いので頼ることにした。いざ環境を構築すると無料で提供してくれていたHerokuが有料となってしまっていた。時代の流れを感じる。仕方がないので無料でWebサービスが開発できるプラットフォームを探した。たどり着いたのがFirebaseだった
FirebaseはGoogleが提供してくれているサービスで無料枠が存在する。調べてみると個人が使う分には全く困らないほどの無料枠であることがわかった。ありがとうGoogleさん。他にも位置情報を使うのでGoogleMapやら旅行の計画管理に使えるカレンダーなどのサービスも充実している。迷う必要はないのでFirebaseを学んでWebアプリを開発することにした。
いかに使ったサービスや技術を箇条書きで残しておく
Firebase
Hosting
Realtime Database
Authentication
Googlemap PlaceAPI
言語
JavaScript
HTML/CSS
PWA(Progressive Web Application)
SPA(Single Page Application)
PWAはWebアプリを通常のアプリのように振る舞って表示してくれる便利な機能。どれだけ実装が難しいのかと思っていたけど、単純なホームにアイコン配置であれば5分程の作業で実現できることがわかった。みんなもっと使えばいいのに。
SPAはWebアプリを一つのURLで完結して実行するため、URL変更に伴う読み込み動作がなくサクサク動くアプリを実現することができる。
これらのサービスや技術は少しプログラミングをかじったことがある人であれば扱うことができ、実戦経験の無い私にもWebサービス開発(もちろん個人で使うだけだけど)の成果物としてインターネットに公開することができてしまう環境に驚いた。アセンブラでガリガリコーディングしてEPROMに焼いては紫外線を当てて消去していた時代のエンジニアにとっては全く別世界であった。
要件の整理
開発する基盤選びを終え実際に開発するアプリの要件を決めていく。やりたいことを羅列してみる。
旅の記録が残せて簡単に見返したいな
写真や動画も簡単に検索したいよね
旅の計画もできるといいな
行きたいところのクリップも集めたいな
思い出を知人やインターネットで共有したいな
旅の計画も知人と共有して編集も一緒にできるといいな
CheckInするの手間だから自動もしくは忘れた時に行動履歴からチェックインできるといいな
作り始める前なので夢は膨らむ。これら要件から開発の作業量を見積もってみる。機能を分割し、構成する画面を想像すると上記でも大規模なものになることがわかった。 とてもやりきれない。この中から優先順位を整理し実装していく順番を決めていく。要件の実現方法を検討していく中で最後にある行動履歴からチェックインするのはバックグラウンド処理で位置情報を常に監視する必要がありPWAでは実現できないことがわかった。そのため本機能は最後にする。
優先順位をこのように考えた。
開発優先順位
ログイン機能
チェックイン機能 チェックインリスト表示 >> イマココ
候補地検索とクリップ
旅行計画の作成と閲覧
画像、動画撮影
旅行記事のWeb公開
知人と旅行計画の編集
行動履歴の自動監視
日程
ざっくりとした日程をかんがえた。仕事じゃ無いので焦る必要もない。締め切りもない。でも目標を立てないと開発に根を詰め込みすぎてしまい本業が疎かになる可能性もある。毎月1アジェンダこなしていく程のペースで進めていこう。
今日現在2番まできた。 週末も雨なので開発を進めていきたい。
最後に
私個人に向けて開発しているアプリのため、制限やレイアウト崩れなど多々残っている。だがせっかく作ったものなので将来的には私と同じ価値感をもった人に使っていただけると嬉しいと思ってます。