この記事では、当社の新人エンジニア研修の参考として、Python を解説します。
第一章では、初めて Python を学ぶ皆さんが知っておきたい基本事項や考え方をまとめました。


新人エンジニアが最初に知っておきたい Python の学び方

なぜ Python を学ぶのか、その理由。


1. Python 言語の特徴

Python の特徴(または、当社新人エンジニア研修で Python を選択している理由)は以下の 4 点です。

  1. クロスプラットフォーム環境
    Python は Windows、macOS、Linux など各種 OS で公式のインタプリタが提供されており、どこでも実行可能です。
    ※Java の「JVM による Write once, run anywhere」とは異なり、Python は各 OS 用に配布されるインタプリタを利用します。
  2. 多様なプログラミングパラダイムのサポート
    Python はオブジェクト指向だけでなく、手続き型や関数型といった複数のパラダイムをサポートしており、プログラミングの基本概念を学ぶのに適しています。
  3. 幅広い活用分野
    データサイエンス、機械学習、Web アプリケーション、スクリプトによる自動化など、幅広い分野で利用されているため、どの部署に配属されても役立ちます。
  4. シンプルな文法と他言語への橋渡し
    文法がシンプルで読みやすく、初心者でも理解しやすい点はもちろん、他の言語(C、Java、JavaScript など)との共通概念も多いため、後々の他言語習得にも役立ちます。

調べてみましょう

なぜ様々なプログラミング言語が存在するのでしょうか?
例えば、以下のような点に着目して、インターネットで調べてみてください。

  • Python と C 言語との関係
    • Python の主要な実装である CPython は C 言語で書かれており、低レベルの処理や高速化のためのライブラリ実装に C/C++ の知識が役立ちます。
  • Python と C++ との関係
    • 数値計算や機械学習ライブラリ(例:NumPy、TensorFlow)の内部は C++ で実装されていることも多く、オブジェクト指向の基本概念は両言語で共通しています。
  • Python と Java との関係
    • 両言語はオブジェクト指向をサポートしていますが、Python は動的型付け・簡潔な記法で、開発速度やコードの読みやすさが特徴です。
      ※Java の静的型付けや厳格な構文ルールは Python には当てはまりません。
  • Python と JavaScript との関係
    • 両者とも初心者に人気があります。Python はサーバサイドやデータ処理に強みがあり、JavaScript は Web フロントエンドやイベント駆動型プログラミングが中心です。

あなたの推測:
(例:各言語は歴史的背景や設計思想、用途に応じて発展しており、その違いが存在する。)

調べたことのメモ:
(例:C 言語はシステムプログラミング向け、Java は大規模システム向け、Python は迅速なプロトタイピングやデータ解析に適している、など。)


2. Python プログラムの実行

Python では、プログラムコードは基本的にインタプリタによって直接実行されます。
内部的には、ソースコードが自動的にバイトコード(.pyc ファイル)にコンパイルされ、Python 仮想マシン(PVM)上で実行されますが、このプロセスはユーザーが意識する必要はほとんどありません。

例:Hello World プログラム

以下のコードをエディタに入力してみましょう。

print("Hello World")

注意点:

  • キーボードから入力する際、全角と半角の区別に注意してください。数値や英字は半角で入力する必要があります(IME の設定変更を行うなどの対策をお勧めします)。

保存先は、例えば C ドライブ直下の python フォルダなどに新規保存し、ファイル名は example01.py とします。

コマンドラインでの実行

以下のように実行してみましょう。

Success

This is a success alert.> python example01.py
Hello World


Python では、Java のようにソースコードからクラスファイルが生成される心配はなく、シンプルに実行できる点が特徴です。
また、今後は IDE(例:PyCharm、Visual Studio Code など)を活用すると、ワンクリックで実行できるため、より効率的に開発できます。


3. Python プログラムの構成

Python のプログラムは必ずしもクラスに囲まれる必要はなく、スクリプト形式で直接記述することが可能です。
しかし、プログラムが大きくなる場合は、関数やクラスを用いて論理的に整理するのが望ましいです。

例:main 関数を使った基本構成

def main():
    print("Hello World")

if __name__ == '__main__':
    main()

解説:

  • if __name__ == '__main__': は、このスクリプトが直接実行された場合にのみ main() を呼び出すための定型句です。
  • Java のように「public class」といった宣言は不要ですが、関数やクラスを用いることで、コードの再利用性や保守性が向上します。

4. オブジェクト指向のメリットとデメリット

オブジェクト指向 とは、データ(属性)とその処理(メソッド)をひとまとめにして扱う設計思想です。
Python はオブジェクト指向プログラミングをサポートしていますが、同時に手続き型や関数型プログラミングも可能な柔軟な言語です。

メリット

  • モジュール性の向上
    複雑なシステムを小さな部品(クラスや関数)に分割でき、メンテナンスが容易になる。
  • 再利用性の向上
    一度作成したクラスや関数は、他のプログラムでも再利用可能。
  • 現実世界の概念の反映
    オブジェクトという概念を用いて、現実のモノや概念をプログラムに近い形で表現できる。

デメリット

  • 初期設計の負担
    最初に設計を十分に行わなければならないため、短期間で試作する場合にはオーバーヘッドとなる可能性がある。
  • 動的型付けの注意点
    Python は動的型付けのため、プログラム規模が大きくなると型のチェックが甘くなり、バグの原因になる場合もある。

5. 本記事の方針

本記事では、Python の学習において以下の 3 つの「武器」を紹介します。

  1. 標準ライブラリ
    Python には非常に充実した標準ライブラリがあり、分からない関数やクラスがあれば公式ドキュメント(英語の場合も多い)を参照しましょう。
  2. Python のソースコード(CPython)
    Python 自体がオープンソースで提供されているため、実際の実装(CPython のソースコード)を読むことで内部動作を理解できます。
    ※Java のようにソースコードを読むことで「言語を言語自身から学ぶ」ことができますが、Python ではその実装は C 言語で書かれているため、注意が必要です。
  3. サンプルプログラム
    英語の例文集のように、サンプルコードを通して文法や概念を学ぶことができます。実際に手を動かしてコードを書いてみることで、理解が深まります。

また、プログラミング言語は国際語です。英語で書かれたドキュメントやソースコードに触れる習慣を身につけると、後々大きな武器となります。


6. クラスのメンバ(属性とメソッド)

Python におけるクラスは、オブジェクトの設計図です。
クラスは主に以下の 2 つの要素から構成されます。

  • 属性(フィールド)
    オブジェクトの状態やデータを保持する変数。Python では、クラス内で定義された変数がこれにあたります。
  • メソッド
    オブジェクトが持つ動作や処理を定義する関数。クラス内で定義された関数は、そのクラスのインスタンスメソッドとなります。

例:

class NewEmployee:
    # コンストラクタ(初期化メソッド)
    def __init__(self, name, department):
        self.name = name          # 属性: 名前
        self.department = department  # 属性: 所属部署

    # メソッド: 挨拶する
    def greet(self):
        print(f"こんにちは、{self.name}です。{self.department}に配属されました。")

※ Python では、属性やメソッドのアクセス制御は「_(アンダースコア)」の命名規則で暗黙的に行われ、Java のような public/private のキーワードはありません。


7. エラーを恐れない

プログラム開発ではエラーはつきものです。積極的にエラーを発生させ、その原因を探ることが上達の秘訣です。

再帰呼び出しの例

以下の例は、無限に再帰呼び出しを行うため、最終的にエラーとなります。

def main(args):
    main(["Hello"])  # 自分自身を呼び出す(再帰呼び出し)

if __name__ == '__main__':
    main([])

実行すると、Python は「RecursionError: maximum recursion depth exceeded」といったエラーメッセージを表示し、プログラムは終了します。
エラーメッセージには、どの行で何が起きたか重要な情報が含まれているので、必ず読んで理解する習慣をつけましょう。


8. プログラムはメモリ上にロードされて実行される

Python プログラムも、ソースコードがバイトコードに変換され、メモリ上にロードされて実行されます。
この過程を理解しておくと、プログラムの動作原理やエラー発生時の挙動、パフォーマンス最適化の際に役立ちます。

また、CPU はプログラムの命令を実行し、メモリ はデータの一時的な保管場所として機能します。これらの役割は、どのプログラミング言語でも共通の考え方です。


9. システムに必要な IPO

システムという概念は、「仕組み」を意味し、その基本構成は以下の 3 要素で成り立ちます。

  • Input(入力)
    ユーザーや他のシステムからの情報やデータ。
  • Process(処理)
    入力された情報を加工・解析し、目的の処理を実行。
  • Output(出力)
    処理結果を画面やファイル、他のシステムへ出力する。

例えば、Python で電卓プログラムを作成する場合、ユーザーから数値を入力(Input)し、計算処理を行い(Process)、結果を表示(Output)する、という流れになります。
このような IPO の考え方は、システム開発の基本であり、どの言語でも重要です。


10. コメントの入れ方

コメントは、コードに対する人間向けのメモです。Python では以下の方法で記述します。

  • シングルラインコメント
    行の先頭に # を付けることで、その行の残りをコメントにできます。
# Hello World を表示する
print("Hello World")
  • 複数行コメント(ドキュメンテーション文字列)
    3 つのシングルクォート(''')またはダブルクォート(""")で囲む方法です。主に関数やクラスの説明に使われます。
"""
この関数は、Hello World を表示します。
作成者: yamazaki
作成日: 20XX/11/09
"""
def main():
    print("Hello World")

コメントは、後で自分や他の人がコードを読み返すときの大切な手掛かりとなるため、積極的に記述しましょう。


11. エラーへの対処

Python では、エラーは大きく分けて以下の 3 種類に分類されます。

  1. 文法エラー(SyntaxError)
    プログラムが正しい文法で書かれていない場合、実行前にエラーが検出されます。
  2. 実行時エラー(RuntimeError)
    実行中に発生するエラー。例:ゼロ除算エラー、インデックスエラーなど。
  3. 論理エラー
    プログラムは実行されるが、期待した結果が得られないエラーです。
    ※論理エラーは、テストやデバッガを使って検出する必要があります。

エラーメッセージには、エラー発生箇所や原因が示されるため、必ずその内容を確認し、グーグル検索などで対策を調べましょう。


12. 標準出力

Python において、標準出力 とは、プログラムが結果を表示するための出力先(コンソールなど)を指します。
標準出力には print() 関数を使用します。

print("Hello World")

  • print() は自動的に改行を付けて出力します。
  • 改行が不要な場合は、end パラメータを利用できます(例:print("Hello", end=" "))。

標準出力を利用することは、デバッグやプログラムの動作確認にも非常に有効です。


まとめ

以上、Python の基本的な特徴や実行方法、プログラムの構成、オブジェクト指向の考え方、エラー処理、コメントの付け方、標準出力の利用方法などについて解説しました。
Java と比べると、Python は以下の点で異なります。

  • シンプルな文法と動的型付け
    → コードが読みやすく、初心者にも取り組みやすい。
  • コンパイルの概念がユーザーに隠蔽されている
    → ソースコードをそのまま実行できるため、環境構築が簡単。
  • クラスや関数の定義ルールが柔軟
    → Java のようにファイル名とクラス名を一致させる必要はない。

ただし、Java のような厳密な型チェックやアクセス修飾子は存在しないため、コードの規模が大きくなるときは、設計やテストに特に注意が必要です。

Python はそのシンプルさと多機能性から、初学者が最初に取り組むプログラミング言語としても、プロフェッショナルが活用する言語としても非常に有用です。ぜひ、この記事を参考に、Python の世界に飛び込んでみてください!


※補足
本記事は、Java 用に書かれた記事内容を Python 向けに置き換えたものであり、Java 特有の概念(JVM、JDK、public、static など)は Python には当てはまりません。各項目は Python の文法や概念に合わせて解説していますので、その点をご理解ください。

<まとめ:隣の人に正しく説明できたらチェックを付けましょう>

□ Pythonはオブジェクト指向プログラミングをサポートしており、データと処理をクラスやインスタンスにまとめることで、メンテナンスしやすいコードを実現できます。

□ 手続き型や関数型プログラミングといった他のパラダイムも併用できる柔軟さが特徴です。

□ Pythonは非常に充実した標準ライブラリ(標準API)を備えており、また、CPythonのソースコードが公開されているため、内部実装を学ぶことができます。

□ Pythonのクラスは、属性とメソッドを持ち、オブジェクトの状態や動作を定義します。また、属性を動的に追加・変更できるため、柔軟な設計が可能です。

□ プログラムはメモリ上にロードされて実行される
 
□ システムにはIPOが必要である
 
□ エラーメッセージをよく読む、メッセージをまるごとグーグル検索する

まとめができたら、アウトプットとして演習問題にチャレンジしましょう。