プログラミング言語
下の動画はこの節の解説ではありません。 解説動画の雰囲気を知っていただくための見本として、「AI・機械学習」の動画を再生します。
この節の解説動画はプレミアム限定です。プレミアムなら全科目・全節が見放題!
プレミアムで見るスクリプト言語は、アプリケーション開発の補助に用いられる、比較的簡素な文法体系をもつプログラミング言語です。サーバ上で実行する簡易なプログラムや、ブラウザ上で実行する処理などを記述するのに用いられます。この節では6つのスクリプト言語を扱いますが、「どこで動くか」「何に向いているか」の2点を押さえれば整理できます。とくにJavaScriptがクライアント側、PHPがサーバ側という対比と、Pythonが機械学習で使われる理由は、令和3年度・4年度と繰り返し問われています。
簡単にいうと
スクリプト言語は「補助に使う、書きやすい言語」!なかでもJavaScriptとPHPは、動く場所が正反対。ブラウザ側で動くのがJavaScript、サーバ側で動くのがPHPだよ。
① スクリプト言語とは
スクリプト言語は、アプリケーション開発の補助に用いられる比較的簡素な文法体系をもつプログラミング言語です。
サーバ上で実行する簡易なプログラムやブラウザ上で実行する処理などを記述するのに用いられます。
② 前節までの言語との違い
| 一般のプログラミング言語 | スクリプト言語 | |
|---|---|---|
| 文法 | 厳密 | 比較的簡素 |
| 用途 | システム全体を構築 | アプリケーション開発の補助 |
| 実行 | 翻訳してから実行(コンパイラ型が多い) | 解釈しながら実行(インタプリタ型が多い) |
具体例
JavaScriptとPHPが、それぞれ何をしているか
通販サイトで商品を購入する場面を追ってみます。
| 場面 | 動く言語 | 動く場所 |
|---|---|---|
| 入力欄に何も入れずに送信しようとすると警告が出る | JavaScript | ブラウザ |
| 数量を変えると合計金額が即座に変わる | JavaScript | ブラウザ |
| 「購入」を押すとサーバに送られる | — | — |
| 在庫を確認し、データベースを更新する |

スクリプト言語
試験のポイント
簡単にいうと
この3つは、いま実務でよく使われている言語たち!Rubyは日本生まれ、Pythonは機械学習、Rはデータ分析。用途とセットで覚えれば、取り違えないよ。
① Ruby
オブジェクト指向プログラミングを実現するための種々の機能を有する言語です。
テキスト処理関係の能力などに優れ、Perlと同等の機能を有します。
「まつもとゆきひろ」氏が開発しているフリーソフトウェアです。
② Rubyの押さえどころ
| 項目 | 内容 |
|---|---|
| 特徴 |
簡単にいうと
Pythonは、括弧を使わずに「字下げ」でまとまりを表す珍しい言語!だから見た目がすっきりするけど、字下げを間違えると意味が変わっちゃうんだ。
① 一般的なプログラミング言語の記述
例:Java
```
if (条件式) {
処理1
処理2
} else {
処理3
}
```
Javaなどのプログラミング言語では、上のようにコードブロックを「{」と「}」で囲みます。条件式は、「(」と「)」で囲みます。
② Pythonの記述
動画・テキスト・過去問・AI添削まですべて網羅!
予備校代の1/10以下で、独学の不安をまるごと解決できます
③ JavaScript
Webページ内でHTMLとともに記述され、クライアント側で動的なWebページが作成できるスクリプト言語です。
〈script〉というタグを使用して記述します。
Java言語の文法を参考にしているが、互換性はまったくありません。
また、Webブラウザ用のJavaScriptコードをより容易に記述できるようにするために設計されたファイル群(通称:ライブラリ)としてjQueryがあります。
④ JavaとJavaScriptは別物
ここが最重要の注意点です。
| Java | JavaScript | |
|---|---|---|
| 分類 | プログラミング言語(第1節) | スクリプト言語(本節) |
| 動く場所 | サーバなど | クライアント(ブラウザ) |
| 互換性 | — | まったくない |
名前が似ているだけで、まったく別の言語です。「Java言語の文法を参考にしている」とはいえ、互換性はありません。
⑤ JavaScriptの実行方法
| 順番 | 動き |
|---|---|
| ① | WebサーバからHTMLファイルとJavaScriptが共にダウンロードされる |
| ② | HTMLファイル内からJavaScriptを実行させる |
| ③ | スクリプトファイルをWebブラウザが装備しているインタプリタに渡す |
ブラウザの中で実行される——これがクライアント側で動くということの意味です。
第5章で学んだAjaxも、このJavaScriptを使った技術でした。
⑥ Perl
テキストの検索や抽出、レポート作成に向いた言語です。CGIの開発やUNIX用のテキスト処理などに用いられます。
| 特徴 |
|---|
| テキストの処理能力に優れている |
| 無償であり、テキストエディタで作成可能 |
| インタプリタ型であるため実行が容易 |
⑦ PHP
Webページ内でHTMLとともに記述し、サーバ側で動作するサーバサイドスクリプト言語です。
Webアプリケーション開発に特化しており、データベースとの連携も容易です。
⑧ JavaScriptとPHPの対比
この2つは、どちらもHTMLとともに記述するという点が共通していますが、動く場所が正反対です。
| JavaScript | PHP | |
|---|---|---|
| 動く場所 | クライアント側(ブラウザ) | サーバ側 |
| HTMLとともに記述 | ○ | ○ |
| 特化している用途 | 動的なWebページ | Webアプリケーション開発 |
| データベースとの連携 | (直接はしない) | 容易 |
「クライアントサイド」か「サーバサイド」か——これが判別の決め手です。
PHPの定義に「サーバサイドスクリプト言語」という語が明示されている点に注目してください。
⑨ 第2章のLAMPとのつながり
第2章で学んだLAMPの「P」が、このPHPです。
| 頭文字 | ソフトウェア | 役割 |
|---|---|---|
| L | Linux | OS |
| A | Apache | Webサーバ |
| M | MySQL | DBMS |
| P | PHP/Perl/Python | スクリプト言語 |
PHPが「データベースとの連携も容易」とされるのは、まさにこのMySQLとの組み合わせで使われるためです。
⑩ 第7章の3層アーキテクチャに当てはめる
| 層 | 担当 | 使われる言語 |
|---|---|---|
| プレゼンテーション層 | ブラウザ | HTML、CSS、JavaScript |
| ファンクション層 | Webサーバ/APサーバ | PHP、Java など |
| データベース層 | DBサーバ | SQL |
JavaScriptがプレゼンテーション層、PHPがファンクション層——第7章で学んだ層の構造に、そのまま対応しています。
⑪ ライブラリという言葉
JavaScriptの説明に出てくるライブラリとは、よく使う処理をまとめた部品の集まりです。
| もしライブラリがなければ | ライブラリがあれば |
|---|---|
| 同じ処理を毎回書く | 呼び出すだけ |
| 品質にばらつきが出る | 検証済みのものを使える |
jQueryは、JavaScriptのコードをより容易に記述できるようにするために設計されたファイル群です。
第5節で学ぶライブラリファイルとも関連する概念です。
| サーバ |
| 注文内容をデータベースに登録する | PHP | サーバ |
| 完了画面のHTMLを組み立てて返す | PHP | サーバ |
なぜ役割を分けるのか
| 処理 | どこで行うべきか | 理由 |
|---|---|---|
| 入力の形式チェック | ブラウザ(JavaScript) | すぐ反応が返る。サーバの負担が減る |
| 在庫の確認 | サーバ(PHP) | 正確な値はサーバにしかない |
| 金額の最終確定 | サーバ(PHP) | ブラウザ側は書き換えられる危険がある |
3つ目が重要な注意点
JavaScriptはブラウザの中で動くため、利用者が書き換えることができます。
| 起きうること | 対策 |
|---|---|
| JavaScriptの検査をすり抜けて送信される | サーバ側でも必ず検査する |
| 金額をブラウザ上で書き換えられる | 金額はサーバで計算する |
「クライアント側の検査は、親切のためのもの。守りのための検査はサーバ側で行う」——これは第6章で学んだセキュリティの考え方につながります。
第6章のWAFが「SQLインジェクションなどWebアプリケーションへの攻撃を検知し防御する」ものだったのも、サーバ側に届いた値を疑うという前提に立っているからです。
Perlが使われてきた場面
| 用途 | なぜPerlか |
|---|---|
| ログファイルの解析 | テキストの処理能力に優れている |
| データの形式変換 | 同上 |
| CGIの開発 | 初期のWebで広く使われた |
CGIとは、Webサーバ上でプログラムを実行してその結果を返す仕組みです。PHPが登場する前は、CGIとPerlの組み合わせが主流でした。
テキスト処理に強いという特徴
第2章で学んだテキストファイル(CSV、ログなど)を扱う場面で、Perlは力を発揮します。
| 作業 | 内容 |
|---|---|
| ログから特定の行を抜き出す | 検索 |
| 必要な項目だけ取り出す | 抽出 |
| 集計して表にする | レポート作成 |
定義文にある「テキストの検索や抽出、レポート作成に向いた言語」は、この3つの作業を指しています。
中小企業での活用
| 場面 | 使える言語 |
|---|---|
| Webサイトに動きをつけたい | JavaScript |
| 簡易な業務システムをWebで作りたい | PHP |
| ログや大量のテキストを処理したい | Perl、Python |
専門の開発者を雇わなくても、これらの言語なら比較的取り組みやすい——これがスクリプト言語の「アプリケーション開発の補助に用いられる」という位置づけの意味です。
ただし、業務で使うシステムは、作った人が辞めると誰も直せなくなるという問題が起こりがちです。第11章で学ぶIT組織・人材育成の観点から、属人化への備えを助言することも必要になります。
確認してみましょう
> 次の記述の正誤を判定せよ。
> a JavaScriptは、Java言語の文法を参考にしているが、互換性はまったくない。
> b PHPは、クライアント側で動作するスクリプト言語である。
> c Perlは、テキストの処理能力に優れ、インタプリタ型であるため実行が容易である。
解答 a:○ b:× c:○
| 得意分野 | テキスト処理(Perlと同等) |
| 開発者 | まつもとゆきひろ氏 |
| ライセンス | フリーソフトウェア |
日本人が開発した言語として知られており、試験でも開発者名が問われることがあります。第2章で学んだフリーソフトウェア(金銭的な諸権利を放棄したソフトウェア)という分類も、あわせて確認しておきましょう。
③ Python
オブジェクト指向言語であり、関数型プログラミング(関数の組み合わせで記述するプログラミング言語)でもあります。
クラスや関数、条件文などのコードブロックの範囲はインデントの深さによって指定します。
汎用性が高く、数値計算ライブラリが充実しているため、近年では機械学習やディープラーニング(深層学習)でも利用されています。
④ Pythonの4つの特徴
| 特徴 | 内容 |
|---|---|
| オブジェクト指向言語である | クラスを使える |
| 関数型プログラミングでもある | 関数の組み合わせで記述できる |
| コードブロックをインデントで指定 | 次のテーマで詳しく |
| 機械学習やディープラーニングで利用 | 数値計算ライブラリが充実 |
⑤ 「関数型プログラミングでもある」という点
令和3年度の本試験では、次の誤りが出されました。
> Pythonは、オブジェクト指向のプログラミング言語であり、関数型プログラミングをサポートしていない。
解答:×(関数型プログラミングでもある)
「〜でもある」を「〜していない」に変えたという、単純ながら見落としやすい誤りです。
⑥ なぜ機械学習でPythonなのか
| 理由 | 内容 |
|---|---|
| 数値計算ライブラリが充実している | 複雑な計算を自分で書かなくてよい |
| 汎用性が高い | 前処理から分析、可視化まで1つの言語で |
| 書きやすい | 研究者が試行錯誤しやすい |
第13章で学ぶAI・機械学習の実務では、Pythonがほぼ標準になっています。言語そのものが優れているというより、使える部品(ライブラリ)が豊富に用意されていることが理由です。
第2章で学んだライブラリの考え方——よく使う処理をまとめた部品の集まり——が、ここで効いています。
⑦ R(R言語)
データ解析・統計解析向けのオープンソースなプログラミング言語です。
統計解析が求められるビジネスインテリジェンス(BI)、ビジネスアナリティクス(BA)、マーケティングなどにおいても活用されています。
Rはベクトル処理(構造を持ったデータ集合)という柔軟な処理を実現するための実行記法を用いていること、視覚化に優れたグラフ機能などに特徴があります。
⑧ Rの押さえどころ
| 項目 | 内容 |
|---|---|
| 用途 | データ解析・統計解析 |
| ライセンス | オープンソース |
| 活用分野 | BI、BA、マーケティング |
| 特徴 | ベクトル処理、視覚化に優れたグラフ機能 |
第3章で学んだBI(ビジネスインテリジェンス)が、ここで再び登場します。データを分析して意思決定に使うという文脈で使われる言語です。
⑨ PythonとRの使い分け
どちらもデータ分析に使われますが、性格が違います。
| Python | R | |
|---|---|---|
| もともとの目的 | 汎用のプログラミング言語 | 統計解析専用 |
| 得意分野 | 機械学習、ディープラーニング | 統計解析、可視化 |
| システムへの組み込み | しやすい | しにくい |
| 統計の専門的な手法 | 揃っている | さらに豊富 |
分析結果をシステムに組み込むならPython、統計解析そのものを深く行うならR——というのが実務での使い分けです。
⑩ 6つのスクリプト言語をまとめる
| 言語 | 動く場所 | 得意分野 |
|---|---|---|
| JavaScript | クライアント側 | 動的なWebページ |
| Perl | サーバ側など | テキストの検索・抽出・レポート作成 |
| PHP | サーバ側 | Webアプリケーション開発、DB連携 |
| Ruby | サーバ側など | テキスト処理(Perlと同等)、オブジェクト指向 |
| Python | サーバ側など | 機械学習、ディープラーニング |
| R | — | データ解析・統計解析、可視化 |
⑪ 覚えるための整理
| 手がかり | 言語 |
|---|---|
| ブラウザで動く | JavaScript |
| サーバサイドと明記 | PHP |
| テキスト処理 | Perl、Ruby |
| 日本人が開発 | Ruby |
| 機械学習・ディープラーニング | Python |
| インデントでコードブロック | Python |
| 統計解析・BI・BA | R |
具体例
設例 Pythonの特徴
> Pythonに関する次の記述の正誤を判定せよ。(令和3年度第6問 改題)
> イ オブジェクト指向のプログラミング言語であり、関数型プログラミングをサポートしていない。
> ウ クラスや関数、条件文などのコードブロックの範囲はインデントの深さによって指定する。
解答 イ:× ウ:○
「サポートしていない」という否定形に注意
正しい記述の一部を否定形に変えるだけで、誤りの選択肢が作れます。
| 正しい記述 | 誤りにする方法 |
|---|---|
| 関数型プログラミングでもある | 「サポートしていない」に変える |
| インデントで指定する | 「括弧で囲む」に変える |
否定形が出てきたら、いったん立ち止まる——読み方の習慣として身につけておくとよいでしょう。
中小企業でデータ分析に取り組む
顧問先から「売上データを分析したい」と相談された場面を考えます。
段階的な進め方
| 段階 | 使う道具 | できること |
|---|---|---|
| 第1段階 | 表計算ソフト | 集計、グラフ作成 |
| 第2段階 | BIツール | 多角的な分析、ダッシュボード |
| 第3段階 | R、Python | 統計解析、予測 |
いきなり第3段階に飛ばない
| 誤った進め方 | 問題 |
|---|---|
| 「AIで需要予測を」から始める | そもそもデータが整っていない |
| プログラミング言語の学習から始める | 分析の目的が定まっていない |
第3章で学んだデータクレンジングが先
| 順番 | やること |
|---|---|
| ① | どんな意思決定のために分析するかを決める |
| ② | 必要なデータがあるかを確かめる |
| ③ | データの品質を整える(データクレンジング) |
| ④ | まず表計算ソフトで集計してみる |
| ⑤ | 足りなければツールや言語を検討する |
「分析の質は、データの質を超えられない」——第3章で見たとおりです。
Pythonが機械学習で使われる理由を、もう少し詳しく
| 必要なこと | Pythonでできること |
|---|---|
| 大量の数値を高速に計算する | 数値計算ライブラリが用意されている |
| データを読み込んで整える | 同上 |
| 結果を図にする | 可視化のライブラリがある |
| できたものをシステムに組み込む | 汎用言語なので組み込みやすい |
「1つの言語で、前処理から組み込みまでできる」——これがPythonが選ばれる実務上の理由です。
第13章とのつながり
第13章で学ぶAI・機械学習では、次のような用語が登場します。
| 用語 | Pythonとの関係 |
|---|---|
| 機械学習 | Pythonのライブラリで実装される |
| ディープラーニング(深層学習) | 同上 |
| データの前処理 | 同上 |
「AIを導入する」という話の実体は、多くの場合Pythonでプログラムを書くことです。この対応を知っておくと、技術者との会話が噛み合いやすくなります。
確認してみましょう
> 次の記述の正誤を判定せよ。
> a Rubyは、テキスト処理関係の能力などに優れ、Perlと同等の機能を有する。
> b Rは、データ解析・統計解析向けのオープンソースなプログラミング言語である。
> c Pythonは、数値計算ライブラリが充実しているため、機械学習やディープラーニングでも利用されている。
解答 a:○ b:○ c:○
いずれも正しい記述です。「まつもとゆきひろ氏が開発」「ベクトル処理」「インデントでコードブロック」といった特徴的な語も、あわせて押さえておきましょう。

Ruby・Python・R(1/2)

Ruby・Python・R(2/2)
試験のポイント
```
if 条件式:
処理1
処理2
else:
処理3
```
Pythonではコードブロックをインデントの深さによって示す仕様であるため、「{ }」で囲む必要がありません。また、条件式全体を「( )」で囲む必要もないため、見た目がシンプルです。
③ 2つの違いを表で
| 一般的な言語(Javaなど) | Python | |
|---|---|---|
| コードブロックの表し方 | 「{」と「}」で囲む | インデントの深さ |
| 条件式の表し方 | 「(」と「)」で囲む | 囲まない |
| 見た目 | 記号が多い | シンプル |
④ コードブロックとは
コードブロックとは、ひとまとまりとして扱われる処理の範囲のことです。
上の例でいえば、
| 範囲 | 内容 |
|---|---|
| 条件式が成り立つとき | 処理1と処理2 |
| 成り立たないとき | 処理3 |
「処理1と処理2がひとまとまり」ということを、どう表すか——これが2つの言語の違いです。
⑤ インデントとは
インデントとは、行の先頭に空白を入れて字下げすることです。
| インデント | 意味 |
|---|---|
| 字下げなし | 外側の階層 |
| 字下げあり | 内側の階層(そのブロックに属する) |
⑥ 利点と注意点
| 利点 | 注意点 |
|---|---|
| 記号が減り、見た目がシンプル | 字下げを間違えると意味が変わる |
| 字下げが強制されるので読みやすい | 空白とタブが混ざると動かないことがある |
多くの言語では、字下げは「読みやすくするための習慣」にすぎません。字下げを揃えなくてもプログラムは動きます。
Pythonでは、字下げそのものが文法です。揃っていなければ、意味が変わるか、エラーになります。
⑦ なぜこの仕様にしたのか
| 狙い | 内容 |
|---|---|
| 読みやすさを強制する | 誰が書いても字下げが揃う |
| 記号を減らす | 見た目がすっきりする |
| 書く量を減らす | 括弧を打つ手間がない |
「読みやすさ」を文法として組み込んだ——これがPythonの設計思想です。
多くの人が関わる開発では、書き方のばらつきが読みにくさを生みます。Pythonは、その一部を言語仕様で解決しました。
⑧ 試験での問われ方
令和3年度の本試験では、この点がそのまま問われました。
> クラスや関数、条件文などのコードブロックの範囲はインデントの深さによって指定する。
解答:○
「インデントの深さ」という語がPythonの目印です。他の言語には見られない特徴なので、この語が出てきたらPythonだと判断できます。
⑨ 他のスクリプト言語との比較
| 言語 | コードブロックの表し方 |
|---|---|
| Python | インデント |
| JavaScript | { } |
| PHP | { } |
| Perl | { } |
| Ruby | end |
Pythonだけが独特であることが分かります。
⑩ 中小企業への示唆
プログラミング言語の細かい文法は、診断士の試験で深く問われるものではありません。ただし、「読みやすさが保守性を左右する」という点は、経営の観点でも意味があります。
| 状況 | 起きること |
|---|---|
| 書き方がばらばら | 他の人が読めない。直せない |
| 書いた人が辞める | 誰も触れなくなる |
| 書き方が揃っている | 引き継ぎやすい |
第11章で学ぶIT組織・人材育成では、属人化をどう防ぐかが重要な論点になります。プログラムの書き方を揃える(コーディング規約を定める)のは、その具体的な手立てのひとつです。
Pythonの設計思想は、この問題に対する言語レベルからの答えだと見ることもできます。
具体例
インデントを間違えるとどうなるか
Pythonで、次のようなプログラムを書いたとします。
意図したとおりの記述
```
if 在庫あり:
注文を登録する
在庫を減らす
確認メールを送る
```
| 処理 | いつ実行されるか |
|---|---|
| 注文を登録する | 在庫があるときだけ |
| 在庫を減らす | 在庫があるときだけ |
| 確認メールを送る | つねに(字下げされていないので外側) |
インデントを間違えた記述
```
if 在庫あり:
注文を登録する
在庫を減らす
確認メールを送る
```
| 処理 | いつ実行されるか |
|---|---|
| 注文を登録する | 在庫があるときだけ |
| 在庫を減らす | 在庫があるときだけ |
| 確認メールを送る | 在庫があるときだけ(意味が変わった) |
字下げ1つで動きが変わる
この例では、在庫がないときにメールが送られなくなりました。エラーにはならず、そのまま動いてしまう点が厄介です。
他の言語ならどうか
```
if (在庫あり) {
注文を登録する;
在庫を減らす;
}
確認メールを送る;
```
括弧で範囲が決まっているので、字下げがずれていても意味は変わりません。
| Python | Javaなど | |
|---|---|---|
| 字下げの役割 | 文法そのもの | 読みやすさのための習慣 |
| 字下げのずれ | 意味が変わる | 意味は変わらない |
どちらがよいのか
| Pythonの主張 | 他の言語の主張 |
|---|---|
| 字下げを強制すれば、誰が書いても読みやすい | 明示的な括弧のほうが、意図が確実に伝わる |
どちらにも理があるため、いまも両方の流儀が使われています。
試験対策としての押さえどころ
細かい文法を覚える必要はありません。次の1点だけで十分です。
> Pythonは、コードブロックをインデントの深さによって指定する。
この一文が問われたとき、○と判断できればよいわけです。
プログラミング教育との関係
第5節で学ぶビジュアルプログラミング言語(Scratchなど)は、ブロックを積み重ねる形で処理のまとまりを表します。
| 言語 | まとまりの表し方 |
|---|---|
| Scratch(ビジュアル) | ブロックの形と入れ子 |
| Python | インデント |
| Java、JavaScript | { } |
視覚的にまとまりを示すという点では、ScratchとPythonは近い発想だといえます。小学校でScratchを学んだ子どもが、次にPythonに進むという流れが自然なのも、この連続性によります。
確認してみましょう
> 次の記述の正誤を判定せよ。
> a Pythonでは、コードブロックを「{」と「}」で囲む必要がある。
> b Pythonでは、条件式全体を「(」と「)」で囲む必要がない。
> c Javaなどのプログラミング言語では、コードブロックを「{」と「}」で囲む。
解答 a:× b:○ c:○

Pythonの記述の特徴(1/2)

Pythonの記述の特徴(2/2)
試験のポイント
プレミアムプラン
¥9,800〜/ 買い切り・自動更新なし(税込)
決済はStripe(世界最高水準・PCI-DSS準拠)で安全に処理されます。カード情報は当サービスに保存されません。