・「プログラミングを学ぶ上で作りたいものがない。」
・「作りたいものがない場合はどうすればよいのか?」
プログラミング学習を経て、キャリアアップ・転職などエンジニアとしての働き方の指針は持ちやすいです。
一方、学習の中で作りたいものがないといった悩みも発生します。
- 「プログラミングで作りたいものがない。」は当然であること
- 作りたいものから考えるよりもマネしたいものから始める
- 作りたいものが決まったらどのように学習を進めるのか
プログラミング学習の悩みに対する解決方法を具体的に解説していきます。
プログラミングで作りたいものがない状態になる原因
プログラミングで作りたいものがない状態になる原因はいくつか考えられます。
以下の原因は、プログラミング初心者が開発経験時に抱えるの代表的な悩みです。
- 作りたいものなんて構想できない
- 高度なものから考えがち
- 何が作れるのかわからない
- 開発に関するプログラミング知識が足りない
それぞれの悩みは、まとめれがちですが単体で切り分けて一つずつ考える必要があります。
作りたいものなんて構想できない
大前提ですが、全てのエンジニアがプログラミング学習時から作りたいものがあったかといえば、無かったと断言できると思います。
さらに言えば、現役エンジニアとして実務をこなしている人でも、いまだに自身で作りたいものがあるかといえば、無いと答える人は一定数存在します。
なぜなら、「自身でオリジナルのアプリ/サービスを作る」といった目的でエンジニアになるとは限らないためです。
大多数の企業エンジニアからフリーランスエンジニアまで、「他者が作りたいもの」のためにプログラミングスキルを駆使することがほとんどです。
つまり、プログラミングは作りたいものがあるから学ぶわけではなく、誰かの課題を解決する手段として利用することが多いです。
あなたが作りたいものがない状態なのが問題ではないため、誰かにスキルを提供し誰かが作りたいものを実現するといった考えもありだと考えます。
高度なものから考えがち
とはいえ、自身でアプリ開発を実施しないことには開発スキルが育たないのも事実です。
昨今、様々なアプリ/サービスがリリースされていますが、あくまで公開されているソフトウェアはユーザーを抱えている有名なものに限ります。
つまり、あなたが調査/確認して視認できている範囲のアプリは、質の高い状態に決まっています。
また、一度は目にしたことあるかもしれませんが、様々なアプリは常にユーザーからのフィードバックにより改善/アップデートが実施されます。
最初からあなたの身の回りで利用しているようなアプリを開発しようとすれば、当然ながらプログラミング学習の挫折あるいは開発時のモチベ低下につながります。
問い合わせフォームやToDoアプリなど、まず開発の流れと最低限知っておくべき機能を開発するところから始めましょう。
何が作れるかわからない
自身が学び始めたあるいは基礎学習を終えたプログラミング言語で何が作れるかわかっていない人も少なくありません。
- Webサイト/Webサービス
- スマホアプリ関連(SNSやタスク管理アプリなど)
- ゲーム関連アプリ
- 仕事で触れたことがある業務系アプリ
toB/toCによってもターゲットになるユーザーが変化するため、作れるか以前に作るべきかと悩んでしまいます。
これも当然の話で、現役エンジニアであっても要件定義/基本・詳細設計といった上流工程まで経験した人でなければ作るべきか、そして作れるのか考えることになります。
複雑で規模の大きいアプリ開発あるいはいまだ世の中にない未知のアプリであればなおさら難しいです。
開発に関するプログラミング知識が足りない
プログラミング初心者にとって、開発領域は未知の知識が膨大です。
特に、これまで身に付けてきたプログラミング言語の基礎内容が開発時でどのように利用されるのかわからない状態です。
そのため、何度も記載していますがまずは誰でも通るようなベタな簡易アプリ開発がよいです。
「基礎内容が開発時どのように使うのか理解する」「フレームワークを理解する」「採用モデルの流れを理解する」「機能を作る」「UIを作る」など、実現できることを一つずつ獲得していきましょう。
「プログラミングで作りたいものがない」は当然である
初学者の人によっては、プログラミングで作りたいものがないと考えてしまい、プログラミング学習の手が止まる人がいます。
なぜそのような現象が起きてしまうかは至ってシンプルで、「プログラミングと直接関与していない」といった理由があります。
- 収入アップを考えてスキルを習得したい
- 転職によって働く職種をチェンジしたい
エンジニアとして作りたいアプリを開発したいといった目的からプログラミング学習を始めた人以外は、上記の理由からプログラミング学習を意識します。
そのため、プログラミング学習に至るまでのあなたの思考プロセスが「収入や働き方」を起点にしていた場合、当然「プログラミングで作りたいものがない」状態になります。
また、プログラミングによる作業はクリエイティブな業務でもあります。
つまり、これまで学生時代の中でテスト(正解が存在するもの)を解くために、問題集に取り組むような環境が確立されているわけではないです。
プログラミングの基礎学習を終えたタイミングで考えもなしに成果物をいきなり作成・開発するのは難しいわけです。
作りたいものを考えるよりもマネしたいものから始める
0から自らの発想のみで作りたいものを考えるのは無謀です。
実際に、現役エンジニアやWebデザイナーなども、経験を踏んで発想を養っているはずです。
発想とまではできなくても、作りたいものを探るヒントとして以下の取り組みがおすすめです。
- 作りたいものは「興味関心」から探る
- 扱いたい言語から探る
- TTP(徹底的にパクれ)
それぞれのアプローチによって難易度が違うため、取り組みやすいアプローチから実施しましょう。
作りたいものは「興味関心」から探る
おそらく、これまで様々なWebサイトやアプリケーションを見てきたと思います。
あなた自身が興味関心を惹かれるものがあったはずです。
- Webサイト/Webサービス
- スマホアプリ関連(SNSやタスク管理アプリなど)
- ゲーム関連アプリ
- IoT/デバイス関連
- AI
- FinTech
上記のように、インターネットを介して何かしらのサービスやアプリを触った経験があると思います。
そして、何気なく触れている中で「使いやすい」「分かりやすい」「デザインがいい」「便利」など感じるはずです。
このように好印象を受けるプログラムは、間違いなくユーザーエクスペリエンスが高く、利用者を研究しています。
あなたの興味関心の琴線に触れたものをメモしたり、リスト化しておくと作りたいもののヒントにつながります。
扱いたいプログラミング言語から探る
興味関心以外にも、扱いたいプログラミング言語から探るといった方法もあります。
もともと年収アップや転職といった目的からプログラミングのスキル習得を考えた人は、特段これといった成果物へのこだわりがないことも珍しくないです。
そういった方々は、以下の項目から作りたいものを探るとよいでしょう。
- 高収入が狙いやすいプログラミング言語
- 就職/転職しやすいプログラミング言語
- デザインに強いプログラミング言語(フロントエンド)
- 機能面に強いプログラミング言語(バックエンド)
現実的に、全てのエンジニアがオリジナルのWebアプリ/サービスを作ったわけではなく、あくまでエンジニア就職や転職に利用するスキルとしてプログラミングを選択するケースもあります。
そのため、自身ではなく誰かの作りたいものに役立つエンジニアになることも一つです。
企業で働くエンジニアは、まさに会社のためのWebアプリ/サービスに貢献する中で、自身が作りたいと思えるものに変わっているはずです。
TTP(徹底的にパクれ)
とはいえ、特にWeb系企業への就職や業務委託による案件受注を成功させるために、ポートフォリオとして開発経験が求められるケースもあります。
そのため、作りたいものは徹底的にパクるのも一つの方法です。
もちろん、完全コピーは問題になるため、「デザインを変える」「機能を一つ追加する」といったオリジナルの部分を加えます。
マネていく中で、必ずあなた自身のこだわりや譲れない機能などが生まれます。
最終的に、TTPによって「これをもっとよくしたい!」「あれを追加したい!」など、作りたいものに変わることもよくあります。
プログラミングで何を作りたいかわからない
始めたばかりプログラミング初心者の場合、もはや何を作りたいかわからないといった状態もあり得ると思います。
何を作りたいかわからない状態は、少ない記述量と知識不足から陥ります。
改めて、プログラミング学習者が成長段階で抱える悩みを以下に記載します。
- そもそも作りたいものがない
- 何を作りたいかわからない
- 作り方がわからない
おそらくプログラミングで何かを作るといっても、一概に作りたいものがないだけで片付く話ではありません。
しかし、少し過激な言葉を使うなら「圧倒的なプログラミングの経験不足」に他なりません。
プログラミング学習で重要なのは、自らの手を動かしコードを記述することです。
学習面においても技術研鑽においても、やはりマネ・写経であっても取り組むことが重要だと考えます。
プログラミングは作りたいよりも作れるものから
ここでは、例としてTypeScriptによるToDoアプリ開発を実施したと仮定します。
一般的に、ToDoアプリ開発で学べる知識・スキルを以下に列挙します。
- Webシステムに対するJavaScript基礎文法/構文の使い方
- TypeScriptとJavaScriptの関係性
- フロントエンドとバックエンドの役割と仕組み
- ライブラリの理解
- Reactの使い方とディレクトリ構成
- DB設計/構築方法
- ToDo管理を実行するCRUD機能
- UI画面の実装及びデザイン構成
Webアプリケーション開発の最も一般的なToDoアプリでさえ、代表的なスキルや技術の基礎部分を実践で学ぶことができます。
実際に、「☐☐機能を作った」「✕✕機能なら作れる」といった経験を増やすことで、組み合わせから様々なアイディアも生まれます。
また、既存アプリのクローンであっても「何かを開発する」行為は、様々な技術の複合技であるため、プログラミングスキル習得と向上に大きく貢献します。
とにかく、突飛な発想が必要だとか、こんなものを作る意味がないといった考えを一度捨て、自身で理解できる範疇のアプリを開発しましょう。
作ってみた結果から見えてくるものがあるはずです。
サンプルとして、TypeScript×ReactによるToDoアプリ開発を経験したい人は「【TypeScript】フロントエンド開発におけるReactを利用したToDoアプリ開発」を一読ください。
その他にも、学習教材用で個人開発したZoomアプリのクローン開発も問い合わせがあればプレゼントしています。
ご興味があれば、以下から問い合わせください。
作りたいものは日常の悩みから探し出すのもあり
ここでは、あなたの日常の悩みから作りたいものを探し出す方法になります。
特に、以下の状況下に対して悩みを具体化すると作りたいものが見つかりやすいです。
- 勤め先の仕事の悩みを書き出す
- 日常的に不便だと感じる悩みを書き出す
- ネットによる情報収集などから一個人や社会の課題を書き出す
特にあなた自身が抱える仕事の悩みは、作りたいものに関するヒントになりやすいです。
例えば、すでにルールに沿った単純作業であれば「自動化」を考えてみたり、無駄なプロセスを感じる作業があれば「効率化」を考えるなどです。
他に、プライベートのちょっとした悩みもヒントになります。
ただし、間違ってほしくないのは「すでに存在するWebアプリ/サービスは作る価値がない」と考えてしまうことです。
新しく斬新なWebアプリ/サービスは、今日までのプログラミング技術によって作られたものです。
つまり、あなた自身はアイデアよりもプログラミング技術の向上が何よりも優先されます。
そのため、習得したプログラミング技術があった上で、初めて「作りたいもの」があるかないかを考えればよいです。
プログラミングで作りたいものを探すためのおすすめサイト
プログラミングを習得する上で既知なサイトかもしれませんが、念のためプログラミング学習に有益なおすすめサイトをご紹介します。
以下のおすすめサイトがプログラミング学習に有効です。
- Qiita
- Zenn
おすすめサイト|Qiita
おそらく日本最大級のプログラミング知識・技術を共有するブログ形式のWebサービスです。
特に、エンジニアにとって再利用・汎用性の高い情報が記事として共有されており、初学者に限らず重宝されています。
- スキルセットに応じてタグ検索やキーワード検索が可能
- アカウントにフォロー・いいね機能搭載
- スキルセットに応じてコミュニティが存在
- 定期的なエンジニアのイベント開催
- キャリア転職用Qiita Jobs
エンジニアであればそれぞれの活用法を持つほど、Qiitaは一般的かなと思います。
おすすめサイト|Zenn
こちらもQiitaと同じくエンジニア・プログラミング関連情報を共有するWebサービスになります。
Qiitaよりも後発であり、2020年9月にリリースされています。
- 記事に対する「投げ銭」が可能
- 電子書籍化が可能
Qiitaのように、検索機能やアカウント関連機能はほぼ同一で踏襲されています。
しかし、最大の違いは「収益化」が可能な点です。
そのため、記事・電子書籍の作成者もノウハウレベルが有料級でなければならないため、プログラミング技術の質や内容が高いです。
まとめ|情報収集もプログラミングにおいて重要
エンジニアの素養として、「問題解決力」は非常に重要です。
なぜなら、未知の問題に対して取り組む場面が必ず発生するためです。
また、問題解決力を高める大切な要素の一つとして、「情報収集力」が挙げられます。
ネットの普及によって膨大な情報が落ちている中、ほとんどの問題は情報収集力で解決できるケースも少なくありません。
今後も、情報収集力=ググるといった行為の質を高めていきましょう。