前回は、Claudeのアーティファクトでブラウザ上に電卓を作りました。
今回は場所が変わります。Google Colab というブラウザ上でPythonを動かせる開発環境を使います。インストール作業は不要で、Googleアカウントがあれば今すぐ試せます。
「Python」と聞くと身構えるかもしれませんが、自分でコードを書くわけではありません。AIに作ってもらったコードを貼って動かす——その流れを体験します。
今回作るのは複利計算シミュレータです。元本・金利・年数を入力すると、資産がどう増えていくかをグラフで確認できます。
この記事でやることはシンプルです。
- Google Colabを開く
- AIに複利計算のコードを作ってもらってColabで動かす
- パラメータを変えて遊んでみる
なぜPythonを使うの?
この記事からはPythonというプログラミング言語を使います。第1部ではこれ以降もPythonを使い続けます。自分で色々試した感じでは、AIにコードを書いてもらう用途だとPythonが一番噛み合う印象でした。他の言語が使えないわけではありませんが、まずはPythonで進めます。
Google Colabを開く
Google Colab を開いてください。Googleアカウントでログインすると、ノートブック作成画面が表示されます。「新しいノートブック」をクリックすると、コードを入力できるセルが表示されます。このセルに、これからAIが作ったコードを貼り付けます。

「コーディングを開始するか、AI で生成します。」と表示されているセルに、コードを貼り付けます。
まず作ってもらおう
Claude.ai を開いて、こう打ってみてください。
pythonで複利計算シミュレータのコードを書いて
コードが返ってきましたか?それをそのままコピーして、Colabのセルに貼り付けてください。

右側にコードが表示されます。「コピー」ボタンでまとめてコピーできます。
貼り付けたら、セルの左にある ▶ ボタンを押して実行します。

セル左の ▶ ボタンを押して実行します。
グラフが表示されましたか?
自分が試したときは「元本100万円が30年後にどうなるか」が描かれていました。数字の羅列で見るよりずっと実感がわきます。「複利ってこういうことか」と体感できれば、この記事の半分は終わりです。

累計投資額(点線)と資産(実線)の差が評価益です。20年後に1.79倍になっています。
ちなみに、自分が最初にやったときは軸ラベルやタイトルが「□□□」のように文字化けしていました。日本語フォントが入っていないのが原因です。気になる人はこの記事の下の方に対処法を載せていますが、ここでは一旦そのまま進めて大丈夫です。
参照:ソースコード(基本版)
# =============================================================
# 複利計算シミュレータ(Google Colab対応)
# 月次複利・月次積立に対応。各セルにコピペして実行できます。
# =============================================================
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
try:
import japanize_matplotlib # noqa: F401
except ImportError:
print("※ 日本語表示が必要なら `!pip install japanize-matplotlib` を実行してください")
principal = 1_000_000 # 初期元本(円)
monthly = 50_000 # 毎月の積立額(円)
annual_rate = 0.05 # 年利(0.05 = 5%)
years = 20 # 運用年数
freq = 12 # 年あたりの複利・積立回数(12=月次, 1=年次)
def simulate(principal, monthly, annual_rate, years, freq=12):
rate_per_period = annual_rate / freq
n = years * freq
balance = principal
invested = principal
rows = []
for i in range(1, n + 1):
balance *= (1 + rate_per_period)
balance += monthly
invested += monthly
rows.append({
"period": i, "year": i / freq,
"balance": balance, "invested": invested,
"gain": balance - invested,
})
return pd.DataFrame(rows)
df = simulate(principal, monthly, annual_rate, years, freq)
yearly = df[df["period"] % freq == 0].copy()
yearly["year"] = yearly["year"].astype(int)
summary = yearly[["year", "invested", "balance", "gain"]].reset_index(drop=True)
summary["gain_ratio"] = summary["gain"] / summary["invested"]
pd.options.display.float_format = lambda x: f"{x:,.0f}"
print("=== 年次サマリー ===")
print(summary.to_string(index=False))
final = df.iloc[-1]
print(f"\n運用年数: {years}年 / 累計投資額: {final['invested']:,.0f}円 / 最終資産: {final['balance']:,.0f}円 / 対投資額: {final['balance']/final['invested']:.2f}倍")
fig, ax = plt.subplots(figsize=(10, 6))
ax.plot(df["year"], df["balance"], label="資産(複利)", linewidth=2)
ax.plot(df["year"], df["invested"], label="累計投資額(元本)", linestyle="--", linewidth=2)
ax.fill_between(df["year"], df["invested"], df["balance"], alpha=0.2, label="評価益")
ax.set_xlabel("経過年数")
ax.set_ylabel("金額(円)")
ax.set_title(f"複利シミュレーション(年利{annual_rate*100:.1f}% / 月{monthly:,.0f}円積立)")
ax.legend()
ax.grid(True, alpha=0.3)
ax.yaxis.set_major_formatter(plt.FuncFormatter(lambda v, _: f"{v/1e6:.0f}M"))
plt.tight_layout()
plt.show()
複利とは?
複利とは、増えた分も次の元手に加わり、少しずつ増え方が大きくなる考え方です。
プログラミング学習でも、前に覚えた知識が次の練習を助けてくれます。小さな「わかった」が積み重なることで、少しずつ作れるものが増えていきます。
パラメータを変えてみよう
グラフが固定の数字で動いているのを見ていると、自分でパラメータを触りたくなりませんか。
次は数字を変えられるように、これもClaudeへ頼んでみましょう。
パラメータは画面で変更できるようにして
新しいコードが返ってきたら、Colabに新しいセルを作って貼り付けて実行してください。セルの下に入力欄が出てきます。

スライダーを動かすたびにグラフが即座に更新されます。
好きな数字を入れてみましょう。例えば、
- 元本:手元の貯金額でも
- 年利:1〜7%くらいで試すと面白い
- 年数:10年、20年、30年
数字を変えるたびにグラフの形が変わります。複利のように頭で考えるとピンとこないことも、こうして触ってみると一気に腑に落ちます。
「入力を変えるだけでいろいろ試せる」——この感覚がつかめれば十分です。
グラフの日本語が文字化けしたら
グラフのタイトルや軸ラベルが正しく表示されないことがあります。Colabのデフォルト環境に日本語フォントが入っていないためです。セルの先頭に以下を追加して実行してください。
!pip install japanize-matplotlib
import japanize_matplotlib
その他のエラーも対応は同じです。 赤い文字が出たらそのままコピーして、Claudeに貼り付けてみてください。
ほとんどの場合、修正したコードを返してくれます。
参照:ソースコード(パラメータ可変版)
# =============================================================
# 複利計算シミュレータ(Google Colab / インタラクティブ版)
# スライダー・入力欄でパラメータを変更すると即座に再計算されます。
# このコード全体を1つのセルに貼り付けて実行してください。
# =============================================================
import pandas as pd
import matplotlib.pyplot as plt
import ipywidgets as widgets
from IPython.display import display
try:
import japanize_matplotlib # noqa: F401
except ImportError:
import subprocess, sys
subprocess.run([sys.executable, "-m", "pip", "install", "-q",
"japanize-matplotlib"], check=True)
import japanize_matplotlib # noqa: F401
def simulate(principal, monthly, annual_rate, years, freq=12):
rate_per_period = annual_rate / freq
n = years * freq
balance = principal
invested = principal
rows = []
for i in range(1, n + 1):
balance *= (1 + rate_per_period)
balance += monthly
invested += monthly
rows.append({
"period": i, "year": i / freq,
"balance": balance, "invested": invested,
"gain": balance - invested,
})
return pd.DataFrame(rows)
style = {"description_width": "120px"}
layout = widgets.Layout(width="420px")
w_principal = widgets.IntText(value=1_000_000, description="初期元本(円)", style=style, layout=layout)
w_monthly = widgets.IntText(value=50_000, description="毎月積立(円)", style=style, layout=layout)
w_rate = widgets.FloatSlider(value=5.0, min=0.0, max=15.0, step=0.1,
description="年利(%)", readout_format=".1f",
style=style, layout=layout)
w_years = widgets.IntSlider(value=20, min=1, max=50, step=1,
description="運用年数", style=style, layout=layout)
w_freq = widgets.Dropdown(options=[("月次", 12), ("年次", 1)], value=12,
description="複利・積立頻度", style=style, layout=layout)
out = widgets.Output()
def update(_=None):
with out:
out.clear_output(wait=True)
df = simulate(w_principal.value, w_monthly.value,
w_rate.value / 100, w_years.value, w_freq.value)
final = df.iloc[-1]
print("=== 最終結果 ===")
print(f"累計投資額 : {final['invested']:,.0f} 円")
print(f"最終資産 : {final['balance']:,.0f} 円")
print(f"評価益 : {final['gain']:,.0f} 円")
print(f"対投資額倍率 : {final['balance'] / final['invested']:.2f} 倍")
fig, ax = plt.subplots(figsize=(10, 5.5))
ax.plot(df["year"], df["balance"], label="資産(複利)", linewidth=2)
ax.plot(df["year"], df["invested"], label="累計投資額(元本)",
linestyle="--", linewidth=2)
ax.fill_between(df["year"], df["invested"], df["balance"], alpha=0.2, label="評価益")
ax.set_xlabel("経過年数")
ax.set_ylabel("金額(円)")
ax.set_title(f"複利シミュレーション(年利{w_rate.value:.1f}% / 月{w_monthly.value:,.0f}円積立)")
ax.legend()
ax.grid(True, alpha=0.3)
ax.yaxis.set_major_formatter(plt.FuncFormatter(lambda v, _: f"{v/1e6:.0f}M"))
plt.tight_layout()
plt.show()
for w in (w_principal, w_monthly, w_rate, w_years, w_freq):
w.observe(update, names="value")
controls = widgets.VBox([w_principal, w_monthly, w_rate, w_years, w_freq])
display(controls, out)
update()
今回わかったこと
今回は、コードを一行も書かずに複利計算シミュレータを作りました。
やったことはシンプルです。
- AIにコードを頼む
- Colabに貼って実行する
- 動かしてみて、また頼む
Colabは実行するたびに結果がすぐ返ってくるので、「変えたらどうなる?」を試しやすい環境です。エラーが出てもAIに貼れば直してくれる——このループさえつかめれば、あとは同じやり方でどんどん応用できます。
コードを書く技術より先に、AIと往復する感覚がつかめれば十分です。難しいことを覚えなくても、「頼んで、貼って、動かす」だけで形になる——その感覚が残れば、この記事の役目は果たせています。
次の記事では、外部のデータ(CSV)をColabに読み込んで、集計してグラフにします。
「自分で作った数字」から「手元にある業務データ」を扱う一歩です。