プログラム言語を書くときにインストールするものは何か、調べてみた

# 本記事で説明したいこと

特にプログラムを書く前に知っておきたい基礎的なことを書いておきます。

  - [背景](#背景)
  - [プログラムを作るときにインストールしているものは何？](#プログラムを作るときにインストールしているものは何)
  - [インストールした中には何が入っているの？](#インストールした中には何が入っているの)
  - [インストールするときに意識することは何？](#インストールするときに意識することは何)

#### 背景
少しだけ説明します！この記事を書いているとき私はエンジニア４年目でテストから設計・要件定義と少しずつ業務の幅を広げているときでした。
そんな中、設計から実装(プログラムの文をかきかきしてテストする)まで一人でやってみることも増えてきて改めて使っているものが何か理解したいと思いました。

それでは書いていきます。

## プログラムを作るときにインストールしているものは何？

例えばpythonを使いたい！と思って、[python公式サイト](https://www.python.org/downloads/)からダウンロードしたり、コマンドプロンプトから
```bin/bash
install python3 python3-pip
```
などと書いてプログラム言語をインストールしますね。

・・・これって、何ですかね？

私はよくわからずにインストールして使っていました。インストール方法を調べれば使えるようにはなりますが中身なんて気にもしてませんでした。
まずこれは「**ランタイム環境**」や「**実行環境**」と呼ばれるらしいです。

よくわからないのでChatGPT君に聞いてみたりしましょう。
すると、こう返ってきました。

---
GPT生成
1. **結論**  
   「ランタイム環境」や「実行環境」は、プログラムが実行される際に必要なソフトウェアやハードウェアの条件を指し、プログラムが正常に動作するための環境を意味します。

2. **説明**  
   プログラムは開発時には動作しやすい環境で作成されますが、実際の利用では異なるOS、デバイス、ソフトウェア構成が存在するため、それぞれの環境に適した設定やライブラリの準備が必要です。ランタイム環境には、例えばPythonインタプリタ、Java仮想マシン（JVM）、Webブラウザなどが含まれます。これにより、開発環境と実行環境の違いを解消し、同様の動作が保証されます。
---

なるほど、違うパソコンやサーバーでも同じ動きをするようになっているんですね

「実行環境をインストールする」と表現されるのは、「使っているパソコンでもプログラムが作れるような設定などをインターネットからもってくる。」を指す見たいです。

## インストールした中には何が入っているの？
では中には何が入っているのでしょうか。世の中にはいろんな実行環境がありますよね。
何が入っているかを知っておけばどんな仕組みでプログラムが動いているかもなんとなくつかめるはずです。

<div style="text-align: center;">
絶対に含まれるもの一覧
</div>

| 項目                 | 説明                                                              |
|:----------------------|:-------------------------------------------------------------------|
| インタプリタまたはコンパイラ | コードを実行可能な形式に変換するためのプログラム                    |
| 標準ライブラリ       | 基本的な機能を提供するライブラリのセット                              |
| パッケージマネージャ | 外部ライブラリのインストール・管理を行うツール                        |
| デバッグツール       | エラーチェックやトラブルシューティング用のツール                     |
| ドキュメント         | 言語や標準ライブラリの使い方を説明した公式ガイド                      |
| コマンドラインツール | インタプリタの起動、コード実行、ライブラリ管理などを行うためのツール |

なんかカタカナが多くて大変ですが、英語を翻訳してあげればちょっと理解できるかもしれません。

まず、
- インタプリタ:直訳は通訳者ですね。→ここは日本語→機械語の変換器みたいなイメージでよさそうです。実行するときに１行ずつ機械語に訳してくれるみたいです。
- コンパイラ:直訳は翻訳・・・→インタプリタとの違いは、**あらかじめ**・**ファイル単位で**機械語に翻訳しておいてくれるみたいです。

つまり、やり方が違えど、機械語に直してくれる機能があるということ。

次に
- ライブラリ:直訳は図書館笑　→図書館の意味まで見ると「書物や資料が収集・整理され、利用者が閲覧・利用できる施設」であり、基本的な機能を使うための資料が入っているようです。
- パッケージマネージャ:直訳はあまりなく、包みの管理とかヘンテコ。　→上の表から包み＝ライブラリと解釈すると分かりやすく、管理者＝司書さんとすると分かりやすいのではないでしょうか。

プログラムの図書館と司書さんもこの中にいて呼び出すと中にある書籍(標準プログラム)を使って作成できます。
あくまで、「図書館」なのですべて読み切るまでには時間がかかってしまいそうです。笑

そして
- デバッグツール:直訳、、ないですねGoogle翻訳さんも頭をかしげています。　→デバッグ「De・Bug」から虫取り道具、プログラムに潜む害虫を見つけるツールととらえると良いのかなと。
- ドキュメント：直訳は文書　→これはわかりますね、説明書です。どんなものにも説明書が入っていますね。Readmeとかがあるのは「(最初に)私を読んで」と言ってる説明書です。読むかGPTに放り投げるといいです。
- コマンドラインツール：直訳は文章で指示するツール　→ここに指示を出すと「図書館」や「コンパイラ」を通じて処理してくれます。

最後の三つは人間が使えるようなものも混ざっています。英語の登場が多いですが、勉強だと思って飛び込むと面白いかもしれません。

## インストールするときに意識することは何？

ざっくり２つです。
1. 環境設定
   - インストールしたから必ず動くわけではないんです。悲しい。基本的には実行環境を提供しているホームページに対応している機械(OS)やバージョンが載っていますので見てみましょう。
   - また、動かすための設定に**このパソコンで動かすための設定**が自動でされないことが多いです。しっかり設定しましょう。

　<参考>[環境変数の設定方法 Windows11](https://qiita.com/hwatahik/items/d49642aa069792e0ae79)

2. ライブラリ依存関係
   - これを読んでいる人はちょっとピンときたかもしれません。「司書さん」がいます。つまりパッケージマネージャーが入っているものはそれを使いましょう。<br>例：PythonのpipやNode.jsのnpmなど
   - ない場合もありますのでそれは開発ツールで設定したりする場合もあります。

## 最後に

作るときに困ったらどんどん調べましょう。調べると関係した知識が身について後で役に立ちます。
私のおすすめはChatGPTを使うことです！

[ChatGPTサインアップ](https://openai.com/ja-JP/chatgpt/overview/)