🛣️

私が思うプログラミングを学ぶ上のポイント7選

2022/12/25に公開

この記事は 東京電機大学 Advent Calendar 2022 25日目の記事です。

はじめに

はじめまして、かずえもんと申します。
現在大学2年生で、プログラミングを触り始めてから約9年になります。

今年の3月にTwitterで「私なりのプログラミング攻略法みたいな記事見たい人いる?」っていうアンケートを取りました。
https://twitter.com/kazuemon_0602/status/1508112671190642689

ありがたいことに、約70人の方が知りたいみたいなので、今回は「これからプログラミングを学び始めるぞ!」「プログラミングになかなか馴染めない」という方に向けて、私かずえもんが思うプログラミングを学ぶ上のポイント7選をご紹介したいと思います。

  1. 目標(作りたいもの)を決めよう
  2. 目標ベースでサクッと勉強しよう
  3. 開発環境をちゃんと整えよう
  4. 検索するスキルを身に付けよう
  5. 人に聞くべき時はいつ?
  6. ドキュメントを読もう
  7. どんどんコードリーディングしてみよう

一般論な感じの内容になってしまうかと思いますが、参考になる点があれば幸いです。

1. 目標(作りたいもの)を決めよう

まずは学び始める前に目標を決めましょう。既に学び始めていて、無い人は今からでも決めましょう。

ただ、ここで言う目標は「エンジニアになりたい!」のような将来の話ではなく、「自分のブログを作りたい」「ユーザー投稿型のゲームの攻略サイトを作りたい」「シューティングゲームを作りたい」「ロボットを作りたい」のような具体的な成果物、作りたいものを目標とするのがおすすめです。
成果物があることで、達成感が大きく、モチベーションキープのやりやすさが段違いです。

2. 目標ベースでサクッと勉強しよう

大学の授業とか駆け出しエンジニア界隈でよくある、そのプログラミング言語を1から10まできっちりと順番に学ぶ方法(私は「もくじベース」と呼んでます)の方法は個人的にはお勧めしていません
最初に立てた目標に着手するまでが長すぎて、せっかく決めた目標を達成する前に飽きてしまいます。

そこで、私がおすすめする「目標ベース」の方法はこんな感じです。

  1. 教科書を流し読みする。一言一句は読まなくてOK。こういうものがあるんだな、ということだけ理解しておく。
  2. 作りたいものを作るための手順を洗い出す
    • 例えば、TODOリストを作るなら...
      • "リスト" が必要
      • TODO の追加 = "リスト" への追加
      • TODO には名前と期限とチェックを設定したい
  3. 教科書を見るかググって、何を使えばできるのか作れるのか知る
    • 例えば、さっきのTODOリストなら...
      • "リスト" が必要 → 「(言語名) リスト」で検索 → 配列ってのがあるな、教科書でもさっき見たな
      • TODO の追加 = "リスト" への追加 → 索引から配列のページを見る → 配列に追加する push という関数があるらしい
      • TODO には名前と期限とチェックを設定したい → オブジェクトに入れればいいかな
  4. さっき洗い出した順序に従ってコードを書いてみる。慣れないうちはサンプルコードとかの写経プログラミングでもOK。
  5. コードリーディング(後述)して、自分の書いたコードを理解する。

3. 開発環境をちゃんと整えよう

もしかして、メモ帳でプログラミングとかしてませんよね?
開発環境をちゃんと整えることで、多くの言語では「自動補完」「シンタックスハイライト」が利用できるようになります。

自動補完は以下のような表示が出て入力の候補(変数、オブジェクトのキー、関数など)を選ぶことができる機能で、typo(打ち間違い)などの単純なミスによるエラーを防ぐことができます。利用できるか、どのくらい活用できるかは言語によりますので、その点はご注意を。

また、「シンタックスハイライト」はコードに色付けをしてコードを読みやすくしてくれる機能です。
例えば、以下のコードは最近私が書いた「変数 contest のフィールド targetHashtag に入っているカンマ区切りのハッシュタグを # 付きに統一して、配列として返す」JavaScriptのコードです。

// "#tag1,tag2,tag3" => ["#tag1", "#tag2", "#tag3"]
const tags = contest.targetHashtag.split(',').map((t) => (t.startsWith('#') ? t : `#${t}`));

上のコードには、色がついています。これが「シンタックスハイライト」です。
色がついていないものと比較してみましょう。

// "#tag1,tag2,tag3" => ["#tag1", "#tag2", "#tag3"]
const tags = contest.targetHashtag.split(',').map((t) => (t.startsWith('#') ? t : `#${t}`));

さっきと比べると、コードが見づらく感じますね...シンタックスハイライトの偉大さを感じます。

「自動補完」や「シンタックスハイライト」は基本的にはメモ帳などのテキストエディタでは利用できず、Visual Studio Code や IntelliJ IDEA などのコードエディタに乗り換えて、エディタ・言語によっては必要な追加のプラグインやプログラムのセットアップを経て利用できるようになります。
開発環境をしっかり整えて精神衛生の良いプログラミングをしましょう。

4. 検索するスキルを身に付けよう

Google 先生を使って、先人たちの知恵を最大限活用しましょう
インターネット上には、プログラミングに関する様々な知識が転がっています。
この記事を掲載しているサイト「Zenn」にも、入門向けの記事やハマったポイントの解決法、ベストプラクティス(こうすると良いよ、という内容)などがたくさん掲載されています。

「知らないエラーが出てきた!」「うまく動かない!」というときは、ありがたく知恵を活用するチャンスです。
分からないこと、分からない表示を検索欄に入力し、あとは検索結果をいくつか見る
なかなか解決策が出てこないときは「単語に分けて検索」「翻訳ツールにかけて英語で単語検索」などするのがおすすめ。

いくつか見る、というのは情報が古かったり、間違った情報だったり、全く関係ない情報だったりすることがあるからです。
それらを適切に取捨選択することも検索する上でのスキルの一つです

5. 人に聞くべき時はいつ?

プログラミングを初めてすぐは、分からないことだらけだと思います。私もそうだったので、最初は人に質問しまくってたと思います。
ただ、プログラミングにある程度慣れている人間の多くは、初心者からの質問に対して「なんでそんなことで聞くんだよ...」と思うことが多いです。

https://qiita.com/DeployCat/items/f9de1c08c47c50620905

「薄情だな...」と思う方もいるかと思いますが、これは初心者の質問のほとんどがちゃんとコードを読み直せば解決できるもの(自己解決しやすいもの)だからです。

  • 書き方がちゃんとわかってない
  • カンマやセミコロンなどが抜けている
  • 単なるtypo(打ち間違い)

とはいえ、最初は自己解決は難しいでしょうし(初心者なんだからそりゃそう)、人に何も聞けずに諦めてしまうのはもったいないと思います。
ですので、以下に書く「人に聞く前にやっておくべきこと」をまずやって、それでも解決できなければ人に聞くことをお勧めしています。

  • 分からないことやエラーの内容でググる。
    • 同様の問題に直面した人の解決方法などの記事にたどり着けるかもしれません。
  • コードリーディングしてtypoや型の間違い、関数の引数ミスなどが無いかを確認する。
    • これで自分の書いたコードのミスを発見することもあります。
  • デバッグ機能を使う。
    • 関係している変数が何十個もあるとコードリーディングの限界に達することもあります。デバッグ機能ではこの行の時点で変数の中身がどうなっているかを確認できるので、どこでおかしくなっているかを特定しやすくなります。

この辺りはプログラミングに慣れているかどうかにかかわらず、どのエンジニアでもやっていることだと思います。これらを試しても解決できなさそうであれば「この部分でこのエラーが出て、ググったり、デバッグしても分からなかったので見てほしいです!」って感じで、人に聞いてみましょう。

6. ドキュメントを読もう

私は大学に入るまで、書店に置いてあったり大学の授業で使っているようなプログラミングの教本は1冊も買ったことがありません。

その代わりに、私がプログラミングの学習(というか作りたいもの作ってるだけなので学習って言っていいか分かりませんが)で使っていたものは

  • 公式のチュートリアル
  • 公式のドキュメント (非公式の日本語翻訳を含む)
  • 個人ブログ

などなど。

「ドキュメント」というのは、その言語やライブラリ、フレームワークを開発しているところが書いている、言わば「公式の使い方ガイド」です。
一般的な教本はバージョンが上がるにつれてどんどん記述が古くなってしまいますが、ドキュメントは常にアップデートされているものが多いので、ドキュメントを積極的に活用するのがおすすめです。

ちなみに、プログラミングスクールの記事は質が悪く、エンジニアにとって不評で「検索汚染」とよく言われています。

7. どんどんコードリーディングしてみよう

コードリーディングとは 人間語で書いたプログラムの元ネタ(ソースコード)を、ふむふむと読むこと です。
引用: 「コードリーディングとは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典」 (https://wa3.i-3-i.info/word13757.html / 2022-12-25 閲覧)

ちゃんとコードリーディングができるようになると、いいことがいっぱいあります。

  • サンプルコードを実行しないでも理解できるようになる
  • 他人のプログラムをパッと見でヘルプできるようになる
  • より効率的な処理に書き換えられるようになる
  • バグの原因を即座に特定できる

じゃあコードリーディングができるようになるには、どうしたらよいのかですが...いっぱいコードを読んで慣れる、しかないと思います。
まずは日本語の解説が付いている教科書のサンプルコードなどを練習として使い、少しずつ日本語を読まなくてもコードから処理の内容を言語化できるようにしていきましょう。

さいごに

アドベントカレンダーの最終日にもかかわらず大遅刻で申し訳ないです...
この記事が少しでもみなさまの参考になれば幸いです。

それではみなさま 𝑯𝒂𝒑𝒑𝒚 𝑪𝒉𝒓𝒊𝒔𝒕𝒎𝒂𝒔...
https://twitter.com/kazuemon_0602/status/1606585715172999169

Discussion