どうも、インストラクターの井上です。
最近月間50人ペースでプログラミング学習者の方とお話をしています。
そんな中よくされる質問の一つに、
「効率的にプログラミングを勉強する方法はないか?」
というものがあります。もしかしたら、あなたもこういった悩みを抱えているかもしれませんね。
こういった方々には私は決まって、「『メモ』を作りましょう!」と言います。
今回は、プログラミング学習における「メモの作り方」や、「作るメリット」についてお話していきます。
- メモすることで欲しい情報に早くアクセスできる
- メモすることで学習内容を復習できる
- メモツールを使うとメモの作成や管理がしやすい
プログラミング学習用のメモを作る前に
メモを作る前に、プログラマにとって必要不可欠なスキルを理解しておきましょう。
大きく分けると2つに分けられます。それは、
- インプットする能力
- アウトプットする能力
です。
これら2つの能力が揃ってはじめて様々なものが作れるようになります。
インプットする能力とは
ここでいう「インプットする能力」とは、ひとことで言うと、『欲しい情報に素早くアクセス出来ること』です。
具体的にいうと、
- コードの状態を分析する手法を知っていること
- 適切な情報(言葉)を選んで検索できること
- 英語のドキュメントがある程度読めること
- エンジニアの仲間がいること
こうなります。
インプットする能力がないと、エラーで躓いたり、一般的な実装方法が分からなかったりしてすぐに手が止まり長時間作業が進まないことが頻繁に起こります。
プログラマは常に情報を追いかけ続ける仕事である為、自分自身で答えを探し出せる能力は必須となります。
アウトプットする能力とは
逆に「アウトプットする能力」とは、一言でいうと、『実際に正しく動くアプリケーションを作れること』です。
つまり、欲しい機能を実際にコードを書いて実現することです。
具体的に言うと、
- 実装のパターンを知っていること
- スタンダードな実装方法を知っていること
- 読みやすくエラーの出にくいコードが書けること
- 顧客が想定している仕様通りに実装できるようコミュニケーションが取れること
などです。
実際にインプットとアウトプットを自立して出来るようになることが大切になります。
プログラミング学習でメモを作るメリットとは
たくさんのメリットがあります。大きく分けて3つのメリットです。
メリット 1
まず1つ目は、「インプットを高速化させ、アウトプットの引き出しになる」から、です。
メモを作っておくことで、欲しい情報により早くアクセスでき、アウトプットする際も役に立ちます。
メリット 2
2つ目は、「アウトプット前提のインプットは知識の濃さが段違い」です。受験勉強やテスト勉強してた時、友達に教えた内容って自分の理解もすごい深まってて、テストでもしっかり内容覚えてたり、それに近いような経験ありませんか?
まさにあれと同じことが、この「メモ」でも言えます。
インプットする時点でアウトプットすることを意識するので、実際に使える状態の知識を蓄積していくことが出来ます。これは大きなメリットですね。
メリット3
「この前、勉強した文法、忘れちゃった!」
と言って、復習を繰り返しされる方がいますが、これは効率的な学習方法とは言えません。もともと実用レベルになっていない言語知識は、何重にインプットして補完しても実用レベルに持っていくのには時間がかかります。プロのプログラマ(エンジニア)も半年前に書いたコードや、使用した設定ファイル、コマンドの内容なんて覚えていません。
メモをつくることで、知識を整理しながら体系化させることができます。復習といった2度手間を省くことができるので、学習時間の省略に繋がります。
メモの作り方
前置きが長くなりましたが、ここからはメモの作り方を紹介していきます。
ツール
まずメモ作成のツールには「Kobito」(※2017年12月27日をもってユーザーサポートが終了しています)の使用をオススメします。プログラミングのメモやスニペットの記録に最適なMacアプリとしてエンジニア界隈では有名です。ちなみに、Windowsでも使えるようになっています。素敵。
メモを取っていくアプリはEvernote等でも良いのですが、Markdownで書ける点が魅力的です。
メモの種類と実例
メモの種類は大別して4つに分けるのがオススメです。私が実際に書いた「メモ」を公開しますので、参考にしてみてください。
1. エラー&解決法
すぐに解決できないエラーは取り敢えずエラーメッセージ全てを貼り付けて保管します。
また、解決できた場合参考に見たサイトURLと、具体的に実施したポイントを箇条書きで良いので書き留めておきます。
例:〇〇のトラブルシューティング、〇〇インストール時のエラー対応
2. 自分用チートシート
新しい技術を学んだ際に(特に特殊な)文法などを簡単に参照(検索・コピペ)できるよう一覧としてまとめておきます。
自分で作ったチートシートを参照しながらコードが書ければ、わざわざ手打ちしなくて良いため以前の行動(記述)を再利用出来ます。
言語の記述方法は勿論、コマンドの組み合わせや備忘録としても有効です。
例:Ruby便利メソッド一覧、Linuxコマンド一覧、CSS記述方法一覧
3. 設定ファイルの中身
プログラミングを進める上で、様々な設定ファイルを記述することが有ります。
ツールを使って管理するほどでは無いけれど、覚えられないなと思ったものはメモしておきます。
例:.bashrcの設定例、RailsのCapistranoで設定できるオプション解説
4. 特定の機能や表現方法
手順書のように特定の機能を実装した際に
使用したコマンドや編集したソース内容をメモします。
例:会員機能実装時のセキュリティ設定例、よく使うCSS3アニメ表現パターン
5. 特定のシチュエーションで使えるノウハウ
緊急対応やイベントで使用するためのノウハウ集
例:ハッカソンで使う設定一式&コマンド集、GitHubFlowプルリクエスト手順
まとめ
いかがでしたでしょうか?メモを作成することにより、あなたのプログラミングの学習スピードは高速化されること間違いないでしょう。
Kobitoは、エンジニアの知識共有サイト「Qiita」と連動させることもできます。是非、自分なりの知識が蓄積できてきたら、他の人の助けにもなれるよう公開してみましょう!
なお、今回紹介した「メモを取る」以外にも、効率的なプログラミングの勉強法は存在します。詳しく知りたい人は、次の記事を参考にしてください。