プログラミングが大好きな人に負けないたった一つの方法
「プログラミングが趣味」の人は強すぎる
ITの世界に飛び込んで数か月、私がつくづく実感することです。一般事務から家庭教師のバイトを経てやってきた身からすると、「周囲のプログラミングに対する熱量が高すぎる…」「この業界は天才しかいないのではないか」と考えるのは無理もないことです。
実際、ITの技術は他とは比にならない速度で発展していますし、Zennなどのコミュニティには、毎日数多くの新技術の解説や自作アプリの紹介などが投稿されています。それだけできることが多い反面、この業界で生きていくうえで要求される技術や知識は山ほど存在します。採用条件として実務経験を求められることが多いのもその表れです。
私はこうした環境にいられることを嬉しく思う反面、プログラミングが人一倍好きな訳ではなかったため、プログラミングを趣味として取り組んでいる人たちに技術面で大きな遅れをとってしまうのではないかという不安に駆られていました。
本記事は、そうした感情を抱いている方々に向けて書いたものです。これを読めば、プログラミングの世界へ入り浸れるようになるかもしれません。
アプリ制作に夢中になる人たち
プログラミングが趣味な人はほぼ間違いなく、自作アプリを夢中で作っています。私の周りにいるエンジニアの多くが業務とは別に自作アプリを GitHub へ上げまくっています。彼ら曰く、「作りたいものがありすぎて時間が足りない」そうです。
それを聞いて、私も最初は理解ができませんでした。「彼らはどうして業務外に自ら仕事を増やしているのだろうか」と。彼らはどうしてアプリ制作に熱中できるのかと。
しかし、私も真似て簡単なアプリを自作した経験を経てそれに気づきました。誰からも強制されずに、思いつくまま自由にアプリを作ることは、知的好奇心を満たし、充実した達成感を得られるということに。
結論を申します。プログラミング大好き人間に負けないたった一つの方法は、何か一つアプリを制作して気持ちよくなることで、「もっと作りたい」という知的欲求を開花させることです。つまり、自分もプログラミング大好き人間になるしか無いということです。ここまで読んでもらった方、すみませんでした。
ただし、ここで話を終わらせてしまったら何の知見も得られないただのクソ記事になってしまうので、どうして趣味でアプリを作る気になれないのか。自作アプリを作る行為に対する心理的障壁に向き合ってみようと思います。
正確な調査をしたわけではないですが、自作アプリを作る気になれない理由の上位はこれではないでしょうか。「そもそも作りたいものが無いから。」
なぜ「作りたいものがない」状態に陥るのか
何を作れるのかよくわからないから
とりあえず、HTML、CSS、JavaScriptを勉強してはみたけれど、何ができるのかいまいちピンと来ないという状態です。
そのような人は、まずZennのサイト内を探索してみてください。「プログラミングでここまでできるのか。作った人すげぇな!」と感動することでしょう。ただ、現時点でそこまで難度の高い作品を制作することは厳しいと思います。その点に関しては、次章以降でお話します。
子どもの頃の自由な発想ができなくなったから
あの頃は何にもない空き地にダンボールで秘密基地を作ったり、砂場にでっかい城を作ったりと、まるで空き地を大きなキャンバスとして思い浮かんだことを形にしていたなと思います。
なぜ、大人になるとそうした発想力が衰えるのでしょうか。
・一般常識や社会通念に縛られるから
これは社会に適応するには仕方のないことではありますが、こうした思考によって自分の行動範囲を狭めていった結果、柔軟な発想ができなくなるというのは納得できます。
・失敗を恐れるようになるから
確かに、子どもの頃はよっぽど重大なことでない限り、親に説教されるだけで済んだと思います。しかし、大人になると、失敗による損失はすべて自分で負わなければいけなくなるため、失敗を恐れる感情が生じるのは無理もないことです。
では、そうした要因を取り払い、自由な発想力を手に入れれば、作りたいもののアイデアがポンポン浮かぶようになるのでしょうか。いや、そもそも要因を取り払うことに無理があります。というか、作りたいものを得るために自由な発想力って必要でしょうか。
仕事以外で何かを作る行為に意味を感じないから
確かに、「会社で毎日パソコンを叩いているのだから、休みくらいは他のことをさせてよ」と思うのは、プログラミングが好きでたまらない人以外にとっては自然な感情だと思います。ただ、日々の業務だけでこの業界で求められる膨大な技術や知識を習得することは厳しいとも感じているのではないでしょうか。
業務をそつなくこなすベテランエンジニアの方々は、業務外でも技術の習得や資格勉強に時間を割いていることが多いです。しかも、誰かにやらされているのではなく、自発的に取り組んでいる人がほとんどな印象です。もしかすると、技術の習得などは業務ではなく趣味の範疇かもしれません。
逆に、幼い頃からコンピュータに親しみ、その延長でIT業界に就職された方々にとっては、「作りたいものが無いのにどうしてこの業界に来たの?」と不思議に思われるかもしれません。ただ、「作りたいものがない エンジニア」と検索すると、相当数の記事がヒットするため、こうした状態の人は一定数いるのではないかと考えています。(私も最初はそうでした)
結論から言うと、仕事以外で何かを作る行為に意味はあります。てか、メリットしかないです。その理由を次章でお話します。
作りたいものを作るメリット
学習効率が高い
「アウトプットはインプットよりも強し」という迷言の通り、アプリ制作によって能動的に技術や知識を活用している人の方が、技術書や学習動画などを受動的に学習し続けている人よりも習得が早いです。科学的根拠の説明については他へ譲りますが、目と耳だけでなく、手を使い、頭を使い、ウンウンと悩みながら作業する方が脳への負荷が大きいので、その事実は理解できます。
また、実際の作業を伴うことで、必要な技術だけを集中して学習することができるため、無駄がありません。インプットに偏重してしまうと、今すぐ必要でない技術にまで幅広く手を出してしまい、後で振り返った時に何を学習していたのかよくわからなくなってしまう事態に陥る恐れがあります。(脳にインデックスができていない状態だと、高確率で技術の大海原で遭難します。)
努力を可視化できる
学生の時は、学習した内容に対する試験を行い、その点数によって自分がどの程度理解できているのかを可視化できていました。点数が高ければ、自分の努力を認められたようで充実感に浸れていたのではないでしょうか。つまり、「可視化」によって自分の頑張りを認識できるようにすることは学習意欲を高めるために重要であるということです。
その方法として、自作アプリを実際にデプロイし、Zennで紹介することで、利用者の評価を得ることができます。そこまでしなくても、GitHub へ毎日プッシュして草を生やすだけでも達成感を得られます。
業務の質が向上する
業務だけでなく、自由な時間にも技術に触れているので、それは当然だと思います。何なら、夢中になりすぎるあまり、次第に業務とオフの区別が薄れていき、すべてを趣味の時間と認識している強者もいるようです。(その域に達すればもう天職でしょう。)
知り合い曰く、休日は業務で扱えない技術をひたすら試すことでストレス解消しているそうです。確かに、パソコンとそれを稼働できる環境さえ整えれば、誰でも様々な技術を試せるというのはこの業界の強みだと思います。(機械系にいたので尚更そう感じます。)
3つの大きな間違い
1. アイデアが思い浮かばないから作れない
「何か作ろうとは考えているけど、アイデアが思い浮かばないからな~」といって全然手を動かさないのはもったいないことです。確かに、「他社が提供していない革新的なWebサービスを提供したい!」などといった高度な内容に取り組もうとする場合はアイデアの創出が重要となりますが、「オフの時間に何かWebアプリを一つ作ろう」といった目的の場合はそこまで気にしなくてもいいと思います。
それよりは、様々なWebサービスに触れることで、Webアプリに対する感度を高める方が重要であると私は考えます。(最近のファッショントレンドを追いかけるような感じです。)そうすることで、「Aのサービスに使われている機能をBのサービスに適用してみたら面白そう」といったような考え方ができるようになります。
つまり、0から1を生み出そうとするのではなく、既存技術を組み合わせて新たな価値を創出するという捉え方のほうが作業に取り組みやすいのではないかということです。
ただ、すぐにWebアプリに対する感度を高められるわけではないのも事実です。その問題への対処については次章でお話します。
2. まだインプットが足りないから作れない
完璧主義な人ほど、完全に理解できるまで先へ進もうとしないというのはよく聞く話です。(私の性格もそんな感じで、技術書は第1章から読まないと気が済まないタイプです。)
理解に穴ができていることを恐れ、Webアプリ開発に必要な技術を片っ端から勉強し始めてしまい、作業へなかなか移行できないといった状態に陥っていませんか。
気持ちはよくわかるのですが、いくら事前準備を万全にしても、実際の開発では必ず壁にぶつかって停滞します。そして、勉強していた内容とは異なる知識を必ず要求されます。
結局、基礎的な内容をさらったらすぐに開発へ移行し、必要な技術や知識をその都度補給していくやり方の方が効率が良いのです。(実際に手を動かして学んだ知識の方が頭に入りますし)
英語学習に例えると、分厚い文法書を片っ端から読み漁るよりも、基本的な内容を学んだら、間違えながらもガンガン英語を使い倒す人の方が習得効率が高いといったような感じです。
3. やる気が出ないから作れない
「自作アプリを作る人って、もともとそういう作業が好きなんだろうな」って感じてはいませんか。結論から言うと、もともと好きなのではなく、アプリを作る過程で得られる充実感を経験したからこそ、もっと作りたいという欲求を得られるのではないかと思います。
確かに、最初から開発意欲がとてつもなく高い人もいます。ただ、多くの人は、作る経験をする前から意欲が高かったという訳ではないように思えます。(興味はあったかもしれませんが)
つまり、「作る経験がなければ、やる気が出ないのは自然」ということです。やる気はアプリを作ってみて初めて得られるものです。とりあえず手を動かしてみましょう。
「作りたいものがない」人が何かを作るために
そもそも「作りたいもの」でないとダメ?
周囲から「自分で何かアプリを作ってみなよ!」と言われていても、作りたいものの具体的なイメージが思い浮かばなくて進めないと悩んでいませんか。
確かに、自分のなかで作りたいものが明確である場合、完成のイメージから逆算して作業に取りかかることができますが、そうでない場合は何をす「べき」か路頭に迷ってしまいそうです。
そんな時は、作りたいものを作るという発想を転換してみてはいかがでしょうか。
いきなりですが、高校古典で習った「べし」の意味を6つすべて挙げられますか。
- 推量... ~だろう
- 意志... ~よう
- 可能... ~できる
- 当然... ~なければならない
- 命令... ~せよ
- 適当... ~のがよい
「すいかとめて」という語呂で覚えた人も多いのではないでしょうか。それよりも、なぜ急に古典の話を始めたのかが謎ですよね。
私は「作りたいものがない」という問いに対し、高校時代に必死に覚えた「べし」に答えを見出しました。要は、意志(作りたいもの → 作ろう!と思えるもの)ではなく、可能(作れるもの)や当然(作らなければならないもの)の視点から捉えてみるということです。
現在の実力で作れそうなものや、今後のために作らなければならないものは何だろうと考えてみると、案外簡単に見つかるかもしれません。作りたいものは内から取り出さなければなりませんが、作れそうなものは外から見つけ出せばよいのです。
「これいいな!」と思えるものが見つかったら、どんどん真似してみましょう。
生成AIは強い味方
「自分で思いつかないなら、誰かを頼ればいいじゃない!」ということで、ChatGPTやGeminiなどといった生成AIを頼ってみるのはいかがでしょうか。
アイデア出しから必要技術の選定、実際の開発に至るまで結構サポートしてくれます。(特に、エラー対応ではめっちゃお世話になるでしょう。)
誰かとチャットするような感じで話しかけてみてください。向こうが様々な作品の案を出してくれるので、きっと創作のイメージを持てることでしょう。
結構ガチなものを提案してくるんだよな…
承認欲求を動機にしてみよう
「自発的に動くよりも、誰かに頼まれて動くことの方が多いな」と感じる人におすすめの方法です。自分の周りで何か困っていそうな人に話しかけ、その問題をプログラミングで解決できないか考えてみてはいかがでしょうか。
相手がいるので、必ず完成させなければならないという使命感で作業が捗りますし、完成した時に相手から感謝されることで自尊心を満たすことができます。さらに、周囲から頼られることで承認欲求を満足させられるかもしれません。
公式ドキュメントのチュートリアル
「ここまで読んだけど、やはり何を作ったらよいのかわからない」という人は、とりあえず自分が使いたい技術の公式ドキュメントに載っているチュートリアルをやってみましょう。
私がチュートリアルをおすすめする理由- 技術に触れることを目的に書かれているので、課題がそこまで難しくない
- 情報の信頼性が高いので、意味不明なトラブルが起きにくい
- 説明が詳しすぎないので、自分で調べて解決する行為を求められる
最後に挙げた「説明が詳しすぎない」というのは結構重要なポイントです。確かに、基礎から段階的に詳しく解説しながら進めるサービスなどを使った方が、挫折せず確実にアプリを作り上げることができます。アプリ開発が初めてという場合、全体像を把握するという意味で利用するのは価値があると思います。
ただ、そうしたサービスなどは、例えると、通行者が気持ちよく歩けるようアスファルトで綺麗に舗装された道であり、途中で躓いたり、足がはまって動けなくなるといった経験をすることはほぼないでしょう。
よって、バグやエラーを解決する(自力で動けるようにする)訓練をほとんど積むことができず、その先の自作アプリ開発の際に大きな障壁となる可能性があります。
また、エンジニアは「必要な情報を自力で取ってくる能力」を強く求められるため、その訓練を積むという意味においても、真似るなら説明が詳しすぎない題材を使うのがよいと考えます。
結論
けっきょくアプリをつくれるひとがいちばんつよくてすごいんだよね
Discussion