当記事での個人開発は収益化に向けたアプリ開発を指しておりません。
趣味の範疇で行う個人開発となります。
個人開発を行うメリットは以下であると考えます。
- 技術スキルの向上
- 技術に関するキャッチアップ力向上
- プライベートの質向上
メリットの深堀り
1. 技術スキルの向上
実務で扱うことができるプログラミング言語やインフラ構成に関してはモダン性<安定性が求められるかと思います。
それに伴い実務で扱える言語やフレームワーク、インフラ環境がモダンな構成からかけ離れているケースがあり得るかと思います。
個人開発ではモダン性>安定性で実現可能であるため、多少安定性を犠牲にしてでもモダン性を追及できるメリットがあります。
副作用として、モダン技術の知見がある→実務で実際に活かせる・技術選定時にアイデアや知見の共有ができるといった事にも繋がります。
2.技術に関するキャッチアップ力向上
要求内容によりますが、個人開発を行うことでローカル環境で動くアプリの開発で終わることなくリモート環境で動くアプリ開発を行う状態を作り出すことができます。
これに伴い、リモート環境のOSはどうするか、webサーバはどうするか、CDN・ロードバランサ・NAT機能は不要かといった問題に気づくことが可能となります。
もちろん使用言語が適切か・他言語でも実装可能ではないか・多言語のほうが処理能力が高いのではといった事にも着目できるかと思います。
以降は個人の見解になります。
私は、個人開発を行うことで特にインフラ面で考慮しなくてはいけない面を多く知ることが出来ました。
この点は通常業務を遂行するだけでは学ぶことが出来なかったのではと認識してます。
インフラエンジニアという言葉が世の中に出回っていることからインフラの世界についても明確な水準は現時点で定義できませんがすべてのエンジニアが知識レベルで知るべきであると感じました。
3. プライベートの質向上
個人開発として筋トレアプリを開発しました。
※認証機能を割愛しているため、当記事でのサイト紹介は開発環境のみとさせていただきます。
https://gosho-techplay.com/training/
※開発環境であることにより、検証中の不具合が顕在化している点ご容赦ください。
当アプリを開発することで以下のメリットが生まれました。
1.既存アプリ有料機能の無料化
例として、1か月単位での日割り換算の自動化機能、1RM(1回だけ上げることが出来る重量を取り扱う運動)をベースに各種トレーニング法でのセット数・重量の自動計算機能があります。
2.柔軟なカスタマイズ化
改善中ではあるが、UIやクリック回数の削減などユーザ目線で改善したいところを開発者がカスタマイズできる部分があります。
3.障害発生時のリカバリ容易化
DBデータ参照、登録に失敗して画面が動かなくなった等の障害に対して開発者が気づき、リカバリすることが可能です。(本記事で公開しているアプリは開発環境であるため、障害発生の気づきに遅れが生じる可能性があることご容赦ください。)