Pythonの勉強をしてるけど、そろそろ何か作ってみたいな。
でも何を作ったらいいか迷ってしまう。
プログラミングを学び始めると、最初は何を作ればいいのか迷うことが多いです。そんな時に、具体的なプロジェクトを持つことは学習を加速させ、モチベーションを維持するための良い方法です。この記事では、初心者でも簡単に作れるアプリを5つ紹介し、それぞれの作り方やコードの書き方、使い方、表示の仕方を詳しく説明します。
■本のご紹介
Python1年生 第2版 体験してわかる!会話でまなべる!プログラミングのしくみ
この本は筆者が初めてPythonを勉強するのに使用しました。
Pythonの基礎から簡単なアプリ、そして人工知能まで作れてしまう楽しい一冊です。キャラクターの楽しい会話形式が親しみがあり学習もはかどりました。
Pythonが初めての方にはおすすめです。
プログラミングスクールも気になる方は「【2024年最新版】プログラミングスクールPython講座10選を徹底比較」でPython講座を提供する優秀スクールの比較と選び方をご紹介しております。ぜひチェックしてください。
Pythonを使って初心者でも作れる簡単アプリ
Pythonで作れるアプリをご紹介します。全体のコードと説明がありますので、コピー&ペーストをして動作を確認したり、一からエディタにコードの記述をして説明と見比べたりと楽しんで取り組んでください。
- Hello Worldアプリ
- 簡単な計算機アプリ
- 天気情報取得アプリ
- シンプルなメモアプリ
- TODOアプリ
記事内ではVisual Studio Code(VS Code)のエディタを使用しています。下記を参考にアプリの実行環境を作ってください。
①Visual Studio Code(VS Code)をインストールする
- VS Code公式サイトからダウンロードしてインストールします。
②Python拡張機能をインストールする
- VS Codeを開き、左のサイドバーにある拡張機能(Extensions)アイコンをクリックします。
- 検索バーに「Python」と入力し、Pythonに関連した拡張機能をインストールします。
③新しいファイルを作成する
- VS Codeを開き、「ファイル」メニューから「新しいファイル」を選択します。
- 上記のコードをエディタに記述します。(コピー&ペーストでも構いません)
④ファイルを保存する
「ファイル」メニューから「名前を付けて保存」を選択し、
「(任意のファイル名).py
」という名前で保存します。(※ファイル名の後ろには「.py」を忘れないようにしてください)
⑤Pythonファイルを実行する
VS Codeのショートカットキーで実行します。
- F5
- Windows: Ctrl+Shift+D
- Mac: ⇧⌘D
ターミナルに結果が表示されます。
1.Hello Worldアプリ
プログラミングをやるなら知っておきたい「Hello, World!」のプログラムです。
コードの書き方
# "Hello, World!"と表示する
print("Hello, World!")
コードの説明
print("Hello, World!")
:print
関数は、指定された文字列(文字列とは” “で囲まれたものです。ここでは"Hello, World!"
)をコンソールに表示します。この場合、「Hello, World!」と表示されます。
結果の確認
プログラムを実行すると、ターミナルに「Hello, World!」と表示されます。
2.簡単な計算機アプリ
計算機プログラムのコードです。計算は四則演算でできますが、ここでは数字を入力すると計算されるプログラムを作っていきます。
コードの書き方
# 入力を受け取る
num1 = input("1つ目の数を入力してください: ")
num2 = input("2つ目の数を入力してください: ")
# 入力を数値に変換する
num1 = float(num1)
num2 = float(num2)
# 足し算を行う
result = num1 + num2
# 結果を表示する
print("結果は:", result)
コードの説明
num1 = input("1つ目の数を入力してください: ")
:input
関数を使ってユーザーから入力を受け取ります。入力されたデータは文字列として扱われます。num1 = float(num1)
:float
関数を使って文字列を浮動小数点数に変換します。result = num1 + num2
:num1
とnum2
を足し算し、その結果をresult
に格納します。print("結果は:", result)
:print
関数を使って計算結果を表示します。
結果の確認
プログラムを実行すると、数値の入力を求められます。2つの数値を入力すると、その合計が表示されます。
3. 天気情報取得アプリ
コードの書き方
import requests
# APIキーを設定
api_key = "あなたのAPIキーをここに入力"
# ユーザーに都市名を入力させる
city = input("都市名を入力してください: ")
# APIリクエストURLを構築
base_url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}&units=metric"
# APIリクエストを送信
response = requests.get(base_url)
# 結果をJSON形式で取得
data = response.json()
# 天気情報を表示
if data["cod"] == "404":
print("都市が見つかりませんでした")
else:
main = data["main"]
weather = data["weather"][0]
print(f"都市: {city}")
print(f"天気: {weather['description']}")
print(f"気温: {main['temp']}°C")
print(f"湿度: {main['humidity']}%")
コードの説明
import requests
:requests
モジュールは、HTTPリクエストを簡単に送信できるライブラリです。天気情報のAPIにアクセスするために使用します。api_key = "あなたのAPIキーをここに入力"
:OpenWeatherMapから取得したAPIキーを設定します。city = input("都市名を入力してください: ")
:ユーザーに都市名を入力させます。base_url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}&units=metric"
:指定された都市の天気情報を取得するためのAPIリクエストURLを構築します。response = requests.get(base_url)
:指定したURLにHTTP GETリクエストを送信します。data = response.json()
:APIからのレスポンスをJSON形式で取得します。if data["cod"] == "404":
:都市が見つからない場合のエラーハンドリングです。main = data["main"]
:天気の主要情報(気温や湿度など)を取得します。weather = data["weather"][0]
:天気の詳細情報を取得します。print
関数:取得した天気情報をコンソールに表示します。
結果の確認
プログラムを実行すると、都市の名前を求められます。例えば都市名「Tokyo」と入力すると天気予報が表示されます。
4.シンプルなメモアプリ
コードの書き方
シンプルなメモアプリのコードです。
# メモを格納するリスト
notes = []
# メニューを表示する関数
def show_menu():
print("1. メモを追加")
print("2. メモを表示")
print("3. メモを削除")
print("4. 終了")
# メモを追加する関数
def add_note():
note = input("追加するメモを入力してください: ")
notes.append(note)
print("メモが追加されました")
# メモを表示する関数
def show_notes():
if len(notes) == 0:
print("メモがありません")
else:
for i, note in enumerate(notes):
print(f"{i+1}. {note}")
# メモを削除する関数
def delete_note():
show_notes()
note_num = int(input("削除するメモの番号を入力してください: "))
if 0 < note_num <= len(notes):
notes.pop(note_num - 1)
print("メモが削除されました")
else:
print("無効な番号です")
# メインプログラム
while True:
show_menu()
choice = input("選択してください: ")
if choice == "1":
add_note()
elif choice == "2":
show_notes()
elif choice == "3":
delete_note()
elif choice == "4":
break
else:
print("無効な選択です")
コードの説明
このメモアプリのコードについて詳しく説明します。
1. メモを格納するリスト
notes = []
ここでは、メモを格納するためのリスト notes
を定義しています。このリストにメモを追加・削除します。
2. メニューを表示する関数
def show_menu():
print("1. メモを追加")
print("2. メモを表示")
print("3. メモを削除")
print("4. 終了")
show_menu
関数はユーザーに操作メニューを表示します。メニューには以下の選択肢があります:
- メモを追加
- メモを表示
- メモを削除
- 終了
3. メモを追加する関数
def add_note():
note = input("追加するメモを入力してください: ")
notes.append(note)
print("メモが追加されました")
add_note
関数は新しいメモを追加します。まず、ユーザーにメモの内容を入力させ、その内容を note
変数に格納します。次に、そのメモを notes
リストに追加し、「メモが追加されました」と表示します。
4. メモを表示する関数
def show_notes():
if len(notes) == 0:
print("メモがありません")
else:
for i, note in enumerate(notes):
print(f"{i+1}. {note}")
show_notes
関数は現在のメモを表示します。まず、メモが存在しない場合、「メモがありません」と表示します。メモが存在する場合は、リスト内の各メモを番号付きで表示します。enumerate
関数を使って、インデックスとメモの内容を取得し、1から始まる番号を付けて表示します。
5. メモを削除する関数
def delete_note():
show_notes()
note_num = int(input("削除するメモの番号を入力してください: "))
if 0 < note_num <= len(notes):
notes.pop(note_num - 1)
print("メモが削除されました")
else:
print("無効な番号です")
delete_note
関数は指定したメモを削除します。まず、show_notes
関数を呼び出して現在のメモを表示します。次に、削除したいメモの番号をユーザーに入力させ、その番号が有効かどうかを確認します。番号が有効であれば、対応するメモをリストから削除し、「メモが削除されました」と表示します。番号が無効であれば、「無効な番号です」と表示します。
6. メインプログラム
while True:
show_menu()
choice = input("選択してください: ")
if choice == "1":
add_note()
elif choice == "2":
show_notes()
elif choice == "3":
delete_note()
elif choice == "4":
break
else:
print("無効な選択です")
メインプログラムは無限ループ (while True
) を使ってメニューを繰り返し表示し、ユーザーの選択を待ちます。ユーザーの入力に応じて、対応する関数 (add_note
、show_notes
、delete_note
) を呼び出します。choice
が「4」の場合、ループを終了してプログラムを終了します。無効な選択肢が入力された場合は「無効な選択です」と表示します。
結果の確認
プログラムを実行すると、メニューが表示されます。各オプションを選択してメモを管理します。
5.TODOリストアプリ
TODOリストアプリは、初心者が学んだ基本的なデータ構造や制御構造を活用しながら、より高度な機能を追加して中級レベルにチャレンジです。
Pythonと簡単なGUIライブラリであるTkinterを使ったTODOリストアプリのサンプルコードを説明します。
GUI(Graphical User Interface)を実装するために、PythonのTkinterという標準ライブラリを使用します。TkinterはPythonのGUIツールキットであり、比較的簡単に使うことができます。
コードの書き方
import tkinter as tk
from tkinter import messagebox
# メインアプリクラス
class ToDoApp:
def __init__(self, root):
self.root = root
self.root.title("TO DO リストアプリ")
self.tasks = []
self.task_input = tk.Entry(root, width=50)
self.task_input.pack(pady=10)
self.add_button = tk.Button(root, text="タスクを追加", command=self.add_task)
self.add_button.pack(pady=5)
self.task_listbox = tk.Listbox(root, width=50, height=10)
self.task_listbox.pack(pady=10)
self.delete_button = tk.Button(root, text="選択したタスクを削除", command=self.delete_task)
self.delete_button.pack(pady=5)
def add_task(self):
task = self.task_input.get()
if task != "":
self.tasks.append(task)
self.update_task_list()
self.task_input.delete(0, tk.END)
else:
messagebox.showwarning("警告", "タスクを入力してください")
def delete_task(self):
try:
selected_task_index = self.task_listbox.curselection()[0]
del self.tasks[selected_task_index]
self.update_task_list()
except IndexError:
messagebox.showwarning("警告", "削除するタスクを選択してください")
def update_task_list(self):
self.task_listbox.delete(0, tk.END)
for task in self.tasks:
self.task_listbox.insert(tk.END, task)
if __name__ == "__main__":
root = tk.Tk()
app = ToDoApp(root)
root.mainloop()
コードの説明
各部分のコードの説明を詳しく書いていきます。
import tkinter as tk
from tkinter import messagebox
import tkinter as tk
:Pythonの標準GUIライブラリであるTkinterをtk
という名前でインポートしています。from tkinter import messagebox
:メッセージボックス(警告やエラーメッセージを表示するためのダイアログ)を使用するためにインポートしています。
# メインアプリクラス
class ToDoApp:
def __init__(self, root):
self.root = root
self.root.title("TO DO リストアプリ")
class ToDoApp:
:ToDoApp
というクラスを定義しています。このクラスがアプリケーション全体のロジックを持ちます。def __init__(self, root):
:クラスの初期化メソッド(コンストラクタ)です。root
はTkinterのメインウィンドウです。self.root = root
:渡されたroot
(メインウィンドウ)をクラスのインスタンス変数に保存します。self.root.title("TO DO リストアプリ")
:ウィンドウのタイトルを「TODOリストアプリ」に設定します。
self.tasks = []
self.tasks = []
:タスクを保存するためのリストを初期化します。
self.task_input = tk.Entry(root, width=50)
self.task_input.pack(pady=10)
self.task_input = tk.Entry(root, width=50)
:タスクを入力するためのエントリウィジェットを作成し、幅を50に設定します。self.task_input.pack(pady=10)
:エントリウィジェットをウィンドウに配置し、上下に10ピクセルの余白を追加します。
self.add_button = tk.Button(root, text="タスクを追加", command=self.add_task)
self.add_button.pack(pady=5)
self.add_button = tk.Button(root, text="タスクを追加", command=self.add_task)
:タスクを追加するためのボタンを作成します。ボタンがクリックされたときにself.add_task
メソッドを呼び出します。self.add_button.pack(pady=5)
:ボタンをウィンドウに配置し、上下に5ピクセルの余白を追加します。
self.task_listbox = tk.Listbox(root, width=50, height=10)
self.task_listbox.pack(pady=10)
self.task_listbox = tk.Listbox(root, width=50, height=10)
:タスクの一覧を表示するためのリストボックスを作成します。幅を50、高さを10に設定します。self.task_listbox.pack(pady=10)
:リストボックスをウィンドウに配置し、上下に10ピクセルの余白を追加します。
self.delete_button = tk.Button(root, text="選択したタスクを削除", command=self.delete_task)
self.delete_button.pack(pady=5)
self.delete_button = tk.Button(root, text="選択したタスクを削除", command=self.delete_task)
:選択したタスクを削除するためのボタンを作成します。ボタンがクリックされたときにself.delete_task
メソッドを呼び出します。self.delete_button.pack(pady=5)
:ボタンをウィンドウに配置し、上下に5ピクセルの余白を追加します。
def add_task(self):
task = self.task_input.get()
if task != "":
self.tasks.append(task)
self.update_task_list()
self.task_input.delete(0, tk.END)
else:
messagebox.showwarning("警告", "タスクを入力してください")
def add_task(self):
:タスクを追加するためのメソッドです。task = self.task_input.get()
:エントリウィジェットから入力されたテキストを取得します。if task != "":
:入力が空でないかチェックします。self.tasks.append(task)
:タスクをリストに追加します。self.update_task_list()
:タスクリストを更新するためのメソッドを呼び出します。self.task_input.delete(0, tk.END)
:エントリウィジェットをクリアします。else: messagebox.showwarning("警告", "タスクを入力してください")
:入力が空の場合、警告メッセージを表示します。
def delete_task(self):
try:
selected_task_index = self.task_listbox.curselection()[0]
del self.tasks[selected_task_index]
self.update_task_list()
except IndexError:
messagebox.showwarning("警告", "削除するタスクを選択してください")
def delete_task(self):
:選択したタスクを削除するためのメソッドです。selected_task_index = self.task_listbox.curselection()[0]
:リストボックスで選択されたタスクのインデックスを取得します。del self.tasks[selected_task_index]
:リストから選択されたタスクを削除します。self.update_task_list()
:タスクリストを更新するためのメソッドを呼び出します。except IndexError: messagebox.showwarning("警告", "削除するタスクを選択してください")
:選択されたタスクがない場合、警告メッセージを表示します。
def update_task_list(self):
self.task_listbox.delete(0, tk.END)
for task in self.tasks:
self.task_listbox.insert(tk.END, task)
def update_task_list(self):
:タスクリストを更新するためのメソッドです。self.task_listbox.delete(0, tk.END)
:リストボックスをクリアします。for task in self.tasks:
:リスト内の各タスクに対してループを実行します。self.task_listbox.insert(tk.END, task)
:タスクをリストボックスに追加します。
if __name__ == "__main__":
root = tk.Tk()
app = ToDoApp(root)
root.mainloop()
if __name__ == "__main__":
:このスクリプトが直接実行された場合にのみ、以下のコードを実行します。root = tk.Tk()
:Tkinterのメインウィンドウを作成します。app = ToDoApp(root)
:ToDoApp
クラスのインスタンスを作成し、メインウィンドウを渡します。root.mainloop()
:Tkinterのイベントループを開始します。これにより、ウィンドウが表示され、ユーザーの操作を受け付けます。
■本のご紹介
プログラミング入門講座――基本と思考法と重要事項がきちんと学べる授業
この本はプログラミングにおける必要性の価値を教えてくれる一冊です。
オンラインサービスで学習ができるサイトも多く紹介されており、子供に親しみやすいScratchもあります。やってみるとコードではなくパズルのように組み立てていくので視覚的にも分かりやすいです。
しかし子供向けだからと言っても本格的なプログラムを学ぶことができます。プログラムコードに少し苦手意識がある方はこちらの本からチャレンジしてみてください。楽しいですよ。
Pythonでプログラミング|初心者でも作れる簡単アプリ5選 まとめ
初心者でも簡単に作成できる5つのアプリを紹介しました。各アプリは、プログラミングの基礎を学ぶのに最適な内容になっています。
- Hello Worldアプリ:プログラミングの最初の一歩として、コンソールにメッセージを表示する方法を学びます。
- 簡単な計算機アプリ:ユーザー入力と基本的な算術演算を学びます。
- 天気情報取得アプリ:APIの利用方法と外部データの取得方法を学びます。
- メモアプリ:データの追加、表示、削除を学びます。
- TO DOアプリ:基本的なデータ操作とユーザーインタラクションを学びます。
これらのアプリを作成することで、プログラミングの基礎をしっかりと身に付けることができます。次のステップとして、これらのアプリをさらに改良したり、新しい機能を追加したりして、自分のスキルを高めていきましょう。継続的に学び、実践することで、力を身に付けることができます。色々と作ってみてプログラミングを楽しみましょう!
アプリを作ってみて、Pythonの学習をスクールでより深めたいと考えた方はこちらで「【2024年最新版】プログラミングスクールPython講座10選を徹底比較」でPython講座を提供する優秀スクールの比較と選び方をご紹介しております。ぜひチェックしてください。