さいしょに
指標
やりたいことを命令として組み立てる
「命令型のプログラミング(手続き型)」においては、言語が違っても「方言」程度の違いしかありません。「英語で『Apple』と言うか、日本語で『りんご』と言うか」の違いだけで、指し示している概念は同じです。しかし、すべての言語がこのルールだけで動いているわけではありません。
言語によって「アプローチの哲学(パラダイム)」が異なります。
「この言語は、何を楽にするために作られたのか?」 を考える。
・C言語は「ハードウェアの性能を極限まで引き出す」ため。
・Pythonは「人間が読みやすく、素早く作る」ため。
・JavaScriptは「Webブラウザ上で動かす」ため。
アルゴリズム(処理の手順)は言語を超越する。
「リストの中から最大値を見つける方法」などのロジック(アルゴリズム)は、どの言語でも共通です。
プログラミング思考
「プログラミング思考(Computational Thinking)」とは、専門的なコードを書く技術そのものではありません。最適な手順を組み立て、無駄をなくしていくための「問題解決の思考法」です。
「自分が意図する活動を実現するために、どのような論理的ステップを踏めばよいかを考え、それをコンピューター(あるいは他人)が実行できる形に整理する力」です。
分解 (Decomposition)
大きな問題を、解決可能な小さな単位(サブ課題)に切り分けることです。
巨大なソフトウェアを作る際、一度に全部は作れません。「ユーザー認証機能」「データベース機能」「画面表示機能」といったモジュール(部品)に分けます。
パターン認識 (Pattern Recognition)
分解した要素の中に、過去の経験やデータとの共通点(法則性)を見つけることです。
「このデータ処理は、以前作ったチャットアプリの仕組みと同じだ」と気づけば、コードを再利用して効率化できます。
抽象化 (Abstraction)
問題の本質に関係ない詳細を捨て、重要な要素だけを抜き出すことです。これを「モデル化」とも呼びます。
地図アプリを作る際、建物の色や壁の材質は無視し、「位置座標」と「道路のつながり」だけをデータ化します。
アルゴリズム設計 (Algorithm Design)
問題解決の手順を、誰が(あるいはどのコンピューターが)やっても同じ結果になるように順序立てて組み立てることです。
プログラムのフローチャートやコードそのものです。分岐(if文)や繰り返し(for文)を使います。
ハードウェア・ネットワーク分野における応用
ネットワーク障害が起きたとき、我々は闇雲にケーブルを抜き差ししません。
- 分解: サーバーの問題か、ルーターの問題か、PCの問題か?(切り分け)
- パターン認識: 「このエラーログは、先月の接続不良と同じパターンだ」
- 抽象化: 複雑な配線図を、論理的な接続図として単純化して考える。
- アルゴリズム: 手順書通りに復旧作業を行う。
AI(人工知能)分野における応用
AIはプログラミング思考の塊です。特に機械学習は、「大量のデータからパターンを認識し、抽象化(モデル化)する」プロセスそのものです。AIを理解するには、この思考法が不可欠です。
プログラミング思考は、「複雑な世界をシンプルに解きほぐす技術」です。
「制御フロー (Control Flow)」と「データ構造 (Data Structures)」
制御構造
制御構造は、プログラムがどの命令を、いつ、どのような順序で実行するかを決定する、簡単に言えば、プログラムの流れを制御するための文法やルールのことです。
制御構造の3つの基本要素
どんなに複雑なプログラムでも、基本的に以下の3つの要素の組み合わせで構成されています。
1. 順次実行 (Sequence)
- 概念: 命令を上から下へ、書かれた順序通りに実行する、最も基本的な流れです。
- 例:
- 変数Aに10を入れる。
- 変数Bに20を入れる。
- AとBを足して結果を表示する。
- 役割: 処理の基本的な流れを作ります。
2. 条件分岐 (Selection/Conditional)
- 概念: 条件が満たされているかどうか(真か偽か)によって、実行する処理を分ける仕組みです。
- 例:
If...Then...Else(もし〜なら、そうでなければ)- 「もし時間が夜なら、画面をダークモードにする。さもなくば、ライトモードにする。」
- 役割: プログラムに「判断」の能力を与え、状況に応じた柔軟な対応を可能にします。
3. 繰り返し (Iteration/Loop)
- 概念: 同じ処理を指定された回数、または特定の条件が満たされるまで、何度も繰り返す仕組みです。
- 例:
Forループ (〇回繰り返す)Whileループ (〜の間繰り返す)- 「データが100個あるので、全てのデータに対して合計を計算する処理を100回繰り返す。」
- 役割: 定型的な作業を自動化し、コードの記述量を減らし、処理効率を向上させます。
制御構造の重要性
コンピュータは順序立てて指示されないと何もできません。制御構造がなければ、プログラムはただ単調に命令を順番に実行するだけで、以下のようなことが不可能になります。
- 複雑な処理: 100個のデータ処理をするのに、100回同じコードを書く必要が出てしまいます(繰り返しがない場合)。
- 柔軟な対応: ユーザーが入力した値が正しいかどうかをチェックしたり、エラーが起きたときに処理を止めたりする判断ができなくなります(条件分岐がない場合)。
制御構造は、単なる計算機を賢く動くプログラムに変えるために不可欠な、プログラミングの「思考様式」なのです。
対数(Log)
対数(たいすう、Log)は、「掛け算の回数を数えるカウンター」と考えると非常にシンプルです。
対数とは?(指数の「逆」です)
掛け算(指数)
2を 3回、掛けると、8 になります。
式:2^3 = 8(2の3乗は8)
対数(ログ)は、この「何回掛けたの?」という部分(ここでは3)を主役にする書き方です。
2を 「何回」 掛けたら 8になりますか?
答え:3 回
これを数学の言葉で書くと log_2 8 = 3
「log(ログ)」が出てきたら、「何回掛け算したか?」と聞かれていると思ってください。「普通に 2^3 = 8でいいじゃないか」と思います。でも、数が桁違いに大きくなった時に、対数の便利さを発揮します。
例:
10を 1回掛ける 10
10を 2回掛ける 100
10を 6 回掛ける 1,000,000
数字が「10」から「100万」まで爆発的に増えても、対数(掛けた回数)で見ると、「1」から「6」に増えただけです。
対数のメリット:「桁違いに巨大な数字を、扱いやすい小さな数字(回数)に変換して扱える」 ことです。
対数の例
地震のマグニチュード(M)
マグニチュードが 1増えると、地震のエネルギーは約 32 倍になります。2増えると 1000 倍です。エネルギーそのものの数字が大きすぎるので、対数を使って「M7」「M8」とシンプルに表しています。
音の大きさ(デシベル)
騒音などのエネルギーも桁違いに変化するため、対数を使って人間に分かりやすい数字に直しています。
酸性・アルカリ性(pH)
pHも水素イオンの濃度という難しい数字を、対数を使って「0〜14」のメモリに直したものです。
常用対数
「10 を底(てい)にする対数」です。 実は計算しなくても、「あるもの」を数えるだけで答えが分かってしまう。
log_10 10000 =
1の後ろにある 0 の数を数えるだけで答えになるので、答えは 4
変数
プログラミング言語による”変数”は「概念の核心(名前をつけて値を保存する)」は共通していますが、その「正体(仕組み)」や「振る舞い」は言語やパラダイムによって大きく異なります。
この違いを理解することは、バグのない効率的なシステムを作るための第一歩です。
共通している「核心」:メモリアドレスの抽象化
どの言語であっても、コンピューターにとって変数とは「メモリ上の特定のアドレス(番地)につけられた人間用のラベル」です。
ハードウェアの視点: コンピューターは 0x7fff5fbff のような16進数のアドレスでデータを管理します。
変数の役割: 人間が扱いやすいように、そのアドレスに score や userName といった名前(識別子)をつけることです。
ここは全ての言語で共通です。しかし、「そのラベルがどう機能するか」が異なります。
変数の定義や扱いは、主に以下の3つの軸で異なります。
・「箱」か「名札」か(静的型付け vs 動的型付け)
最も大きな違いは、変数を「データを入れる容器」と見るか、「データに紐付けるタグ」と見るかです。
| 言語タイプ | 代表例 | 変数のイメージ | 解説 |
| 静的型付け | C, C++, Java, Go | 「専用の箱」 | 変数を定義した時点で「これは整数を入れる箱」と決まります。違う種類のデータ(文字列など)を無理やり入れようとするとエラーになります。 例: int x = 10; |
| 動的型付け | Python, Ruby, JS | 「名札(タグ)」 | 変数はデータに貼り付けるタグに過ぎません。最初は整数にタグを貼り、次は文字列に貼り直すことも可能です。 例: x = 10 の後に x = "Hello" が可能。 |
・値そのものか、参照(場所)か(値渡し vs 参照渡し)
変数が「データそのもの」を持っているのか、「データのありか(住所)」を持っているのかの違いです。
C言語などのプリミティブ型: 変数という箱の中に、直接「数値」が入っています。
JavaのオブジェクトやPython: 変数の中に入っているのは、データの実体ではなく「データがあるメモリ上の場所(ID)」です。これを「参照」と呼びます。
ここが落とし穴です: 変数 A を B にコピーしたとき、データの「コピー」が作られるのか、同じデータを指す「矢印」が増えるだけなのか、言語によって挙動が異なります。
・書き換え可能か、不変か(ミュータブル vs イミュータブル)
これは関数型言語(Haskell, Erlangなど)や、モダンな言語(Rust, Swift)の設計思想に関わります。
一般的な言語: 変数(Variable)という名の通り、中身を何度も書き換えられます(x = x + 1)。
関数型言語: 数学の変数に近いです。一度 x = 5 と定義したら、そのスコープ内で x は永遠に 5 です。「代入」ではなく「束縛(Binding)」と呼びます。並列処理(マルチスレッド)での安全性が高まります。
AIとハードウェアの視点
AIやハードウェアに近い領域では、さらに特殊な「変数」が存在します。
AI(TensorFlow/PyTorch)における変数:
通常のプログラミング変数は計算の一時的な置き場ですが、AIモデル内の変数は「学習すべき重み(パラメータ)」を指します。これらは微分可能であり、学習プロセスを通じて自動的に更新される特殊な多次元配列(テンソル)です。
Rust言語(システム開発):
「所有権(Ownership)」という概念があります。ある変数がデータを持っているとき、他の変数はそのデータを持てません。メモリ管理の安全性を言語レベルで保証するための非常に厳格な定義です。
アルゴリズム
アルゴリズム設計の基本と実践的な設計の考え方
アルゴリズム設計の基本
1. 「何」を「どう」するかを決める
アルゴリズムは、以下の3つの要素で構成されます。
①入力 (Input): 解決したい問題に必要なデータ。(例: 料理の材料)
②手順 (Process/Step): 入力データを使って、目標を達成するために実行する制御構造(順次実行、条件分岐、繰り返し)の組み合わせ。(例: 材料を切る、炒める、味付けする)
③出力 (Output): 手順を実行した結果得られるもの。(例: 完成した料理)
2. 設計が目指す2つの目標
良いアルゴリズムを設計する際に重要なのは、「正しさ」と「効率」です。
正しさ (Correctness):どんな入力データに対しても、常に正しい出力(結果)を返すこと。これが最も重要です。
効率 (Efficiency):処理を完了するために必要な時間(計算量)とメモリ(使用資源)をできるだけ少なくすること。
実践的な設計の考え方
プログラムの目標(例: 「Excelのデータの中から、最も売上が高い商品を見つけ出す」)を達成するために、以下のステップでアルゴリズムを設計します。
1. 問題の分解と抽象化 (Decomposition):複雑な問題を、単純な小さな問題に分割します。
例: 「売上が高い商品を見つける」
分解:
①Excelファイルを開き、商品データ(入力)をメモリに読み込む。
②読み込んだデータから、売上(数値)だけを比較する。
③最も大きな数値(最大値)を特定する。
④その数値に対応する商品名を出力する。
2. 制御構造の適用 (Applying Control Structures):分解した各ステップに、順次実行、条件分岐、繰り返しを適用します。
例: 「最大値の特定」のステップ
①(順次実行) 最初の商品の売上を「仮の最大値」として設定する。
②(繰り返し) 2番目の商品から最後のデータまで、一つずつ商品データをチェックする。
③(条件分岐) もしチェックしている商品の売上が「仮の最大値」より大きければ、
④(順次実行) 「仮の最大値」をその新しい売上に更新する。
3. 最適な手法の選択 (Optimization):目標達成の方法が複数ある場合、どの方法が最も速く、資源を節約できるか(効率が良いか)を評価し、最適な手法を選びます。
例: データを並べ替えてから最大値を探す方が速いか、それとも並べ替えずに一つずつ比較する方が速いか、といった検討です。
アルゴリズム設計は、単にコードを書くことではなく、どうやったらコンピュータに無駄なく、確実に問題を解決させられるかという論理的な思考です。
アルゴリズムの設計
制御構造(順次実行、条件分岐、繰り返し)をどう組み合わせるかを考えるのが、プログラミングにおける実践的な思考プロセス。
実践的な思考ステップ
ステップ 1: 順次実行(処理のブロック化)
まず、目標達成までの道のりを、順番に実行すべき小さなタスクの連続として分解します。これは「順次実行」の設計です。
分解例:①(順次)プログラムに必要なデータ(ファイルや入力)を読み込む。
②(順次)主要な計算や処理を実行する。
③(順次)結果を保存または表示する。
ステップ 2: 繰り返し(定型作業の自動化)
次に、ステップ1で定義したタスクの中に、同じことを何度も行う必要がある部分がないかを見つけます。
繰り返しを適用する例:
・「100行のデータをすべて処理する」 → For ループ(回数を指定した繰り返し)
・「ファイルの最後までデータがある限り読み込む」 → While ループ(条件を満たす限り繰り返す)
ステップ 3: 条件分岐(判断と例外処理の導入)
最後に、プログラムの実行中に判断が必要な箇所や、問題が起こりそうな箇所を見つけ、「条件分岐」を組み込みます。
条件分岐を適用する例:
判断: 「もしデータの値が特定のしきい値(例: 50)を超えていたら、特別なフラグを立てる。」
例外処理: 「もしファイルが見つからなかったら、エラーメッセージを出して処理を中断する。」
入力チェック: 「もしユーザーの入力が無効(例: 数字の代わりに文字)であれば、再入力を求める。」
エディタ
エディタとは
普段パソコンで文章を書いたりメモを取ったりするときに使うソフト。
例えば、Windowsの「メモ帳」やMacの「テキストエディット」などが代表的なエディタです。
エディタは、以下のようなことができます。
文字を打つ(入力する): キーボードで文字を打ち込んで、画面に表示させることができます。
文字を編集する: 打ち込んだ文字を消したり、コピーしたり、貼り付けたり、入れ替えたりすることができます。
文字の保存: 打ち込んだ内容をファイルとして保存することができます。
文字の読み込み: 保存したファイルを読み込んで、以前の続きから作業することができます。
友達にメールを送る、ブログを書く、レポートを作成する、プログラムのコードを書く、ウェブサイトのHTMLを編集するこれらすべて、文字を入力して編集する作業が必要です。エディタがなければ、文字を打ち込むことさえできませんし、間違えた時に修正することもできません。
エディタの種類
シンプルなテキストエディタ:
例: Windowsの「メモ帳」、Macの「テキストエディット」
とてもシンプルで、文字を打つことと保存することに特化しています。文字の装飾(太字にしたり色をつけたり)はできません。主に、書式のない「プレーンテキスト」と呼ばれる文章を扱うのに使われます。
高機能なテキストエディタ:
例: Visual Studio Code (VS Code), Sublime Text, Atom, Sakura Editor, TeraPad
シンプルなエディタに比べて、以下のような便利な機能がたくさんあります。
シンタックスハイライト:プログラミング言語のコードなど、特定のルールに従って書かれた文字に色をつけたりして見やすくしてくれます。
自動補完: 入力途中の単語を予測して表示し、入力を助けてくれます。
Grep機能: 複数のファイルの中から特定の文字を探し出す機能。
プラグイン・拡張機能: 自分の用途に合わせて、機能を追加することができます。
プログラミング、ウェブサイトの作成、マークダウン記法の文章作成など、より専門的な作業に使われます。
ワープロソフト:
例: Microsoft Word, Google ドキュメント
特徴: エディタと少し似ていますが、文字の装飾(フォントの種類、大きさ、色、太字、斜体など)や画像の挿入、表の作成など、見た目を整えることに特化しています。
用途: レポート、企画書、手紙など、印刷したり、人に見せるための文書作成に使われます。厳密にはエディタとは区別されることが多いですが、文字を編集するという意味では広義のエディタと言えるでしょう。
開発環境
コンピューターのプログラム(ソフトウェア)を作るための、道具一式が揃った場所
例えば、料理をするためには、包丁や鍋、まな板、コンロ、冷蔵庫などの道具が必要ですし、それらを置くためのキッチンという場所がプログラムを作るには、専用の道具(ソフトウェア)が必要で、それらがうまく連携して使えるように準備された「場所」が「開発環境」なんです。
プログラミングは、単に文字を打ち込むだけではできません。私たちが書いたプログラムのコードは、コンピューターが直接理解できる言葉ではありません。そのため、以下のような様々なプロセスが必要です。
- コードを書く: まずは、プログラミング言語(Python, C++, JavaScriptなど)でプログラムの指示を文字として書きます。
- コンピューターが理解できるようにする: 書いたコードを、コンピューターが実行できる形(機械語)に変換する必要があります。この変換作業を「コンパイル」や「インタープリット」と呼びます。
- プログラムを実行する: 変換されたプログラムを実際に動かして、意図した通りに動くか確認します。
- 間違いを探して直す(デバッグ): プログラムがうまく動かない場合、どこに間違いがあるのかを探し出し、修正します。
これらの作業を効率的に行うために、開発環境が必要になります。
開発環境を構成する主な「道具」
開発環境は、通常いくつかのソフトウェアの組み合わせでできています。
- エディタ(コードエディタ):
- 役割: プログラムのコードを書くためのソフトです。
- 例: Visual Studio Code (VS Code),
- ポイント: 単なるメモ帳ではなく、プログラミングに特化した機能(文字の色分け、自動補完、エラー表示など)が充実しています。
- コンパイラ/インタプリタ:
- 役割: 私たちが書いたプログラミング言語のコードを、コンピューターが理解できる形に変換するソフトです。
- コンパイラ: コードをまとめて変換し、実行可能なファイル(アプリケーションなど)を作り出すタイプ(C++, Javaなど)。
- インタプリタ: コードを一行ずつ読み込みながら、その場で変換して実行するタイプ(Python, JavaScriptなど)。
- 例: Pythonの実行環境、Java Development Kit (JDK), GCC (C/C++用)
- ポイント: プログラミング言語ごとに専用のコンパイラやインタプリタが必要です。
- 役割: 私たちが書いたプログラミング言語のコードを、コンピューターが理解できる形に変換するソフトです。
- デバッガ:
- 役割: プログラムに間違い(バグ)があったときに、その原因を探し出すのを助けてくれるソフトです。
- 例: 各IDEに内蔵されているデバッガ、GDB (C/C++用)
- ポイント: プログラムの実行を途中で止めたり、変数の値を確認したりすることで、問題箇所を特定しやすくなります。
- バージョン管理システム:
- 役割: プログラムのコードの変更履歴を記録し、管理するソフトです。
- 例: Git (GitHub, GitLab, Bitbucketなどと組み合わせて使うことが多い)
- ポイント: 複数人で開発する際に、誰がいつ、どこをどう変更したのかを追跡したり、以前のバージョンに戻したりするのに非常に役立ちます。
- 統合開発環境 (IDE – Integrated Development Environment):
- 役割: 上記のエディタ、コンパイラ/インタプリタ、デバッガなどの様々なツールを一つにまとめた、オールインワンのソフトウェアです。
- 例: IntelliJ IDEA (Java), PyCharm (Python), Xcode (iOS/macOS), Android Studio (Android), Visual Studio (C#, C++, .NET)
- ポイント: 初心者でもこれ一つあれば開発を始めやすいですが、高機能な分、使いこなすのに慣れが必要な場合もあります。VS Codeのように、エディタに機能を追加してIDEのように使えるものもあります。
開発環境は、プログラミングをする上で非常に重要な「土台」です。目的に合わせて適切なツールを選び、それらを組み合わせて効率的にプログラミングができるように整えることが、スムーズな開発への第一歩となります。
HTML
HTMLを始めるための開発環境の作り方
HTMLはプログラミング言語というよりは「マークアップ言語」といって、ウェブページの構造を作るためのものなので、本格的なプログラミング言語に比べて、開発環境を準備するのはすごく簡単です。
- テキストエディタ: HTMLのコードを書くためのソフト
- Webブラウザ: 書いたHTMLのコードがどう表示されるか確認するためのソフト
この2つがあれば、すぐにHTMLを始められます。HTMLを書いて表示してみましょう。
1. 新しいフォルダを作る
まず、HTMLファイルなどを保存するための新しいフォルダをデスクトップなど分かりやすい場所に作りましょう。
2. テキストエディタでフォルダを開く
3. 新しいHTMLファイルを作る
- ファイル名を入力する欄が出てくるので、
○○○○.htmlと入力してEnterキーを押します。
必ず最後に.htmlをつけてください。
4. HTMLのコードを書いてみる
<!DOCTYPE HTML>
<html lang= "ja">
<head>
<meta charset='utf-8'>
<title>HTMLを書いてみた</title>
<style>body {color: blue;}</style>
</head>
<body style="font-size:40px">
HTMLを書いてみた!
</body>
</html>
解説:
<!DOCTYPE HTML>:HTML5で書かれたことを宣言。
<html lang= “ja”>:ページの言語が「日本語」だと指定しています。
<html>~</html> :HTMLのスタートとエンドを示しています。
<head>~</head> :ここには「ページの設定情報(見えない情報/メタ情報)」をまとめます。
<meta charset=’utf-8′>:文字コードをUTF-8に設定(日本語対応)。
<title>”HTMLを書いてみた”</title>:ブラウザのタブに表示されるタイトル。
<style>body {color: blue;}</style>:bodyのテキストの色を青に設定。
<body style=”font-size:40px”>:フォントサイズを40ピクセル と書いている
<body>~</body> :実際に画面に表示される内容を書きます。
5. ファイルを保存する
書いたコードを保存します。ファイル(F) > 上書き保存(S) をクリックするか、Ctrl + S (Windows) または Command + S (Mac) のショートカットキーを使います。
6. Webブラウザで表示してみる(Google Chrome使用)
- エクスプローラー(ファイルやフォルダを見るソフト)を開き、先ほど作った フォルダを開きます。
- その中に
というファイルがあるはずです。その ファイルをダブルクリックします。○○○○.html - すると、自動的にWebブラウザ(Google Chromeなど)が立ち上がり、書いたHTMLが表示される
もし表示されない場合は、 を右クリックして「プログラムから開く」を選び、普段使っているWebブラウザを選択してみてください。○○○○.html
JavaScript
最も手軽に始められる「JavaScript」
特別なソフトウェアのインストールといった準備が一切不要で、「ブラウザ」さえあれば、今すぐにでも始められる。 最近のパソコンには、Chrome、Safari、Edgeといった「ブラウザ」が必ずインストールされています。JavaScriptは、このブラウザの中で直接動くように作られているため、何かを新しくインストールする必要がありません。他の多くのプログラミング言語では、コードを書いたり動かしたりするための「開発環境」と呼ばれるものを、最初に設定する必要があります。この環境構築が初心者にとっては一つのハードルになるのですが、JavaScriptならその手間が一切かかりません。思い立ったその瞬間に、コードを書き始めることができます。
最初のプログラム作成
①作業用フォルダの作成
作業ファイルを保存するための場所を用意します。Cドライブの直下など、自分が分かりやすい場所に〇〇で新しいフォルダを作成してください。
②HTMLファイルの作成
次に、作成した〇〇フォルダの中に、△△.htmlという名前で空のファイルを作成します。このとき、ファイルの末尾が.htmlという拡張子になっていることが非常に重要です。
③コードの記述
作成したファイルを、「メモ帳」などのテキストエディタで開きます。△△.html
<!DOCTYPE html>
<html>
<head>
<meta charset=”UTF-8″> </head>
<body>
<script> document.write(“おはよう”);
</script>
</body>
</html>
ここでの<script> </script>というタグで囲まれた部分が、JavaScriptで書いたプログラムです。
「名前を付けて保存」の画面の下の方にある 「エンコード(文字コード)」 という項目を、「UTF-8」 に変更してから保存します。
④プログラムの実行
コードを記述したら、ファイルを上書き保存してください。そして、保存したファイルを右クリック>「このアプリケーションで開く」からブラウザを選ぶ.html△△
ブラウザの画面に「おはよう」と表示されましたか?これがプログラムが動いている状態」です。保存したアイコンが、Google ChromeやEdgeのマークになっていますか?もし「メモ帳のアイコン」のままなら、拡張子が正しく変更できていません。
Python【Windows】
開発環境 構築マニュアル
インストーラーのダウンロード
PythonのプログラムをPC上で実行可能にするための「インストーラー」というソフトウェアを入手します。これは、PythonをPCに導入するための設計図のようなものです。信頼できる公式サイトから最新版をダウンロードすることが、安全な開発環境を整えるための第一歩となります。
①公式ウェブサイトの検索
お使いのウェブブラウザ(Google Chrome, Microsoft Edgeなど)を起動し、検索バーに「python ダウンロード」と入力して検索してください。通常、検索結果の一番上にPythonの公式サイト(python.org)が表示されますので、そのリンクをクリックします。
②ダウンロードページの特定
公式サイトにアクセスすると、トップページに最新版のPythonをダウンロードするためのボタンが表示されます(例:「Download Python 〇.〇.〇」)。このボタンをクリックしてください。
③インストーラーの選択とダウンロード
ダウンロードページが表示されたら、画面を下にスクロールし、「Files」という一覧の中から「Windows installer (64-bit)」というリンクを探してクリックします。現在市販されているほとんどのWindows PCは64-bit版ですので、通常はこちらを選択します。これにより、インストーラーファイル(末尾が.exeのファイル)のダウンロードが開始されます。ダウンロードが完了すると、ファイルは通常、PCの「ダウンロード」フォルダに保存されます。
これでインストーラーのダウンロードは完了です。このファイルを使って実際にPCへPythonをインストールしていきます。
Pythonのインストール
ダウンロードしたインストーラーを使用して、PCにPythonを導入します。この工程には一つだけ非常に重要な設定項目がありますので、手順をよく確認しながら慎重に進めてください。
①インストーラーの起動
先ほどダウンロードした.exe形式のインストーラーファイルをダブルクリックして実行します。Pythonのインストール画面が起動します。
②重要設定:Add Python to PATHの有効化
インストール画面が表示されたら、まず画面の最下部にある「Add Python 3.9 to PATH」というチェックボックスを必ずオンにしてください。
③インストールの開始
チェックを入れたことを確認したら、「Install Now」をクリックします。PCへのPythonのインストールが開始されますので、処理が完了するまでしばらくお待ちください。
④インストールの完了
インストールが正常に完了すると、「Setup was successful」というメッセージが表示されます。これで成功です。「Close」ボタンを押して画面を閉じてください。
以上でPythonのインストール作業は完了です。次に、PCがPythonを正しく認識しているかを確認する作業に移ります。
正常なインストールの検証
インストール作業が完了したら、Pythonがシステムに正しく導入され、どこからでも呼び出せる状態になっているかを確認します。この検証作業は、今後のプログラミングをスムーズに進めるために不可欠です。コマンドプロンプトは、キーボードからテキストで命令(コマンド)を入力して、PCを操作するためのツールです。
①コマンドプロンプトの起動
Windowsの画面左下にある検索バーに「cmd」と入力します。検索結果に表示される「コマンドプロンプト」をクリックして起動してください。黒い背景に白い文字が表示されるウィンドウが立ち上がります。
②バージョン確認コマンドの実行
コマンドプロンプトの画面で、カーソルが点滅している箇所に以下のコマンドを半角で入力し、Enterキーを押します。
③結果の確認
コマンドを実行後、Python 〇.〇.〇のように、先ほどインストールしたPythonのバージョン番号が表示されれば成功です。これは、PCがPythonの命令を正しく認識している証拠となります。
この確認が取れれば、Pythonを使用するすべての準備が整いました。
基本的な使い方
Pythonを実行するには、大きく分けて2つの方法があります。一つは、簡単な命令をその場で試せる「対話モード」、もう一つは、作成したプログラムファイルをまとめて実行する「ファイル実行」です。
対話モードでの実行(簡単な動作確認)
対話モードは、コマンドを1行入力するごとに即座に結果が返ってくる実行方法です。電卓のような簡単な計算や、特定の関数の動作を少しだけ試したい場合に便利です。
①対話モードの開始
コマンドプロンプトでpythonと入力し、Enterキーを押します。行の先頭が>>>という記号に変わったら、対話モードが開始された合図です。
②計算の実行例
試しに簡単な計算をしてみましょう。5 + 10と入力してEnterキーを押してください。すぐに計算結果の15が表示されます。
③文字の出力例
画面に文字を表示するprintという命令(関数)を使ってみます。表示したい文字列はダブルクォーテーション(")で囲むのがルールです。括弧の中に入力した文字がそのまま出力されます。
④対話モードの終了
対話モードを終了するには、exit()と入力してEnterキーを押します。>>>の表示が消え、元のコマンドプロンプトの画面に戻ります。
ファイルからの実行(基本的なプログラム作成)
通常、プログラムは複数の命令を記述したファイルとして作成し、それを実行します。ここでは、簡単なPythonプログラムファイルを作成し、実行するまでの一連の流れを体験します。
Pythonファイルの作成と保存
①エディタの起動
Windowsの検索バーで「メモ帳」と検索し、メモ帳を起動します。
②コードの記述
メモ帳に、先ほど対話モードで試したprint文を記述します。
③ファイルの保存
メモ帳の「ファイル」メニューから「名前を付けて保存」を選択します。ここで最も重要なのは、ファイル名の末尾を必ず.pyで終えることです。これを「拡張子」と呼び、このファイルがPythonのプログラムであることをPCに教えるためのルールです。
④保存ダイアログで、以下の2点を必ず設定してください。
ファイルの種類: 「テキスト文書 (.txt)」から「すべてのファイル (.*)」に変更します。
ファイル名: test.py と入力します。
この手順を怠ると、ファイルが意図せず test.py.txt という名前で保存され、プログラムとして実行できなくなるため、非常に重要です。保存場所はデスクトップなど、ご自身で分かりやすい場所を選択してください。
作成したファイルの実行
プログラムを実行するには、まずコマンドプロンプト上で、作成した.pyファイルが保存されているフォルダへ移動する必要があります。
コマンドプロンプトにcd (cdの後に半角スペース)と入力>Windowsのエクスプローラーでtest.pyを保存したフォルダを開き、そのフォルダアイコンをコマンドプロンプトのウィンドウ上にドラッグ&ドロップ>フォルダのパスが自動で入力されたら、Enterキーを押します。これで、そのフォルダに移動できます。
ファイルの実行
移動が完了したら、以下のコマンドを入力してEnterキーを押します。「python」の後ろに半角スペースを空け、作成したファイル名を指定します。
実行結果の確認
コマンドを実行すると、メモ帳に記述したprint文の内容がコマンドプロンプトに表示されます。これが、ファイルからプログラムが正しく実行された結果です。
Python【macOS】
開発環境を構築
macOSでPython開発を始める際、システムにプリインストールされているPythonを安易に利用するのは避けるべきです。システムのPythonはOSの特定機能、例えば一部のシステムユーティリティに直接利用されています。そのため、pipでパッケージを無造作に追加したりバージョンを更新したりすると、OSの予期せぬ動作不良に繋がる恐れがあります。また、プロジェクトごとに要求されるPythonのバージョンが異なることは珍しくなく、バージョン管理を怠るとプロジェクトの安定性や再現性が著しく損なわれてしまいます。この課題を解決するための強力なツールがpyenvです。pyenvは、複数のPythonバージョンを一つのシステム上にクリーンに共存させ、プロジェクト単位で簡単かつ明確に切り替えることを可能にするバージョン管理ツールです。これにより、システムの環境を汚すことなく、安全で独立した開発環境を維持できます。
Homebrewによるpyenvのインストールと初期設定
ターミナルを開き、以下のコマンドを実行してpyenvをインストールします。
brew install pyenv
インストールが完了したら、pyenvがターミナル上で正しく機能するように、シェルの設定ファイル.zshrcに以下の内容を追記します。
# pyenvのルートディレクトリを定義
export PYENV_ROOT="$HOME/.pyenv"
# pyenvのコマンドパスをシステムのPATHの先頭に追加
export PATH="$PYENV_ROOT/bin:$PATH"
# pyenvの初期化と自動補完を有効化
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
各行は以下の役割を担っています。
export PYENV_ROOT...: pyenvのホームディレクトリを変数として設定します。
export PATH...: pyenvで管理するpythonコマンドが、/usr/bin/pythonのようなシステム標準のコマンドより優先的に実行されるようにするための「パスを通す」設定です。
eval "$(pyenv init --path)"とeval "$(pyenv init -)": シェル起動時にpyenvを初期化し、バージョンの自動切り替え(shims)やコマンドの自動補完(autocompletion)を有効にするための重要な記述です。
設定をファイルに書き込んだ後、以下のコマンドで設定を即座に反映させます。
source ~/.zshrc
この「パスを通す」ステップは、システム標準のPythonではなく、pyenvで管理するPythonを確実に使用するための非常に重要な設定です。これでpyenvの基本的なセットアップは完了です。
pyenvを使ったPythonのインストールとバージョン管理
pyenvのセットアップが完了したことで、システムの環境を汚すことなく、必要なバージョンのPythonを安全にインストールする準備が整いました。ここでは、目的のPythonバージョンをインストールし、プロジェクトに応じて利用するバージョンを切り替える具体的な方法を解説します。
1、インストール可能なバージョンの確認
pyenvを通じてインストールできるPythonのバージョンにはどのようなものがあるか確認してみましょう。以下のコマンドを実行すると、利用可能な全バージョンのリストが表示されます。
pyenv install -l
このコマンドを実行することで、最新の安定版から過去の特定のバージョン、さらにはAnacondaなどのディストリビューションまで、豊富な選択肢の中からプロジェクト要件に合ったものを正確に選ぶことができます。
2、特定バージョンのPythonをインストール
今回は、リストの中からバージョン3.9.0をインストールする例を見ていきます。以下のコマンドを実行してください。
pyenv install 3.9.0
Pythonのソースコードをダウンロードし、ビルドするプロセスが開始されます。環境にもよりますが、このインストール作業には3分から5分程度の時間がかかる場合があります。
3、使用するPythonバージョンの設定と確認
インストールが完了したら、このバージョンを実際に使用するよう設定します。特定のディレクトリ以下で、今インストールした3.9.0を有効にするには、pyenv localコマンドを使用します。
pyenv local 3.9.0
このコマンドは非常にスマートに機能します。実行すると、現在のディレクトリに.python-versionという不可視の(ファイル名の先頭がドットで始まる)プレーンテキストファイルが生成され、そのファイル内にバージョン名(この場合は3.9.0)が記録されます。以降、このディレクトリおよびその配下で作業する際は、pyenvがこのファイルを自動的に検知し、指定されたバージョンのPythonを有効にしてくれます。
設定が正しく反映されたかを確認するために、以下のコマンドでPythonのバージョンを表示させてみましょう。
python -V
ターミナルに以下のように表示されれば、設定は成功です。
Python 3.9.0
もしここでシステムの古いバージョン(例: Python 2.7.16)が表示されてしまう場合は、前のセクションで解説した.zshrcへのパス設定が正しく行われていないか、source ~/.zshrcによる設定の再読み込みがされていない可能性があります。手順を見直し、設定を再度確認してください。
これで、意図したバージョンのPythonへクリーンに切り替えることができました。
Python環境の動作確認
インストールしたPythonが対話モードとスクリプト実行の両方で問題なく機能することを確認します。これにより、開発を始めるための基盤が完全に整ったことを保証できます。
1、対話モードでの動作確認
ターミナルで以下のコマンドを入力し、Pythonの対話モードを起動します。
python
>>>というプロンプトが表示されれば、対話モードに入った合図です。ここでは、Pythonのコードを1行ずつ入力して、その場で実行結果を確認できます。
例を試してみましょう。
単純な計算: >>> の後に 5 + 10 と入力してEnterキーを押します。
このように、Pythonが計算結果 15 を即座に返してくれます。
文字列の出力: 画面に文字を表示するprint関数を使ってみましょう。
>>> の後に print(‘今日は〇〇しています’) と入力してEnterキーを押します。
入力した文字列がそのまま出力されることが確認できます。
計算結果や文字列が正しく出力されれば、Pythonのコア機能は正常に動作しています。
対話モードを終了するには、exit()と入力してEnterキーを押すか、ショートカットキーControl + Dを押します。Control + Zでも抜けることができますが、これはプロセスを一時停止する操作です。
2、スクリプトファイルでの動作確認
touch code.pyコマンドを実行するか、お使いのテキストエディタ(Visual Studio Codeなど)を使って、code.pyという名前の新しいファイルを作成してください。ファイルを開き、以下のサンプルコードを記述して保存します。ファイルの拡張子は .py とします。
print('今日は〇〇しています')
ファイルが保存できたら、ターミナルから以下のコマンドを実行してスクリプトを起動します。
python code.py
実行後、ターミナルにファイル内に記述した今日は〇〇していますという文字列が出力されれば、スクリプトの実行環境も正常に構築されています。これら一連の動作確認が完了したことで、macOS上に、クリーンで実践的なPython開発環境が整いました。
C++
プログラミング言語
プログラミング言語について
あなたが日本語しか話せないのに、英語しか話せない人に何かを伝えようとする場面を想像してみてください。身振り手振りでは複雑なことは伝わらず、もどかしい思いをするでしょう。実は、私たち人間とコンピューターの間にも、これと似たような、しかしもっと根本的な「言葉の壁」が存在します。コンピューターは、私たちが日常的に使う日本語や英語のような「自然言語」を、そのままでは一切理解できません。どれだけ丁寧に話しかけても、コンピューターにとっては意味のない音や文字の羅列に過ぎないのです。このコミュニケーションの断絶こそが、プログラミングを学ぶ上で最初に理解すべき、最も重要な課題です。その「言葉の壁」を乗り越えるために発明されたのが、プログラミング言語です。人間とコンピューターの間に立ち、両者の言葉を仲立ちしてくれる「優秀な通訳」のような役割を果たします。そして、この通訳(プログラミング言語)を使って書かれた「コンピューターへの命令書」こそが、プログラムなのです。
仕組みはとてもシンプルです。人間がやりたいこと(命令)を、プログラミング言語という共通の言葉で書き、コンピューターがそのプログラミング言語を理解して、命令通りに動く。この「通訳」を介することで、私たちは初めてコンピューターと正確な意思疎通ができるようになります。
プログラミング言語は、私たちが知る外国語とは決定的に違う、ある特徴を持っているのです。
プログラミング言語の学習は、英語のような外国語を学ぶこととは全く異なります。なぜなら、プログラミング言語の文法は、私たちが話す自然言語よりも、はるかに単純に設計されているからです。プログラミング学習の要点は、実はたったの3つに集約されます。
・覚える単語が少ない
外国語なら何千、何万という単語を覚える必要がありますが、プログラミングはまず「10個か20〜30個程度の命令と記号」を覚えれば、簡単なプログラムを書き始められます。
・文法がシンプル
自然言語のように、曖昧な表現や複雑な言い回しは存在しません。コンピューターが誤解しないよう、すべての命令は一つの意味しか持たない、非常に厳格で単純な構造になっています。
・すべてを暗記する必要はない
「ライブラリ」と呼ばれる便利な“素材セット”が用意されており、これを使えば初心者でも複雑な機能を持つプログラムを作ることができます。現役のプロでさえ、すべてを暗記しているわけではありません。彼らも日常的に「調べながら(ググりながら)」作業を進めるのが当たり前なのです。プログラミングにおいて「必要な情報を正確に探し出す能力」は、暗記力以上に重要なスキルと言えます。
- Python
- C++
問題解決
エラー解決
エラーが発生したとき、自分の書いたソースコードを1行目から漫然と眺め、「どこかに打ち間違いがあるはずだ」と自力だけで解決しようとする。しかし、この「当てずっぽうな確認」は、地図を持たずに暗闇を彷徨うようなもので、非常に効率が悪い作業です。エラーが発生した際、コンピュータは必ず「どこが、なぜダメなのか」というヒントを出力しています。エラー解決とは、このヒントという名の地図を読み解く証拠に基づいたデバッグ(Evidence-based Debugging)なのです。
エラー解決の全体像(4つのステップ)
エラーメッセージを正しく読む:コンピュータからの報告を解読する
ネットで検索する:世界中のエンジニアの知恵を借りる
公式ドキュメントで裏付ける:技術の「正しい仕様」を確認する
効果的に質問する:情報の整理を行い、他者の助力を得る
なぜコードを見直すだけでは不十分なのでしょうか。それは、エラーの正体が「文法ミス」だけでなく、「ライブラリの仕様誤認」や「環境の問題」である場合、コードを眺めているだけでは一生答えに辿り着けないからです。エラーメッセージという「答えへの地図」を無視してはいけません。
【STEP 1】エラーメッセージを「正しく」解読する
エラーが出た際、最優先でやるべきことは「エラーメッセージを読み解くこと」です。、見るべきポイントは2つの核心情報に絞られます。
発生場所の特定 (Traceback) 「Traceback(トレースバック)」と呼ばれるブロックを確認してください。ここには、「どのファイルの何行目」でエラーが起きたのかが明記されています。
原因の理解 (Cause) 最も重要な情報は、メッセージの「一番最後」に書かれています。初心者はメッセージの冒頭で読むのを止めてしまいがちですが、エラーの種類(TypeErrorやIndexErrorなど)と具体的な理由は、常に末尾に出力されることを覚えておきましょう。
英語への抵抗感をなくすための「即時翻訳術」
エラーメッセージは英語ですが、完璧に理解する必要はありません。
Google 翻訳へペースト:
メッセージをそのままコピーして翻訳にかけるだけで、原因はほぼ特定できます。
Google Chrome の右クリック翻訳:
検索後のサイト閲覧でも、ブラウザ上で右クリックし「日本語に翻訳」を選択すれば、英語の技術情報を瞬時に日本語で把握できます。
【STEP 2】賢い検索キーワードの作り方
原因を把握しても解決法が思い浮かばない時は、ネットの力を借ります。効率的に情報を引き出すためのキーワード構成を覚えましょう。
状況別の検索キーワード例
| 検索対象 | 推奨キーワード構成 | 理由(何がわかるか) |
| 特定のライブラリ | [ライブラリ名] + [エラー名] | ライブラリ特有の仕様やバグが判明する |
| 特定の操作 | [操作名] + [エラー名] | ファイル操作等、状況特有の解決策が見つかる |
| 一般的なエラー | [エラーメッセージをそのまま] | 構文ミスや基本的な使い方の誤りがわかる |
例: Requests ConnectionError や SimpleGUI FileNotFoundError
英語情報の圧倒的な量と鮮度
プログラミングの世界では、日本語の情報よりも英語の情報の方が圧倒的に多く、かつ最新です。主要リソースの歩き方
Stack Overflow(スタック・オーバーフロー)
世界最大級のプログラミングQ&Aサイトです。情報の信頼性は以下の指標で判断します。
アップボート(数値):回答の横にある数字は、世界中のエンジニアによる「評価」です。プラスの数値が高いほど、多くの人が「正しい」と認めた解決策です。
緑のチェック(ベストアンサー):質問者が「これで解決した」と公式に認めた回答です。まずここを読むのが鉄則です。
GitHub Issues(ギットハブ・イシュー)
ここは「プログラムのバグや課題を報告し、開発者と相談する場所」です。
高価値なインサイト:もしライブラリ自体の不具合(バグ)が原因だった場合、どれだけ自分のコードを直しても解決しません。GitHub Issuesでは「現在発生しているバグ」とその「回避策」が議論されており、個人のブログにはない最新情報が手に入ります。
【STEP 3】公式ドキュメントで「正解」を裏付ける
Q&Aサイトやブログの情報はあくまで「誰かの解決事例」に過ぎません。最終的にその技術がどう動くべきかという「契約」を記しているのは、公式ドキュメントです。
全部読む必要はない「ピンポイント検索術」
ドキュメントは膨大ですが、辞書のように必要な部分だけを引けば十分です。
使用している関数・モジュールを狙い撃つ:例えば Requests でエラーが出たなら、そのライブラリのドキュメントで、使っている関数の「引数(渡すべきデータ)」や「戻り値(返ってくるデータ)」を確認します。
具体例との照らし合わせ:json モジュールや SimpleGUI などの具体例を公式ドキュメントで確認し、自分のコードが「公式の推奨する使い方」から外れていないかをチェックします。
【STEP 4】効果的な「質問」の作法
自力で調べ尽くしても解決しない場合は、誰かに質問しましょう。回答者が即座に状況を理解できる「情報の整理」が、早い解決への近道です。
質問に含めるべき「4つの必須要素」チェックリスト
・ソースコード:エラー箇所だけでなく、関連する範囲を提示する
・実行環境・状況:何をしようとして、どんな操作をしたか
・エラーメッセージ:Tracebackを含め、出力された内容を省略せずそのまま
・試したこと:検索して何を見つけ、何を試してダメだったか
質問リソース
Stack Overflow 日本語版 / teratail:日本語で質問できる信頼性の高いコミュニティです。エラーを成長の糧にするために
エラーは「失敗」ではありません。あなたの知識の穴を埋め、スキルを一段引き上げるための「最高の教材」です。
メッセージの末尾を読み
ライブラリ名とセットで検索し
公式ドキュメントで正しい仕様を裏付け
情報を整理して質問する
この4ステップを繰り返すことで、エラー解決のスピードは飛躍的に向上します。
実践的質問テンプレート
【Markdown形式】技術質問用テンプレート
## 【発生している問題・事象の要約】
-
## 【期待する動作 (Expected Behavior)】
- 本来どのようになることを想定していたか:
## 【エラーメッセージとトレースバック】
- 種類と内容:
- 発生場所(ファイル名、行番号):
- 出力内容:
(ここにエラー内容をそのままコピー&ペースト)
## 【再現手順 (Reproduction Steps)】
1.
2.
3.
## 【ソースコード】
- 該当箇所とその周辺:
(```で囲んで記載。使用ライブラリ等も明記)
## 【実行環境】
- 使用言語・バージョン:
- 関連ライブラリ:
- OS/環境:
## 【試したことと結果(調査履歴)】
- 検索キーワード/URL:(例: [Library] + [Message], Stack OverflowのURL等)
- 実施した内容:
- 結果と考察:(「〇〇を試したが、××という別のエラーが出た」等、具体的かつ客観的に)
「試したこと」を記述する戦略的意義(XY問題の回避)
「何を試して、どうダメだったのか」を具体的に記すことは、回答者が同じ失敗ルートを辿る「バックトラック」を未然に防ぎ、30分〜60分の無駄なやり取りをカットします。また、これにより「手段の目的化(XY問題)」に陥っている可能性を第三者が指摘しやすくなり、本質的な解決へと最短距離で到達できるのです。
Webデザイン言語
- HTML (HyperText Markup Language): ページの骨組みを作る(Webの標準マークアップ言語)。
- CSS (Cascading Style Sheets): 色、配置、フォントなどの見た目(デザイン)を作る。
- Java Script : 動きやインタラクション(クリックした時の動作など)を作る。