【プログラミング】最短で「本格自作」へ!初心者向けプログラム開発ガイド

勉強
この記事でわかる事

初心者でも作れる本格的プログラムの作り方がわかります。

みなさんこんにちは、syuyaです。

この記事では、初心者でも作れる本格的なプログラムをご紹介しています。

プログラミングを学び始めたとき、多くの人が最初につまずくのは「何を作ればいいのか分からない」という点です。

文法や構文を覚えても、実際に動くプログラムを作れなければ面白さは実感しにくいもの。

そこで本記事では、初心者でも確実に完成させられ、しかも“本格的に使える”プログラムを題材に、作り方の流れや考え方を丁寧に解説します。

最初の一歩で「動くものを作れた」という成功体験を得られれば、プログラミングは一気に楽しくなります。

あなたの最初の作品づくりを、ここから始めてみましょう。


関連記事


■ 最初に作るのに最適な「本格的プログラム」

ここでは、最初でも作れて、かつ現実に役立つプログラムを紹介します。

① タスク管理アプリ(CLI版)

シンプルですが、データ保存・読み込み、CRUD処理(追加・表示・更新・削除)、例外処理など、プログラミングの基本を“全部”踏めます。

小規模なのに本格的で、ポートフォリオにもできます。

作る流れ

「タスク管理アプリ(CLI版)」を作る流れは、単にコードを書く手順ではなく、実際のソフトウェア開発と同じ思考プロセスを体験するための工程です。

最初に「何ができるアプリなのか」を言語化し、次に機能を分解し、最後にそれらをコードとして組み上げていきます。

この順序を踏むことで、行き当たりばったりの実装ではなく、設計に基づいたプログラミングが身につきます。

小規模ながら、仕様策定・データ設計・処理の分離といった本格的な開発の基礎を学べるのが、このアプリの大きな価値です。

1. 仕様を決める

最初に行うのは、「このプログラムで何を実現したいのか」を明確にすることです。

ここを曖昧にしたまま書き始めると、機能が増えすぎたり、構造が破綻したりしやすくなります。

小規模なCLIアプリであっても、仕様を文章として整理することが、実務的な開発では非常に重要です。

今回のタスク管理アプリでは、「日常的に使える最低限の機能」に絞ります。

具体的には、タスクを登録し、現在の状態を確認し、不要になったタスクを整理できることを目的とします。

GUIやネットワーク機能は持たせず、コマンドライン上で完結する設計にすることで、処理の流れやデータの扱いに集中できます。

この段階では、どう実装するかは考えません

「利用者は何ができるのか」「どのような操作が想定されるのか」を中心に整理することで、後続の設計と実装がスムーズになります。

今回のプログラムの仕様
  • タスクを追加
  • 一覧表示
  • 完了フラグを付ける
  • 削除
  • データはJSONで保存
2.プログラム構成

仕様が決まったら、次に「プログラム全体をどのような部品で構成するか」を考えます。
これは、いきなりコードを書く前に行う設計作業にあたります。

規模が小さいCLIアプリであっても、ファイル構成や役割を整理しておくことで、可読性と保守性が大きく向上します。

今回のタスク管理アプリでは、構造をできるだけシンプルに保ちます。

処理の中心となる実行ファイルと、データを保存するファイルを分けるだけでも、「処理」と「データ」の責務を分離できます。

この考え方は、後にWebアプリや大規模システムを作る際にもそのまま通用します。

まずは、アプリケーション本体を担うファイルと、タスク情報を永続化するファイルを用意します。

どのファイルが何を担当するのかを意識して構成を決めておくことで、機能追加や修正を行う際にも迷いにくくなります。

今回のプログラムの構成
task_manager/
  ├── main.py
  └── tasks.json
3. 実際のサンプルコード(Python)

ここでは、これまでに決めてきた仕様とプログラム構成をもとに、実際に動作するタスク管理アプリの完成形を示します。

import json
import os

FILE = "tasks.json"

# データ読み込み
def load_tasks():
    if not os.path.exists(FILE):
        return []
    with open(FILE, "r", encoding="utf-8") as f:
        return json.load(f)

# データ保存
def save_tasks(tasks):
    with open(FILE, "w", encoding="utf-8") as f:
        json.dump(tasks, f, ensure_ascii=False, indent=2)

def add_task(title):
    tasks = load_tasks()
    tasks.append({"title": title, "done": False})
    save_tasks(tasks)
    print("タスクを追加しました。")

def list_tasks():
    tasks = load_tasks()
    for i, t in enumerate(tasks):
        status = "✔" if t["done"] else "✘"
        print(f"{i}: [{status}] {t['title']}")

def complete_task(index):
    tasks = load_tasks()
    tasks[index]["done"] = True
    save_tasks(tasks)
    print("完了にしました。")

def delete_task(index):
    tasks = load_tasks()
    tasks.pop(index)
    save_tasks(tasks)
    print("削除しました。")

def main():
    while True:
        print("\n=== タスク管理 ===")
        print("1. 一覧表示")
        print("2. 追加")
        print("3. 完了にする")
        print("4. 削除")
        print("5. 終了")

        choice = input("> ")

        if choice == "1":
            list_tasks()
        elif choice == "2":
            title = input("タイトル: ")
            add_task(title)
        elif choice == "3":
            index = int(input("番号: "))
            complete_task(index)
        elif choice == "4":
            index = int(input("番号: "))
            delete_task(index)
        else:
            break

if __name__ == "__main__":
    main()

このコードは、学習用の簡易サンプルでありながら、実務でも通用する考え方を多く含んでいます。

特徴的なのは、

  • データの読み書きを関数として分離している点
  • 1つの処理に1つの役割を持たせている点
  • ユーザー入力を起点に処理が分岐する構造になっている点

です。

これらは、小規模なCLIアプリであっても非常に重要な設計思想です。

このプログラムでは、

  • タスクの追加
  • 一覧表示
  • 完了状態の更新
  • 削除
  • データの永続化(JSONファイル)

といった、現実的なアプリケーションに必要な要素を一通り実装しています。

単に「動くコード」ではなく、「あとから読んでも理解しやすく、拡張しやすいコード」を意識した構成になっています。

また、main() 関数を入口にすることで、プログラム全体の流れが一目で分かるようになっている点も重要です。
これは、後にファイル分割やクラス設計を行う際の土台になります。

このサンプルコードをそのまま写すだけで終わらせず、

  • 処理の流れを追う
  • 各関数の役割を言葉で説明してみる
  • 自分なりに機能を1つ追加してみる

といった使い方をすることで、「プログラムを読む力」と「設計する感覚」の両方を養うことができます。

ここからが、本当の意味での「プログラミングのスタート」です。

② Webスクレイピング + 自動レポート生成プログラム

Webスクレイピングとは、Webサイト上に公開されている情報をプログラムで取得し、必要な形に加工する技術です。

そこに「自動レポート生成」を組み合わせることで、

  • 情報収集
  • データ抽出
  • 整形・分析
  • 出力(文章・表・ファイル)

という、実務で使われる処理の流れを一通り経験できるプログラムになります。

単に画面に表示して終わりではなく、「取得した情報を、人が読めるレポートとしてまとめる」という点が、本格的である理由です。

なぜ「最初に作る本格プログラム」として優秀なのか

このプログラムでは、以下の要素を自然に扱うことになります。

  • 外部データ(Web)とのやり取り
  • HTTP通信
  • HTML構造の理解
  • 例外処理(通信失敗・構造変更)
  • データの整形
  • ファイル出力

これは、業務ツール・自動化スクリプト・データ分析の基礎そのものです。

じゃんけんや数当てゲームでは絶対に触れない領域であり、「プログラミングで現実の問題を解決している感覚」を初めて得やすい題材です。

まず決めるべき仕様(ここが重要)

いきなりコードを書く前に、次のような仕様を決めます。

例:ニュース自動レポートの場合
  • どのサイトから取得するか
  • 何の情報を抜き出すか
    • 見出し
    • 日付
    • カテゴリ
  • 何件取得するか
  • どんな形式で出力するか
    • ターミナル表示
    • txt
    • markdown
    • CSV

この「仕様決め」が、プログラムを本格的にする最大のポイントです。

プログラム全体の流れ(設計)

処理の流れは、ほぼ次の5段階に分かれます。

  1. Webページを取得する
  2. HTMLを解析する
  3. 必要な情報だけを抽出する
  4. データを整形する
  5. レポートとして出力する

この流れを意識して作ることで、コードが破綻しにくくなります。

実装例(ニュース取得+レポート生成)

使用ライブラリ

このプログラムでは、Pythonの標準ライブラリだけでは不足する機能を補うために、外部ライブラリを利用します。

そのため、実際にコードを書く前に、必要なライブラリをインストールする作業が必要になります。

以下のコマンドは、そのための準備作業を行うものです。

pip install requests beautifulsoup4

このコマンドは、Pythonのパッケージ管理ツールである pip を使って、
requestsbeautifulsoup4 の2つのライブラリを同時にインストールします。

requests はWebページを取得するためのライブラリで、URLを指定するだけでHTTP通信を行い、Web上の情報をプログラムから扱えるようにします。

beautifulsoup4 はHTMLを解析するためのライブラリで、取得したWebページの構造を読み取り、必要な要素だけを抽出する役割を担います。

このコマンドを一度実行すれば、以降はどのプログラムからでもこれらのライブラリを利用できます。

実務でも同様に、「環境構築 → ライブラリ導入 → 実装」という流れで開発が進むため、
この工程自体が本格的なプログラミング体験の一部となります。

① Webページ取得

この工程では、インターネット上のWebページをプログラムから取得する処理を行います。

人間がブラウザでページを開くのと同じことを、コードで自動的に行うイメージです。

Webスクレイピングにおいて最も基本であり、外部世界とプログラムをつなぐ重要なステップです。

使用するのは、先ほど紹介した requests ライブラリです。

これにより、複雑な設定を意識することなく、シンプルな記述でHTTP通信を行えます。

import requests

url = "https://news.yahoo.co.jp/"
response = requests.get(url)
html = response.text

まず import requests によって、Web通信機能をプログラム内で使えるようにします。

次に url 変数に、取得したいWebページのURLを文字列として指定します。

requests.get(url) は、そのURLに対してHTTPのGETリクエストを送信します。これは「このページの内容をください」という要求をサーバーに送る処理です。

その結果として返ってきたレスポンスが、response 変数に格納されます。

response.text には、取得したWebページのHTML内容が文字列として入っています。

この時点では、まだ人間がブラウザで見る前の生のHTMLデータであり、次の工程である「HTML解析」の入力データになります。

この段階で重要なのは、

  • Webページ取得は必ず成功するとは限らない
  • ネットワークやサーバーに依存している

という点です。

そのため実務では、通信エラーやステータスコードの確認を行うことも多く、後のステップで例外処理を追加していく余地があります。

この「Webページ取得」が正しく行えて初めて、スクレイピングやレポート生成といった後続の処理が意味を持つようになります。

② HTML解析

この工程では、取得したWebページのHTMLを解析し、構造として扱える状態に変換します。
Webページは一見すると文章の集合に見えますが、実際にはタグによって構造化されたデータです。
HTML解析とは、この構造をプログラムから理解し、操作できるようにする作業を指します。

Webスクレイピングでは、「ページを取得する」だけでは不十分です。
必要な情報を正確に取り出すためには、HTMLを構造として捉える視点が欠かせません。

使用するのは、先ほどインストールした BeautifulSoup ライブラリです。
これを使うことで、HTMLをツリー構造として扱えるようになります。

from bs4 import BeautifulSoup

soup = BeautifulSoup(html, "html.parser")

まず from bs4 import BeautifulSoup によって、HTML解析用のクラスを読み込みます。

次に BeautifulSoup(html, "html.parser") を使って、先ほど取得した html を解析します。

ここで指定している "html.parser" は、「この文字列はHTMLとして解析してください」という指定です。

Pythonに標準で含まれている解析エンジンを使うため、追加設定は不要です。

この処理によって生成される soup は単なる文字列ではなく、HTMLの構造を保持したオブジェクトになります。

以降は、この soup を使って、

  • 特定のタグを探す
  • 条件に合う要素だけを取得する
  • 入れ子構造を辿る

といった操作が可能になります。

重要なのは、この時点では「何を取り出すか」はまだ決めていないという点です。

HTML解析の役割は、情報を取り出しやすい形に変換することであり、実際のデータ抽出は次の工程で行います。

また、WebページのHTML構造は、

  • サイトごとに異なる
  • デザイン変更で変わる

という特徴があります。

そのため、HTML解析では「見た目」ではなくタグ構造を確認しながら処理を書く意識が非常に重要になります。

この「HTML解析」が正しく行われていることで、次の工程である「情報抽出」を、安定して実装できるようになります。

③ 情報抽出

この工程では、HTML解析によって構造化されたデータの中から、必要な情報だけを取り出します

Webスクレイピングにおいて、最も「判断力」が求められる工程です。

HTML解析によって soup オブジェクトが生成された時点では、ページ全体の情報がそのまま含まれています。

情報抽出では、その中から

  • どの要素が目的の情報なのか
  • どの情報は不要なのか

を明確に区別し、必要なものだけを選び出します。

使用するのは、BeautifulSoup が提供する 検索機能です。
代表的なのが、CSSセレクタを使った要素取得です。

titles = soup.select("a")[:10]

news_list = []
for t in titles:
    text = t.get_text(strip=True)
    if text:
        news_list.append(text)

まず soup.select("a") によって、HTML内のすべての <a> タグ(リンク要素)を取得しています。

この時点では、ニュース見出し以外のリンクも多数含まれています。

[:10] は、取得した要素のうち先頭10件だけを対象にする指定です。これは、「取得件数を制限する」という実務でもよく行われる処理です。

次に for 文で各要素を一つずつ処理します。

get_text(strip=True) は、タグの中身のテキストだけを取り出し、前後の不要な空白を除去するメソッドです。

if text: で空文字を除外しているのは、見出しとして意味のあるデータだけを残すためです。

この工程で重要なのは、「正確さ」と「柔軟さ」のバランスです。

  • 厳密すぎると、サイト構造変更で壊れやすい
  • 雑すぎると、不要な情報が混ざる

そのため情報抽出は「一度作って終わり」ではなく、実際の取得結果を見ながら調整する工程でもあります。

この段階で、「Webページから意味のあるデータを取り出せた」という実感を得られるようになります。

④ レポート生成

この工程では、抽出した情報を、人が読める形にまとめて出力します。ここで初めて、プログラムの成果物が明確な形になります。

Webスクレイピングの目的は、情報を集めること自体ではなく、活用できる形に変換することです。

レポート生成は、その最終段階にあたります。

今回は、もっともシンプルで汎用性の高いテキストファイル(.txt)として出力します。

with open("report.txt", "w", encoding="utf-8") as f:
    f.write("■ 本日のニュースレポート\n\n")
    for i, title in enumerate(news_list, 1):
        f.write(f"{i}. {title}\n")

まず open() を使って、report.txt というファイルを「書き込みモード」で開きます。
encoding="utf-8" を指定することで、日本語の文字化けを防ぎます。

その際にwith 構文を使うことで、処理終了時に自動でファイルが閉じられるため、安全性が高くなります。

最初にレポートのタイトルを書き込み、その後 for 文でニュース見出しを1件ずつ書き出します。

またenumerate(news_list, 1) を使うことで、番号付きの一覧形式にしています。

これは、人間が読みやすいレポートを意識した設計です。

この工程で意識すべきポイントは、「プログラム目線」ではなく「利用者目線」です。

  • 見出しは分かりやすいか
  • 並び順は自然か
  • 形式は再利用しやすいか

こうした視点を持つことで、単なるスクリプトから「実用ツール」へと格上げされます。

この「レポート生成」があることでWebスクレイピングは

自動取得 → 自動整理 → 自動成果物作成

という、本格的な処理フローを完成させることができます。

このプログラムが「本格的」だと言える理由

この時点ですでに、

  • 外部環境に依存する
  • データ構造を扱う
  • 失敗する可能性を考慮する
  • 再利用可能な処理を書く

という、実務そのものの思考をしています。

規模は小さくても、考えていることは業務用ツールと同じです。

ここからの発展(非常に重要)

このプログラムは、簡単に次の段階へ進化できます。

  • 定期実行(cron / タスクスケジューラ)
  • CSV・Excel出力
  • グラフ生成
  • メール自動送信
  • 株価・為替・天気への応用
  • API取得への移行

つまり、「学習用プログラム」から「実用ツール」へ自然に成長するのです。

初心者がここまで作れたら

このレベルのプログラムを自力で理解・改造できるなら、もう「じゃんけんしか作れない初心者」ではありません。

  • 処理の流れを設計できる
  • 外部データを扱える
  • 成果物を残せる

これは、確実に次の段階に進める状態です。

③ API を使ったチャットボット

この項目では、外部APIと連携するチャットボットプログラムを扱います。

これは、これまでのCLIツールやスクレイピングより一段階レベルが上がった、「現代的で本格的なプログラム」です。

APIを使うということは、自分のプログラム単体では完結せず、外部サービスと通信しながら動作するということを意味します。

これは、Webサービス、スマホアプリ、業務システムなど、ほぼすべての実用ソフトウェアに共通する考え方です。

チャットボットとは何か

チャットボットとは、ユーザーからの入力を受け取り、それに応じた返答を返すプログラムです。

単純なオウム返しから、

  • 辞書データベースを使った応答
  • ルールベースの会話
  • AI API を使った自然な対話

まで、幅広い実装が可能です。

最初に作る本格的なプログラムとしては、
「APIを呼び出して返ってきた結果を、そのまま利用者に返す」
という形が非常に分かりやすく、学習効果も高くなります。

なぜ API チャットボットが本格的なのか

このプログラムでは、次のような要素を自然に扱うことになります。

  • HTTP通信
  • APIキーの管理
  • JSON形式のデータ処理
  • 外部サービスへの依存
  • エラーや制限を考慮した設計

これは、
実務で「サービスを作る側」になるための必須スキルです。

単なるローカルプログラムと違い、
「通信が失敗する可能性がある」
「相手側の仕様に従う必要がある」
という前提でコードを書く必要があります。

この点が、APIを使ったプログラムを一気に“本格的”にしています。

プログラム全体の流れ(設計)

APIチャットボットは、基本的に次の流れで動作します。

  1. ユーザーから入力を受け取る
  2. 入力内容をAPIに送信する
  3. APIから返ってきたデータを解析する
  4. 返答として整形し、表示する

この流れは、Webアプリやスマホアプリの内部処理とほぼ同じです。

使用する主な技術要素

  • requests(API通信)
  • JSONデータの送受信
  • 関数による処理分離
  • ループによる対話継続

ここまで来ると、「ただのプログラミング練習」ではなく、「サービスの最小実装」になります。

実際のサンプルコード(シンプルなAPIチャットボット)

以下は、APIを使う構造を理解するための、非常に簡略化した例です。

import requests

API_URL = "https://example.com/api/chat"

def send_message(message):
    payload = {"message": message}
    response = requests.post(API_URL, json=payload)
    data = response.json()
    return data["reply"]

def chatbot():
    print("チャットボットを開始します(終了は exit)")
    while True:
        user_input = input("あなた: ")
        if user_input == "exit":
            break
        reply = send_message(user_input)
        print("Bot:", reply)

chatbot()

このコードでは、

  • ユーザー入力をAPIに送信
  • APIの返答(JSON)を解析
  • 返答部分だけを取り出して表示

という、API連携プログラムの基本形を体験できます。

この段階で意識すべきポイント

重要なのは、「チャットの賢さ」ではなく「構造」です。

  • 入力と処理が分離されているか
  • API通信が1か所にまとまっているか
  • 失敗した場合にどうなるか

こうした点を意識することで後にどんなAPIを使っても応用できる力が身につきます。

発展するとどうなるか

このチャットボットは、以下のように発展させられます。

  • 実在するAI APIへの接続
  • 会話履歴の保存
  • 感情分析
  • Web版チャットUI
  • Discord / LINE Bot への応用

つまり、小さく作って、大きく育てられるプログラムです。

この項目の位置づけ

③APIを使ったチャットボットは、

  • ① タスク管理(設計と永続化)
  • ② スクレイピング(外部データ取得)

を踏まえた上で挑戦すると、理解が非常に深まります。

ここまで作れるようになればもう「基礎をなぞっている段階」ではありません。

実用ソフトウェアの入口に、確実に立っていることになります。

④ ミニゲーム「数当てゲーム(高度版)」

この項目では、一見すると単純に見える「数当てゲーム」を、本格的なプログラムとして再設計することを扱います。

いわゆる「じゃんけん」や「数を当てるだけ」の例題とは異なり、設計・状態管理・ロジック分離を意識した、実務的なミニゲームを目指します。

ミニゲームは「簡単な題材」だからこそプログラミングの本質である「ルールをコードで正確に表現する力」が如実に表れます。


数当てゲームとは何か(再定義)

数当てゲームとは、プログラムが用意した答えを、ユーザーが試行錯誤しながら当てるゲームです。

初歩的な例では、

  • ランダムな数字を生成
  • 入力と比較
  • 当たったら終了

で終わります。

しかし「高度版」では、ここに以下の要素を追加します。

  • 試行回数の管理
  • 難易度設定
  • 入力値のバリデーション
  • ヒントロジック
  • ゲーム状態の明確な分離

これにより、「動くおもちゃ」から「設計されたプログラム」へ進化します。

なぜ「高度版」が本格的なのか

このゲームでは、次のような要素を自然に扱います。

  • 乱数生成
  • 条件分岐の設計
  • 状態(ゲーム進行)の管理
  • 例外的入力への対応
  • ループ制御

これらはすべて、業務アプリケーションやサービス開発の基礎でもあります。

特に重要なのは、「ゲームが今どの状態にあるのか」をプログラムが正しく把握しているかという点です。

これは、ログイン状態、処理フェーズ、ワークフロー管理といった実務の考え方と直結しています。

プログラム全体の流れ(設計)

高度版・数当てゲームは、次の流れで構成されます。

  • ゲーム設定を決定する
  • 正解となる数値を生成する
  • ユーザー入力を受け取る
  • 入力値を検証する
  • 正解かどうか判定する
  • ヒントや結果を表示する
  • ゲーム終了条件を判定する

この流れを意識することで、処理の順序が明確になり、コードが破綻しにくくなります。

使用する主な技術要素

  • random(乱数生成)
  • while / if による制御
  • 関数による役割分担
  • 状態を表す変数
  • 入力チェック(例外処理)

この数当てゲーム(高度版)では、シンプルなゲームでありながら、プログラミングの基礎から一段踏み込んだ要素を自然に扱います。

主に、次のような技術要素が登場します。

乱数生成(random モジュール)

正解となる数値を毎回ランダムに生成することで、ゲーム性と再挑戦性を生み出します。

これにより、「プログラムが毎回同じ結果を返すものではない」という重要な考え方を学べます。

条件分岐(if / elif / else)

入力された数が、「正解か」「大きいか」「小さいか」を判定し、適切なヒントを返します。

条件分岐は、ゲームロジックそのものを形作る中核要素です。

ループ処理(while)

プレイヤーが正解するまでゲームを継続させるために、ループ処理を使用します。

これにより、「何度も入力を受け付ける」「途中で終了する」といった、対話型プログラムの基本構造を理解できます。

状態管理(試行回数・制限回数)

高度版では、試行回数のカウント、制限回数の設定、スコアや評価の表示などを扱います。

これは、プログラムが内部で状態を持ち、それを更新し続けるという実用的な考え方を学ぶための重要な要素です。

入力チェックとエラー対策

数値以外が入力された場合の対処など現実的なユーザー入力への対応も行います。

この段階で「理想的な入力だけが来るとは限らない」という、実務に直結する視点が身につきます。

関数による処理の整理

「ゲーム開始処理」「入力受付」「判定ロジック」「結果表示」

といった処理を関数に分けることでコードの可読性と再利用性を高めます。

これは、小さなプログラムでも設計を意識するという訓練になります。

このように、数当てゲーム(高度版)は一見シンプル、しかし中身は非常に学習密度が高いプログラムです。

ここまで理解して作れるようになれば「文法を覚えている段階」を超え、考えて組み立てるプログラミングに確実に入っています。

実際のサンプルコード(高度版 数当てゲーム)

import random

def play_game(max_number, max_try):
    answer = random.randint(1, max_number)
    tries = 0

    print(f"1〜{max_number} の数を当ててください。")
    print(f"挑戦回数は {max_try} 回までです。")

    while tries < max_try:
        try:
            guess = int(input("数を入力: "))
        except ValueError:
            print("数値を入力してください。")
            continue

        tries += 1

        if guess < answer:
            print("もっと大きいです。")
        elif guess > answer:
            print("もっと小さいです。")
        else:
            print(f"正解です! {tries} 回で当たりました。")
            return

    print(f"残念。不正解です。答えは {answer} でした。")

play_game(100, 7)

このコードでは、

  • ゲームロジックを関数に分離
  • 入力エラーを例外処理で対応
  • 試行回数という「状態」を管理

といった、本格的な構造を取り入れています。

この段階で意識すべきポイント

重要なのは、「ゲームとして面白いか」よりも「構造が整理されているか」です。

  • 1つの関数が1つの役割を持っているか
  • 状態が変数で明確に管理されているか
  • 条件分岐が読みやすいか

これらを意識することで、どんなジャンルのプログラムにも応用できる力が身につきます。

発展するとどうなるか

この数当てゲームは、以下のように発展させられます。

  • 難易度選択メニュー
  • スコア記録(ファイル保存)
  • ランキング表示
  • GUI化
  • Webゲーム化

つまり、最小構成から、完成度の高い作品へ育てられる題材です。

📖関連書籍

スッキリわかるPython入門 第2版

この書籍は、筆者がプログラミング学習の最初の方で使用していた書籍です。

プログラミングの学習を始めて、別の入門書で一度挫折しかけていたのですが、この本でようやく光が見えました。

ここが良かった:

一番助かったのは、やっぱり「登場人物の会話形式」で進むところです。

自分がコードを書いていて「え、これってどういうこと?」と疑問に思うタイミングで、ちょうどキャラクターが同じ質問をしてくれるので、置いてけぼり感がありませんでした。

特に、リストとか辞書とかのデータ構造が苦手だったんですが、イラストや図解が豊富で、頭の中のイメージとコードが一致した感覚があります。

後半のオブジェクト指向のあたりは、さすがに一度読んだだけでは難しかったですが、何度も読み返して手を動かしているうちに「あ、こういうことか!」と繋がる瞬間があって、すごく嬉しかったです。

今の自分:

以前はコードを見ても「呪文」にしか見えませんでしたが、今はこの本を片手に、簡単なタスク管理ツールを自力で作れるまでになりました。

エラーが出ても、どこを見ればいいかのアタリをつけられるようになったのが、自分の中では大きな進歩です。

感想まとめ:

分厚い本なので最初は圧倒されますが、全部を一気に覚えようとしなくていいんだと思います。

初心者の私でも快適に学習できた、素晴らしい書籍だと思います。

Python1年生 第2版 体験してわかる!会話でまなべる!プログラミングのしくみ

一方、こちたの書籍は筆者が一番最初に使用したプログラミングの参考書籍となっています。

プログラミングって、黒い画面に難しい英語を打ち込むイメージがあってずっと避けていたんですが、この本のおかげでなんとか形になりました。

読んでみた率直な感想:

まず、中身がすごくカラフルで、ヤギ博士とフクロウくんの会話で進んでいくのが自分には合っていました。

他の本だと1ページ目から文字がびっしりで閉じたくなってしまうんですけど、これは絵本を読んでいるみたいな感覚で、スイスイ読み進められました。

一番の収穫:

一番嬉しかったのは、AI(人工知能)の簡単なプログラムを実際に作れたことです。

「自分でもAIなんて作れるの?」と半信半疑でしたが、本の手順通りに進めるだけで、カメの絵を動かしたり、写真を見て何が写っているか判定したり…。

「プログラミングってこういう仕組みなんだ!」という感覚が、理屈じゃなくて体験として分かったのが大きかったです。

こんな人におすすめしたい:

  • プログラミングの「プ」の字も分からない人
  • 難しい理論よりも、まずは動くものを作ってみたい人
  • 分厚い参考書を買って三日坊主になったことがある人(私です笑)

1冊ですべて身につくHTML & CSSとWebデザイン入門講座

上にご紹介した二冊は今人気のプログラミング言語であるPythonの参考書でしたが、こちらはHTMLとCSSというプログラミング言語の参考書となっています。

HTMLとCSSは主にwebサイトの構造として使用される言語です。

筆者はHTMLとCSSを学ぶ際に何から手をつければいいか分からず、Amazonで評判の良かったこの本を手に取りました。

結果的に、一冊目でこれを選んで本当に正解だったと思います。

ここが特によかった:

学習前、筆者はHTMLとかCSSに対して「地味で難しそう」というイメージを持っていました。

しかし、この本はとにかく解説が丁寧で、ただ指示通りに進めていくだけで、みるみるうちに「いかにも今風」なおしゃれなカフェのサイトが出来上がっていきます。

ただ指示に従っているだけで、一つのWebページが出来上がっていくのを見て、感動したのを覚えています。

特に「レスポンシブデザイン(スマホ対応)」の仕組みが、あんなにシンプルに説明されているのは驚きでした。

自分の書いたコードをスマホで確認して、ちゃんと崩れずに表示されたときは、思わず「おぉ…!」と声が出てしまいました。

苦労したところ:

もちろん全部が簡単だったわけじゃなくて、Flexboxとかの配置の部分は少し混乱して、何度もページを戻りました。

しかし、図解がとても綺麗なので、文字を読むというより「図を見て構造を理解する」感じで進められたのが、視覚的に分かりやすくて助かりました。

今の心境:

「勉強した!」というよりは「作品を一つ作り上げた!」という達成感の方が強いです。

ただコードを書くだけじゃなく、フォントの選び方や余白の取り方といった「デザインの基本」も学べるので、これから自分のポートフォリオを作ってみたいという人には自信を持っておすすめできます。

📖その他のプログラミング関連書籍

数多くのプログラミング関連書籍が発売されています。

下記のボタンをタップすれば、Amazonでプログラミングの参考書籍を検索する事が出来ます。

是非、みなさんに合った参考書を探してみてください!

まとめ

いかがでしょうか。

この記事では、初心者が書ける簡単な本格的プログラミングコードをご紹介しました。

ここまでお読みいただきありがとうございました。

コメント

タイトルとURLをコピーしました