勝手に命名、「プログラミング言語学」のすすめ
プログラミングを始める時。新たなプログラミング言語に出会った時。
我々は未知の言語で書かれたコードを読み解く必要があります。
生成AIが気軽に使えるようになった今、動くコードを手に入れるのはある程度容易になりましたが、
それを読み取る力が非常に重要であるのは変わりありません。
ならばどのように読み解くのか。
今回「プログラミング言語学」と銘打って、コードリーディングの基礎となる知識をお伝えします。
はじめに
この記事は アイソルート Advent Calendar 10日目の記事です。
こんにちは!クラウドソリューション第2グループ入社1年目のyamabesです。
本記事では自分が新しいプログラミング言語を学ぶときに何を意識して読んでいるかを、できる限りかみ砕いて説明したものです。
基本的にはかなり初心者向けの内容になっていますが、新しい言語に挑む経験者も含めてぜひ見てほしい内容になっています。
読者様のプログラミング学習にぜひお役立てください。
この記事の目的
- 初めてプログラミングをする人が共通する要素や用語を理解する。
- AIが書いてきたコードをうまく理解できない人が理解するための手掛かりを得る。
- プログラミングを少しかじった人が後から戻ってきて要素や用語を再確認する。
プログラミング言語の共通点を知る
現在多種多様なプログラミング言語が存在していますが、それらはある程度の共通点を持っています。
まずはたいていのプログラミング言語に共通する要素を理解することで未知の言語を読み解くカギを手に入れましょう。
1.基本は上から順番に処理される
一番最初は基本中の基本から。基本的にどの言語でも、ソースコードの上から順番に処理されます。
人によっては「何を当たり前のことを…」と思うかもしれませんが、実は意外と忘れがちな点です。
たとえるならば、四則演算のルールとして左から順に計算することを忘れるのと同じような感覚です。
(忘れるかよそんなこと!って人はここは読み飛ばしてください。)
全く知らないプログラミング言語に触れた時は、ぱっと見で書き方がだいぶ異なっていると、
実際に動かしてみても処理順がわからなくなり混乱することがあると思います。
また、慣れてきたとしても後述する関数や条件分岐、繰り返しなどの処理が多用されているプログラムをずっと読んでいると、
処理の順番がわからなくなる時もあると思います。
そういった時はいったん冷静になってこのことを思い出しましょう。
2.変数
変数とは、データを一時的に保存するための名前付きの箱です。
初めて「変数」と聞くと、数を入れるのかな?と思うかもしれませんが、数値に限らずいろんなデータを入れることができます。
(コンピュータにとってはどんなデータも数字と同じですからね…)
例えば…
age = 25
name = "Taro"
とするとageには25という数値が、nameにはTaroという文字列が入ります。
そして変数にはあとから別のデータを上書きして入れることもできます。
言語によっては変数に名前を付けるときに変数の種類を宣言する必要があります。
C言語を例に出すと…
int age = 25;
char name[] = "Taro";
のようにC言語ではageは数で、nameは文字列だということを伝えてあげる必要があります。
これを型宣言と言います。あなたが今使おうとしている言語で型宣言が必要かどうか、可能かどうかは知っておきましょう。
3.関数
関数とは、特定の処理をひとまとまりにして定義し、何度でも呼び出せる仕組みです。
「関数」と聞くと、数学で出てきた「二次関数」のようなものをイメージすると思います。
実は、プログラミングの関数がやることは数学の関数と半分くらい同じです。
数学の関数はxに値を代入すると、それに対応したyがわかります。

プログラミングの関数は引数を入力すると、それをもとに処理を実行し、戻り値を出力します。

図で見ると、何かを入れると別の何かが出てくるという点がほとんど一緒ですね。
少し違う点はあくまでプログラミングの関数は「処理のかたまり」であるという点です。
何かしらの入力を必要としない処理であれば引数を必要としません。
また、関数は何回も行う操作をひとまとまりにして名前を付けたいときなどにもよく使われます。
例えばこんなTypeScriptのコードがあります…
function greet(name: string): void {
console.log(`Hello, ${name}!`);
}
greet("Taro");
greet("Hanako");
greet("Ken");
このコードを実行すると以下のような出力を得られます。
Hello, Taro!
Hello, Hanako!
Hello, Ken!
このコードでは「引数として渡されるnameさんに挨拶をすること」に「greet」という名前を付けて何回も使っているということになりますね。
こうしておくことによって、例えば後から挨拶したついでに調子はどう?と聞く部分を追加したい時を考えると…
「挨拶をする処理」を見つけやすくなり、さらに調子はどう?と聞く部分はこんな風に1回書けばよいことになります。
function greet(name: string): void {
console.log(`Hello, ${name}!`);
console.log("How are you?"); //この行を追加するだけ!
}
便利ですね!
4.条件分岐と繰り返し
条件分岐と繰り返しは、プログラムの処理の流れを制御するための構文です。
具体的には「if」「while」「for」などを使った構文を言います。
たいていのプログラミング言語においてこれらは同じ意味でつかわれています。
最もよく使われる「if」文は多くの言語では次のような形で記入します。
if (条件式) {
条件式が真(true)のときの処理
} else {
条件式が偽(false)のときの処理
}
このように条件式の真偽によって別の処理を行うのがif文です。
if文を使うと、例えばこんな処理ができるようになります。
if (score >= 80) {
console.log("Good job!");
} else {
console.log("Keep trying!");
}
この例はTypeScriptで書かれており、
scoreが80以上かそれ以外かで分岐して、出力される言葉が変わるという処理になっています。
この条件分岐や繰り返しといった構文には言語によって細かい仕様の違いや、
利用できる構文の違いなどもあるので、必要に応じて各言語の仕様はチェックしましょう。
実際に読むときのコツ
では、実際に初めて読む言語に出会った時にはどうすればよいでしょうか?
上でお伝えした共通点である程度は読むことができるかと思われますが、どうしても細かい部分に関しては読めないはずです。
しかし、今回の内容を参考にすれば「わからない場所がわかる」のではないでしょうか?
もし、「わからない場所がわかった」のであれば、公式のマニュアルを頼ってみましょう!
例えば、JavaScriptの公式マニュアルは以下のURLからアクセスできます。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference
ここにはJavaScriptについての仕様などが細かい点も含めてしっかり書いてあります。
各言語にこういったマニュアルが用意されているので、そこを読めばしっかりした理解につながるはずです。
また、マニュアル自体が理解できなかったり、やっぱりそもそも「どこがわからないかがわからない」という事もあるかもしれません。
そういった場合は、生成AIを頼ってコードの解説をしてもらうのも手です!(もちろんセキュリティには気を付けてくださいね)
コードを渡して、困っている事を伝えてあげれば、きっとAIさんが喜んでコードについて解説してくれます。
解説してもらいながら一行ずつ自分で読み直していけばきっとあなたの理解が深まっていくことと思います。
まとめ
- 様々なプログラミング言語に共通する部分は以下の4つ!
- 基本は上から順に処理される
- 変数という箱にいろいろ入れられる
- 関数で複数の処理をまとめられる
- 条件分岐や繰り返しで処理の流れを変えられる
- もし困ったらこれらを頼ろう!
- 各言語の公式マニュアル
- 生成AI
今回の記事が読者の皆さんの学びに繋がれば嬉しいです。









