- 誰かが同じようなものを既に作っていた
- 既に作られているから自分が作る必要を感じない
- そもそもネタ探しやアイデア出しすらよくわからない
上記の悩みから、個人開発で作りたいものがない時の考え方と取り組みについて具体的な解決策を解説します。
個人開発で作りたいものがない人へ
近年プログラミング熱は高まっており、エンジニア問わず多くの人が個人開発に興味関心を持ち始めたと感じます。
しかし、過去の筆者も含めて「やってみたいが作りたいものがない」といった状態に陥る人も少なくないと思います。
特に、個人開発に一度挑戦しようと動き出した人は以下のような経験をしたのではないだろうか。
- 誰かが同じようなものを既に作っていた
- 既に作られているから自分が作る必要を感じない
- そもそもネタ探しやアイデア出しすらよくわからない
上記のように、個人開発する前の情報収集段階で取り組む必要性を感じられず手が止まる人は多いのではないだろうか。
つまり、自分が考えたネタやアイデアが既に出尽くされたと感じ、なかなか個人開発のモチベーションが高まらない人は一定数存在すると思います。
そのため、個人開発における考え方として以下の方法をおすすめします。
- 個人開発は作りたいものよりも作れるものから始める
- 個人開発のネタ探しやアイデア出しは体験から見つける
順を追ってそれぞれの考え方を説明します。
個人開発は作りたいものよりも作れるものから始める
もしも、個人開発において経験がないあるいは浅いといった初心者であれば、「作りたいものを作る」といった行動に注意が必要です。
なぜなら、何か良い案が思い浮かんでも「作りたいもの」が現在あなたの技術力で作れるとは限らないからです。
特にプログラミングによる個人開発であれば、最終的に具体的なコードに落とし込む必要があります。
個人開発をいきなり挑戦しようと考えても、最終成果物から逆算した過程が不透明すぎて手が付かないケースがほとんどです。
つまり、「◯◯を作りたいけどどうやって作ればいいんだ?」といった状態に陥ります。
そのため、個人開発の経験がない人ほど「作れるものから始める」必要があります。
個人開発で作れるものから始める理由
結論は、プログラミング技術に関する超具体的な知識と実装経験を積むことが今後の個人開発に活かされるためです。
たとえ、誰かが既に作っているものあるいはネット上にあるチュートリアルでもよいです。
どんなものであれ「作ったことがある」という経験は、個人開発において多くの気付きを得ることができるからです。
ここでは、一例としてPython製フレームワークのFlaskを用いたToDoアプリ開発を仮定したケースを示します。
- Webシステムに対するPython基礎文法
- FlaskにおけるMVTモデルの理解と使い方
- 利用するライブラリの理解と使い方
- ToDo管理を実行するCRUD機能
- ToDo管理に必要なDB設計及び連携
- HTMLとCSS(BootStrap)によるUI実装
いざ作ってみると、多くの気付きに出会います。
作ってみるまで分からなかったが、作ってみると驚くほど様々なことに気付きます。
- 「ここはもう少しUIデザインを凝ったほうがいい」
- 「この機能はこんな改善ができる」
- 「◯◯機能を応用できそうだ」
- 「なるほど、この部分はこうなっているんだ」
何かを作ることは、自分なりの改善点や失敗パターンを見つけ出す作業であり、あなたが利用できる技術が具体的に洗練されていきます。
手を動かすことで「作れるもの」に対する解像度が高まり、合わせて「作ってみたい」という欲求が生まれることは筆者の経験上とても多いです。
実際にハンズオン形式で簡単なアプリを実装してみたい人は「【Flask】flask-loginによるログイン機能を実装した認証アプリ開発」も一読してみてください。
個人開発のネタ探しやアイデア出しは体験から見つける
次に、個人開発はネタ探しやアイデアを体験から見つけることです。
個人的な見解ですが、作りたいものの根源が何からくるのか考える必要があると思います。
- おもしろい/楽しい
- 何かに対する不自由さ
- 何かを利用したい際の不便さに気付く
発想のきっかけは様々な場面で訪れます。
例えば、toBアプリ/サービスは基本的にビジネスにおいて効率化/自動化あるいは革新的な進化など特定業界や業務に明確な問題があることが多いです。
一方で、toCアプリ/サービスはユーザー心理が内在する様々な市場からヒントを得て問題を解決するケースが多いです。
どちらにおいても、想像だけでは簡単に作りたいものが見つかりません。
不自由さや不便さを感じる場面があるからこそ、実際の課題が存在するのでネタやアイデアとして利用できます。
プログラミングの本質は課題解決の手段
おそらく、あなたも日常生活の中で不自由さや不便さを少なからず抱えていると推測します。
- 朝起きるのがつらい
- 夜思うように寝付けない
- 満員電車に乗るのが苦痛
- 休みがつまらない
- 雨の日がだるい
とても小さな悩みであっても、そこに個人開発のヒントが隠れています。
また、プログラミングの本質は上記のような課題をIT技術によって解決する手段です。
- 誰でも素早く連絡が取れるメッセージアプリ
- 出会いがない人のニーズに応えたマッチングアプリ
- 誰でも商品を売買できるフリマアプリ
- 時間を潰してくれるゲームアプリ
挙げればキリがありませんが、全て課題解決にプログラミングを手段として開発されています。
日頃から当たり前の中の違和感を探すことで、驚くべき有益なアプリ開発のネタが眠っています。
そのため、手始めにあなたの日常をアップデートしてくれるネタやアイデアを探りましょう。
「作る前」「作ってる最中」「作った後」で気付くこと
ここでは、筆者の実体験としてデスクトップアプリ開発の話を記します。
大学生時代に紙とペンでノートでやることを箇条書きでメモしたり、直近のタスクを付箋でPCに張り付けたりと原始的な方法を続けていました。
しかし、あまりにも読み返さないし付箋も溜まることからデスクトップアプリによるToDoアプリ開発を目的にしました。
- 箇条書きベースのToDo管理機能
- UIは小ウィンドウ表示
とりあえず、ToDoアプリなんて何も考えず取り組んでもそれなりに実装できるだろぐらいの気持ちでした。
しかし、作ってる最中で様々な気付きを与えられました。
- 期日や重要度/緊急度といった項目も必要
- 箇条書きで収まらない内容はコメントを付与する
あくまで機能のみに留めていますが、実際はDB設計の見直しや小ウィンドウにどう収めるかなど様々な改良を施した記憶があります。
さらに、研究室仲間に利用してくれとアプリ配布し、テスト利用してもらった結果多くのフィードバックをもらいました。
- どうせならデスクトップに付箋として貼り付けたい
- 付箋の色によって重要度と緊急度を分けたい
- 完了タスクを可視化して達成度を確認したい
- 次の日タスクはスマホに通知したい
「作る前」と「作ってる最中」では想像しなかった気付きや発見をたくさんもらった経験をしました。
つまり、アプリ開発をする前/最中/ユーザーフィードバックでは、見えてるものが違うということです。
筆者は上記のような経験も含め、フィードバックはもらえないとしても「作る前」と「作ってる最中」だけでも違う気付きを開発を通して学んでほしいと強く主張します。
個人開発のモチベーションを維持するには
とはいえ、個人開発におけるモチベーション維持は一つの課題です。
ここで一度想像してみてください。
- 手を動かす作業
- 脳を働かせる作業
どちらの作業がモチベーション維持できるかを考えてみてください。
どちらも何かを作る段階で必要な作業です。
なんでもいいしマネでもいいから何かを作るために手を動かす作業に励んだ人は、コードあるいは成果物の形が残り確かに前に進んだ実感があります。
一方で脳を働かせる作業は、丸一日かけ頭の中で色々な試行錯誤した結果、1行もコードを書いていないわけだから瞬間的に見れば問題ないように思えます。
ただ、「しっかり考えたから前進である」とどこか自分に言い聞かせながら、実際問題目の前の文字列は増えていない状況になります。
つまり、脳を働かせる作業の比率が増えるほど進みが遅くなり、いつしかモチベーションも低下する状態になります。
そのため、筆者がモチベーション維持で重要視しているのは以下の一点です。
たった1行でもコードを記述すること
個人開発において目で確認できることは、「この部分だけは少なくとも進めることができた」と心が救われます。
これほどまでに手を動かす作業と脳を働かせる作業には、大きな違いがあると考えます。
口酸っぱく言いますが、「ただなぞるだけのマネでもなんでもいいから手を動かし作ってみる」作業はとても重要です。
「作り方を知る」段階から「作ったことがある」状態になると、小規模ではありますがいくつかのアプリ開発によって成果物が得られます。
これらを組み合わせることで様々なネタやアイデアが引き出しにあるため、個人開発のヒントになります。
さらに詳しい「作りたいものがない」時の考え方を知りたい人は「プログラミングで作りたいものがない時の考え方と具体的なアプリ開発構想」も一読ください。
個人開発の初心者におすすめの学習方法
上述してきたように、個人開発の経験ないあるいは浅い人ほど何を学習対象にするか選択に悩むことがあります。
筆者のおすすめとして、以下の”絞る”といった方法があります。
- 特定の言語の特徴に絞る
- 特定のフレームワークで絞る
- 特定の機能を持つライブラリを利用した開発に絞る
- トレンド技術(AIなど)を含んだ開発に絞る
個人開発を実施する前にどれだけ多くのネタやアイデアを創出しても、取り組めるのは一つに絞られます。
同時並行が無理と分かっているのであれば、「まずこの技術以外はやらない」と取り決めを作るとよいでしょう。
コメント