未来電子のプログラミングコースに所属している梅田です。
今回、「プログラミングに関する技術」と「プログラミング独学って可能なのか」という全く異なるテーマについてご紹介したいと思います。
技術に関する話題には、今僕が最も時間を割いている「アルゴリズム」を取り上げます。「そんなの興味ねぇ」って方は読み飛ばして頂いて構いません。多くの読者にとっては後者の話題の方が重要でしょう(笑)
プログラミングの基礎「アルゴリズム」について
現在、僕はインターンでアルゴリズムを中心に学んでいます。
と言っても「いや、アルゴリズムってなんなんやねん!」って思う方も多いと思います。まずはアルゴリズムについて説明したいと思います。
- アルゴリズムとは
簡単に言うと、「物事の考え方」です。
抽象的過ぎますね(笑)もっと分かりやすく説明します。
例えば、カレーを作るとき皆さんは絶対、「どんな食材を使って」「どういう手順で作ろうか」と考えるはずです。ルーとじゃがいも、ニンジン、牛肉、玉ねぎを用意して、まずは野菜から炒めて・・・といった具合に考えるでしょう。
他にも、家から学校に行く方法も、「最寄り駅の何時の電車に乗って」「どこの駅で乗り換えて」・・・と考えると思います。
目的を達成するまでの過程には、必ず思考があり、その「思考」がアルゴリズムなのです。
プログラミングのカギはアルゴリズムにあり
プログラミングとはコードを書いて目標物を作ることであり、先ほど挙げた料理や通学の例と、話の次元は同じです。
プログラミングにおいてもアルゴリズムは大変重要になります。
その理由は二つあります。
一つはアルゴリズムが処理速度に直接影響することです。
例えば、プログラミングで電卓を作ろうという目標を掲げ、無事正確な値を返すものが完成したとします。しかし、複雑な計算の処理になると、答えを出してくれるのに10秒かかってしまいます。そんなイライラする電卓をユーザーが使用してくれるでしょうか。
複雑なコードや遠回りしたコードを書くと、パソコンへの負荷を大きくし、上手く挙動しなかったり処理速度が落ちたりします。通学で最適なルートを探すように、プログラミングも目標物までいかに簡潔なコードが書けるか、つまりいかに柔軟な「思考」ができるかが大切なのです。
もう一つは良いアルゴリズムで書かれたコードは、他者から見ても分かりやすいということです。
大規模な開発になると複数人で取り組むことになり、実装する機能ごとによって担当が割り振られます。そうなると他者がコードを見るようになります。
分かりにくいコードだと、他者との連携がとりにくく、チームに影響します。簡潔なアルゴリズムは他者も手が加えやすく、また何を作るのか根本から理解している証明にもなります。
良いアルゴリズムを手に入れるためには
なかなか難しい話ですが、僕が良いと思う方法や実際に行っている習慣をご紹介します。
①必要な機能を整理する
目標物を作るためにまず、どんな機能が必要か整理しましょう。
紙に書いてピックアップしていく方法がおススメです。
これをすることで頭の中が整理され、綺麗なコードが書きやすくなります。
また、むやみにコードを書くことがなくなるので、コードを書くスピードも上がります。
②大まかなフレームから作っていく
例えば、登録フォームを作る際、基本的な流れは「入力→送信→記録」になります。
まずはこの基本的な流れを実現するコードを書いていきましょう。
入力フォームと送信ボタンを作り、送信された値が受け取れるか試験し、それからページの見やすさ・エラーの出力などの付加価値を付けていきましょう。
いきなり、細かい作業から入ると、コードの羅列の原因になりますし、目標物を見失う原因にもなります。作文と同じように、まずは段落を設定し、大まかな流れを作ったあと、各段落の詳細を書いていくと思います。コードもこれと同じなのです。
③簡潔にできる部分はないかチェック
上手く挙動するコードを書き終えたら、簡潔にできる部分はないかチェックしましょう。
Pythonで言うと、二つある「for文」を一つにできないか、またはもっと簡潔にできないかなど、「if文」ではもっと分かりやすく記述できないかなど。見直しすると意外と出てきます。
気づいたら修正し、そのときどう修正したのかを記録する。
次回からは一発でそれを書けるようにしていけば、だんだんと良いアルゴリズムを書けるようになります。
プログラミングは独学で学べるの?
さて急ハンドルで話題を変え、プログラミングは独学で学べるのかというお話に移っていきたいと思います。皆さんこっちの話の方が気になりますよね(笑)
あくまで僕個人の考えなので参考までに。
結論から言うと、
「いける」
と思います。
ただ、
「非常に難しい」
と僕は思います。
気持ちを下げさせるつもりはないんです(笑)
ただ、独学で習得した人って大のパソコン好きとか、めちゃくちゃはまった人が多いんです。
僕みたいな多くの方は、ちょっと興味あるとか、触ってみて面白かったぐらいで始めると思います。そういう人が独学で始めても、数ヶ月でモチベ―チョンが落ちちゃっていつの間にか止めるという事態になります。
過去の僕がそうであったように。
じゃあ、諦めろっていう話なのか!ってヤジが飛んできそうですが、決してそんなことはありません。過去独学に挫折した経験とインターンでプログラミングを学んでいる経験から以下の点に気を付ければ、比較的続けやすいと思います。
①目標を定める
プログラミンで何をしたいのか、何を作りたいのかしっかりと定めましょう。
単に本やサイトでコードの書き方を学ぶのではなく、例えば「アンドロイドでこういうアプリを作ってみたい」など具体的な目標を設定しましょう。
目標を掲げることで、モチベーション維持にも繋がりますし、その達成する過程の中で、効率よく技術も身に付けられます。インプットとアウトプットを回転しながら進められるので、習熟度も上がります。
②仲間と勉強する
一人でやるより、仲間と相談しながら進めた方がモチベーション維持に繋がります。
また、お互いに進捗や、分からないところを相談して進めると、効率アップにもなります。一人ではマンネリ化したり、心が折れそうになったりするときでも仲間が良い刺激となるでしょう。
③イベントなどに参加する
ハッカソンなどの外部イベントなどに参加すれば、自分の現状や能力を可視化できるので、良い機会になります。また、そこで出会ったライバルから良い刺激をもらえるので、日々の学習では得られないものを習得する機会、気分転換や「大会で優勝する」などの目標設定にもなります。
未来電子では全てが揃っている!
でもこの3つ全部やるってなかなかハード。
ましてやプログラミング初心者がいきなり行動しまくるってハードルが高い。
そこでおススメなのが、インターンだと思います。
インターンの良さは上記3つが揃っているところにあります。
与えられた課題が目標になりますし、同じインターン生やメンターの方が良い協力者になります。また、社内のイベントや社外のイベントなどで自分のスキルも磨くことができます。さらに、就活でもインターンでの経験が話せることはとても大きいです。
「独学でしんどいなー」って感じたときは是非インターンも検討してみることをおすすめします。インターンはどこでもいいと思います。まずは飛び込んでみるのが大事。
僕が現在参加している未来電子のプログラミングコースも充実した環境が揃っています。
未来電子には充実したカリキュラムと優秀なインターン生とともに自分のプログラミングスキルを伸ばすことができます。
その中でも僕が一番魅力的だと思っていることがあります。
未来電子はインターン開始後、多くの方がマーケティングに関わり、その際活用する自社サイトがあります。プログラミングコースのカリキュラムが終われば、その自社サイトの運営にも携われることができます。
まずはどんなものなのか「現場」を知る機会があり、
その後「開発」側にも立つことができる。
まずは、この「現場」で働くということがとても大切な過程だと僕は思います。「現場」を知ることで、サイトの使い勝手を知り、後々の開発で生かすことができる。とても良い循環になります。
他のインターンでもプログラミングを学べるチャンスはあるかもしれませんが、「現場」から得たフィードバックを生かして「もっとここを効率よくしたい」「ここをもっと見やすくできたら」と改善策が練られる場所は少ないのではないでしょうか。
ユーザー側に立って、開発する。
これはプログラマーにとって一番大切なことではないでしょうか。
未来電子のプログラミングコースにはそれを学ぶ環境があります。
このあとオススメの記事