こんにちは、内製開発グループの山下です。
プログラミング入門
私はシニア技術者なので、ビギナー、つまりプログラム開発の経験が浅い方のサポートをする機会があります。
私が若いころは情報が少なくて苦労しましたが、今の若い方は逆な気がします。キーワード検索をすると大量のコンテンツがヒットし、親切な動画まで揃っています。限られた時間のなかで、その中から有益な情報を汲み取るのに苦労される場合も多いのではないでしょうか。
という今の状況にマッチするかはわかりませんが、最初はシンプルにコード読みから始めてみませんか?という話を書いてみます。
コード読みの勧め
日本語が理解できても、良い日本語の文章を書けるわけではありません。ある程度の日本語の文章を読み、できれば名文を多く読み、日本語の言語感覚を身に着ける必要があるのではないでしょうか。
なので良いコードを読み、コード感覚的なものを身につけよう、という趣向です。
お勧めしたい基本ループ
私のお勧めするプログラミング入門は、シンプルかつ古典的です。
- 概念を理解する
- 評判の良さそうな入門本を買う
- 入門本をざっくり眺める
- 自分のレベルに合ったサンプルコードを読む
- コードで不明な部分を入門本で確認する
- 4. ~ 5. を繰り返す
以下、もう少し説明させてください。
1. 概念を理解する
まず 1. ですが「漫画でわかるJava」みたいな超初心者向けの本を誰かから借りて読んでも良いでしょう。更にお勧めはネット動画を検索することです。Udemy など学習サイトのセールで講座を購入してもよいでしょう。
ここではプログラミング自体ではなく、その前提知識を学びます。
これから利用しようとしているプログラミング環境はどんなものか。どんな歴史があって、どんな目的で用意されたものなのか。この環境を利用する人は、どんな感じで開発しているのか。動画でいろいろ操作しているのを、ああ、そんな感じで開発しているのね、と視聴する感じ。
雰囲気だけつかめればいいので、まずカタチからはいりましょう。
2. 入門本を買う
さていよいよ入門ということで、文法などしっかり説明されたバイブル的な入門本を選んで買いましょう。評判が良くて、目次がしっかりしている感じの本。必ずしも紙の本ではなく、ネット上の定評あるコンテンツでもかまいません。JavaScript ならば以下は鉄板ですし、
TypeScript なら以下は素晴らしいコンテンツですよね。
サバイバルTypeScript
ただ個人的には、ここではあえて紙の本をお勧めしたいです。理由は後述します。
3. 入門本をざっくり眺める
私の個人的な体験ですが、入門本をしっかり読んで理解しよう!などと思うと、わりと挫折しがちです。読めば読むほど、疑問が増えていきます。自分の知識の不足にどんどん気がつく、知らない用語がどんどん増えていく。それで良いのです。ソクラテスさんが言う「無知の知」って領域ですね。
この段階は本の下見。大事なのは目次と、実際の本文の初めの概説をざっくり読んで、本の構成を掴んでおくことです。何か調べたくなったら、本のどのあたりに説明があったかな?となんとなく思い出せるくらいが理想です。
4. サンプルコードを読む
さて、ここが今日のポイントですね。
まず最近の入門本ですが、URL が記載されていて、サンプルコードがダウンロードできるものもあります。これはラッキーで、そのコードを最初に眺めれば、本の説明とうまく噛み合って理解が進むでしょう。
そうでない場合も大丈夫。いまネット上にはオープンソースの良質なコードが溢れています。学びたい言語と sample などのキーワードを付与して検索すると、様々なプロジェクトを発見できます。入門用に用意されたものも多いですし、小さなツールやライブラリから読み始めるのもよいでしょう。
特に JavaScript の場合、CodePen のようなブラウザ上でコードを参照しつつ、修正や実行もできる開発サイトもお勧めです。こういったサイトでまずサンプルコードを探すのが良いかとおもいます。
とはいえ急に探すのは難しいとおもわれますので、JavaScript 用によく紹介されるサンプルコードをご紹介します。まず以下のサイトですが、機能ごとにまとまっているので読みやすいのではないでしょうか。
また以下からお勧めのリポジトリが検索できます。
上記のように GitHub 上のリポジトリを参照する際に、個人的に素晴らしいとおもうのが以下のサービスです。すごくコードが読みやすくなります。
5. 本で確認する
さてコードを眺めていると、見慣れない表記が出てくるとおもいます。そうしたら、入門本を探して、説明を読んでみましょう。この探す行為は、紙の本のほうがスムーズにできるとおもいます。本のどのあたりか、ざっくり感覚的に覚えており、またページをパラパラとめくって探しやすい。
個人的な話で恐縮ですが、私は電子書籍が大好きで、漫画も小説も電子版を購入し、お気に入りの古い本は電子書籍で買い直したりしています。でも、入門本だけは紙で買います。
見慣れない表記は、すぐにネット検索しても良いかもしれません。しかし、いったん入門本の該当ページを開き、読み、不明な点をもう少し明確にしてから検索するのは良い方法です。より具体的なキーワード指定ができ、より短時間で必要な情報を得られ、理解できるでしょう。急がば回れ、という感じでしょうか。
6. 繰り返す
以上の流れ、いちど回り始めたらもう安心です。だんだんとより大きな、複雑なサンプルコードを読み、動作を理解できるようになるでしょう。
また様々な記述をみて、好ましい書き方や、あまり好きになれない書き方を眺めるうち、自分なりのコード感覚的なものができてくるとおもいます。
おまけ
コードを読み進めていくと、よく出てくる処理の組み方や、わかりやすい構成があるとおもいます。なので適当なタイミングで、以下のようなアルゴリズムやデザインパターンの資料を読むと、更に自分の知識が整理されて良いと思います。
また懐古話ですが
私がプログラミングに熱中したのはまだ学生時代、世の中ではパソコン通信が一般化しつつあり、インターネットはまだアカデミックな世界に閉じていた頃でした。
このころ、Linux の前身となる MINIX というオペレーティングシステムがありました。教育用に開発されたソフトウェアなため、解説本と共にソースコードが丸ごとオープンになっており、自由に閲覧できたのです。良質なサンプルコードに飢えていた私たちにとって、MINIX 解説本とコードは、それこそバイブルのように貴重なものでした。
※ 本にフロッピーディスク(今だとUSBメモリみたいなもの)が付属しており、ソースファイルが参照できました
つい先日、この MINIX のコードが GitHub にあることを知り、とても懐かしかったです。実はこのサイトにより初心を少し思い出したため、この投稿を書いていたりします。
さきほどご紹介した github1s.com ドメインの技を使うと、Web ブラウザ上で快適にコードが読めてしまいます。なんて素晴らしい!学生時代の私にこのサイトを見せたら、あまりに楽しくて、ずっと眺めていて、きっと留年していたことでしょう。。
最後に
以上、ネットに豊富にある良質なコードをどんどん読んでいこうよ、という話を投稿させていただきました。世の中には美しいコードがたくさんあって、楽しいです。それを気軽に選べて、見れて、良い時代になったなぁ、と思っています。
読んでいただきありがとうございました。マネックスの採用にご興味のある方は、ぜひ以下募集をご覧ください。