はじめに
過去を整理し、未来を考えるための地図をつくる。
そんなテーマで、個人開発を始めることにしました。
現在、個人開発で「自分の経験や学びを蓄積し、あとから見返しやすくするアプリ」を作りたいと考えています。
ただ、普段このようなアプリ開発を本業としているわけではないので、実現したいことに対して必要な技術が幅広く、最初は何から手をつければいいのかがかなり曖昧でした。
- デスクトップアプリとして動かしたい
- UIは使いやすくしたい
- 将来的には3Dで経験を可視化したい
- 継続的に改善できる開発環境も作りたい
やりたいことはあるのに、進み方が見えない状態です。
そこで今回は、自分自身の整理も兼ねて、学習ロードマップを記事としてまとめてみました。
同じように「個人開発したいけど、どこから始めればいいかわからない」という方の参考にもなればうれしいです。
作りたいもの
作ろうとしているのは、いわゆるToDoアプリや日記アプリではありません。
過去の経験や学び、行動した理由などを記録・編集し、時間とともに変化する経験の意味やつながりを可視化するツールをイメージしています。
たとえば、
- いつ何を行ったか(事実)
- なぜその行動を選んだか(事実の理由)
- 後から見てその経験の意味がどう変わったか(事実の解釈)
- どの経験とどの経験がつながっているか(事実同士の関係性)
そういった情報を、自分のために整理したり必要に応じて動的に編集できる場所です。
思想や背景にある考え方は、別途noteに書いていく予定なので、Qiitaでは主に技術面を中心に残していきます。
まずはローカル環境で使える、小さなプロトタイプを目指します。
現時点で実装したい機能は、大きく2つあります。
1. 3次元コミットグラフによる経験とつながりの可視化
人の経験やその関係性は、単純な時系列だけでは表現しきれないと感じています。
そこで、
- 経験をノードとして配置する
- 関連する経験同士を線でつなぐ
- 時間軸やカテゴリ軸を持たせる
といった形で、3次元空間上に可視化できないかと考えています。
Three.jsは、この部分を実現するために学習したい技術です。
2. 経験とその意味づけを編集できる機能
過去の出来事は、時間が経つと見え方が変わります。
当時は失敗だと思っていたことが、後から見ると大きな学びだったと気づくこともあります。
そのため、このアプリでは単に記録するだけでなく、
- 経験の内容を更新する
- 新しい視点で意味づけを追加する
- 経験同士のつながりを見直す
といった編集ができるようにしたいと考えています。
技術選定
今回の学習対象として、以下の4つを選びました。
| 技術 | 目的 |
|---|---|
| Tauri | デスクトップアプリ化 |
| React | UI構築 |
| Three.js | 経験の可視化 |
| GitHub Actions | 自動ビルド・継続開発 |
なぜこの構成にしたのか
React
学生時代にインターンで少し触ったことがあり、完全なゼロスタートではない点も選定理由です。
入力フォーム、一覧表示、編集画面など、ユーザーが触れる部分を形にしていきます。
将来的に機能が増えても管理しやすい構成を意識したいです。
学習時に参考にする予定の資料
Tauri
今回はブラウザアプリではなく、PCで使えるローカルアプリとして作りたいと考えています。
理由は、かなり個人的な記録も扱う想定だからです。
Tauriは軽量で、Reactの経験を活かしながらデスクトップアプリ化できる点に魅力を感じました。
学習時に参考にする予定の資料
Three.js
このアプリでやってみたいことのひとつが、「経験の可視化」です。
時系列だけではなく、
- 経験同士のつながり
- 学びの広がり
- 時間による意味の変化
などを、立体的に表現できないかと考えています。
そのためにThree.jsを学んでみたいと思っています。
学習時に参考にする予定の資料
GitHub Actions
個人開発は、作ること以上に「続けること」が難しいと感じています。
ビルドやテスト、配布準備などを自動化して、少しでも継続しやすい環境を作るためにGitHub Actionsも触ってみる予定です。
学習時に参考にする予定の資料
学習の順番
現時点では、以下の順番で進めようと考えています。
- Reactの基礎を学ぶ
- Tauriでデスクトップアプリ化する
- ローカルファイルへの保存機能を作る
- Three.jsで可視化を試す
- GitHub Actionsで自動化する
まずは「全部入り」を目指すのではなく、ひとつずつ積み上げていく方針です。
学習ルール
途中で手が止まらないように、自分の中でルールも決めました。
- 完璧を目指しすぎない
- 小さく動くものを作って記事にする
- 詰まったら調べて記事にする
- 比較より継続を優先する
- ゆっくりでも毎週進める
今までは、長期休暇に短期集中で小さな成果物を作っていましたが、今回作りたいものは大規模になりそうなので、小さな積み重ねを継続する形で進めていきたいと思っています。
今後の予定
次の目標は、React + Tauriで最小構成のアプリを起動することです。
まずは、以下を目標にします。
- 入力欄がある
- 記録できる
- 保存できる
余裕があれば、Three.jsで線を描くところまで試してみたいです。
進捗や学んだことは、今後Qiitaにも残していく予定です。
おわりに
個人開発は、完成したものだけが価値ではなく、途中の試行錯誤にも価値があると思っています。
まだ何もできていませんが、まずは一歩目として計画を公開してみました。
ここから少しずつ形にしていきます。
関連記事一覧