分野 01 全体像に戻る

言語・実行環境

プログラムを書くための「言葉」と、それを動かす仕組み

すべての分野の部品は、いずれかの言語で書かれている。地図のいちばん下にある土台。

最初に触るなら

Python :読みやすさを優先した動的型付け言語。データ処理・自動化・AI分野の共通語
書いて動かすまでの距離が最短で、データ処理・自動化・AI の学習資料が最も多い。画面を作りたい場合だけ TypeScript から入る。

隣の分野とのつながり

分野 どうつながるか
画面・フロントエンド 画面は JavaScript(TypeScript)で書く。ブラウザが動かせる言語はこれだけなので、画面を作るなら避けて通れない
サーバー・API サーバー側の処理は Python・Go・TypeScript などで書く。言語を決めると、使えるフレームワークが決まる
データ処理・分析 集計や分析のライブラリは Python に集中している。データを扱うなら Python が近道
データ処理・分析 (から見ると) 道具は Python のライブラリに集中している

この分野を理解する

言語とは何か。 人間が書いた指示を、コンピュータが実行できる形にするための決まりごとが「プログラミング言語」である。同じ処理を Python でも Go でも TypeScript でも書けるが、得意な分野と「どこで動かせるか」が違う。

実行環境とは何か。 書いたコードを実際に動かすプログラムを実行環境(ランタイム)と呼ぶ。たとえば JavaScript はもともとブラウザの中でしか動かなかったが、Node.js という実行環境が生まれてサーバー側でも動くようになった。逆に、ブラウザは JavaScript しか動かせない。だから「画面を作る」なら JavaScript(とその拡張である TypeScript)が必須になる。

型の違い。 TypeScript・Go・Rust のような静的型付け言語は、書いた時点で「数値のはずの場所に文字列が入っている」といった間違いを見つけてくれる。Python のような動的型付け言語は書くのが早いが、実行するまで間違いに気づけない。学習初期は Python の速さが利点になり、規模が大きくなると型の助けが利点になる。

隣の分野との境界。 React や FastAPI は「言語」ではなく、言語の上で使う道具(ライブラリ・フレームワーク)である。言語を1つ覚えると、その言語の道具がすべて視野に入る。だから最初の言語選びは、その後に触れる分野を決める。

最初の一歩。 1つの言語で「ファイルを読み、集計して、結果を出力する」小さなプログラムを書く。それができれば、画面・サーバー・データ保存のどの分野にも進める。

この分野のツール(5件)

種別(自分で書く土台か、借りて使うサービスか)で分けている。「主要制約」は各ツールで最も先に当たる限界。

言語(4件)言語そのもの。標準のツールチェーンを含む

言語・実行環境 の比較:言語
ツール学習料金成熟主要制約検証
Python
読みやすさを優先した動的型付け言語。データ処理・自動化・AI分野の共通語
無料安定スレッド並列の上限(GIL):CPython では同時に1スレッドしか Python バイトコードを実行しない。I/O 中は解放される
Go
単一バイナリに固めて配布できる静的型付け言語。並行処理と配布が軽い
無料安定旧バージョンのサポート期間:各メジャー版は、その後2つ新しいメジャー版が出るまでサポート。メジャー版は2月と8月の半年ごと(実質約1年)
TypeScript
JavaScriptに静的型を足した言語。Node.jsでブラウザとサーバーを同じ言語で書く
無料安定型の実行時消失:型注釈は JavaScript の一部ではなく、コンパイル時に完全に削除される。型が実行時の動作を変えることはない
Rust
メモリ安全性をコンパイル時に保証する、GCを持たない静的型付け言語
無料安定安定版のリリース周期:6週間ごと(nightly→beta→stableのトレインモデル)。バージョンごとの長期サポート(LTS)はない

実行環境(1件)言語を動かす処理系。言語とは別に選ぶ

言語・実行環境 の比較:実行環境
ツール学習料金成熟主要制約検証
Node.js
JavaScriptをブラウザの外(サーバー・CLI)で動かす実行環境
無料安定JavaScript の実行スレッド:JavaScript のコードは1本のイベントループで実行され、ファイル I/O などの重い処理はワーカープールに委ねられる

どれを選ぶか

ツール 種別 どういう時に選ぶか/避けるか
Python 言語 データ処理・自動化スクリプト・AI 連携・学習用途では第一候補。配布が単一バイナリである必要がある場合、CPU 並列が要る場合、ブラウザで動かす場合は他言語を選ぶ
Go 言語 CLI ツール、HTTP API サーバー、常駐ワーカーなど「配布して長く動かす」用途では第一候補。ブラウザ画面、データ分析・機械学習、数十行で済む自動化スクリプトは避け、TypeScript か Python へ
TypeScript 言語 ブラウザ画面を持つアプリ、フロントとサーバーで型を共有したい API、npm のライブラリを使う CLI では第一候補。型は実行時に消えるため外部入力の検証は別途必要で、CPU 負荷の高い並列処理や単一バイナリでの配布が要件なら Go へ
Rust 言語 メモリ安全性と実行速度の両方が必要な用途(CLIツール、高負荷なバックエンド、組み込み、WebAssembly)では第一候補。所有権・借用の学習や長めのコンパイル時間を許容できない場合、数十行で終わる自動化スクリプトでは避け、Go や Python へ
Node.js 実行環境 TypeScript / JavaScript でサーバー、CLI、ビルドツールを動かすときの標準の実行環境。画面と同じ言語で裏側も書きたい場合の第一候補。CPU 負荷の高い処理を1プロセスで並列に捌く必要がある場合は Go などのコンパイル言語へ

この分野が担う目的

目的ごとのページでは、他の分野のツールも含めて横断比較できる。