言語・実行環境
プログラムを書くための「言葉」と、それを動かす仕組み
すべての分野の部品は、いずれかの言語で書かれている。地図のいちばん下にある土台。
最初に触るなら
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 などのコンパイル言語へ |
この分野が担う目的
目的ごとのページでは、他の分野のツールも含めて横断比較できる。
- コマンドラインツールを作る (この分野から 5件)
- 常時起動のプロセスを保持する (この分野から 4件)
- HTTP API を公開する (この分野から 4件)
- HTTP API を呼び出す (この分野から 3件)
- 大量データを一括処理する (この分野から 3件)
- 表形式データを変換・集計する (この分野から 1件)
- Web ページからデータを取得する (この分野から 1件)
- ブラウザ向けの画面を作る (この分野から 1件)