Apple Pencil(USB-C)
¥13,242 (2025年4月25日 13:08 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)iPad 第11世代 第10世代 ケース 2025/2022 11インチ Dadanism iPad 11世代 A16/10世代 10.9インチ 2025年新モデル ケース iPad 11 10.9 2022 iPad 11 10 アイパッド用 タブレットケース オートスリープ 三つ折り スタンドケース PU+PC 耐久 Apple Pencil対応 カバー ネイビーブルー
¥1,458 (2025年4月25日 13:08 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)
Amazon Q developer の(一部で)日本語サポートが(追加で)開始したので日本語でコーディングが出来るか試してみます。
Amazon Q Developerは機能が多く、使っていない人からするとどこが日本語化されたのか分かりにくい部分があります。
上記ブログではIDEとCLIに言及されていますが、実際にはCLIは元々日本語が動いていたような気がするので、今回はIDEのチャット機能からのエージェントを呼び出したコーディング時に日本語が使えるようになった感じです。
Windows + Visual Studio Code + Amazon Q拡張 + Python
※Amazon Q拡張のインストール手順と設定手順は省きます
左下のチャット部分に、/dev
コマンドの後にstreamlitを使って2024年のGAFAの株価推移を比較できるグラフを作って
と日本語で雑に指示してみます。
実行します。
何やら考えています。
Streamlitを指定したのでPythonのコードとrequirements.txtが生成されました。とりあえずAcceptします。
生成されたコード
requirements.txt
streamlit
yfinance
pandas
plotly
gafa_stocks.py
import streamlit as st
import yfinance as yf
import pandas as pd
import plotly.express as px
from datetime import datetime, timedelta
# Page configuration
st.set_page_config(page_title="GAFA Stocks Comparison 2024", layout="wide")
st.title("GAFA Stocks Price Comparison 2024")
# Define GAFA stock symbols
gafa_symbols = {
"Google (Alphabet)": "GOOGL",
"Apple": "AAPL",
"Meta (Facebook)": "META",
"Amazon": "AMZN"
}
# Get data for each stock
start_date = "2024-01-01"
end_date = datetime.now().strftime("%Y-%m-%d")
# Create empty DataFrame to store all stock data
df_combined = pd.DataFrame()
# Fetch data for each stock
for company, symbol in gafa_symbols.items():
stock = yf.Ticker(symbol)
df = stock.history(start=start_date, end=end_date)
df["Company"] = company
df_combined = pd.concat([df_combined, df])
# Create interactive plot using Plotly
fig = px.line(df_combined,
x=df_combined.index,
y="Close",
color="Company",
title="GAFA Stock Prices in 2024",
labels={"Close": "Stock Price (USD)", "index": "Date"},
template="plotly_dark")
# Display the plot
st.plotly_chart(fig, use_container_width=True)
# Add additional statistics
st.subheader("Stock Price Statistics (2024)")
# Calculate statistics for each company
for company, symbol in gafa_symbols.items():
company_data = df_combined[df_combined["Company"] == company]
col1, col2, col3 = st.columns(3)
with col1:
st.metric(f"{company} - Current Price",
f"${company_data['Close'].iloc[-1]:.2f}",
f"{((company_data['Close'].iloc[-1] - company_data['Close'].iloc[0]) / company_data['Close'].iloc[0] * 100):.2f}%")
with col2:
st.metric(f"{company} - Highest Price",
f"${company_data['High'].max():.2f}")
with col3:
st.metric(f"{company} - Lowest Price",
f"${company_data['Low'].min():.2f}")
YahooファイナンスのAPIで値を取得してなにやら描画している雰囲気がします。
とりあえず pip install -r requirements.txt
してstreamlitから実行します。
すごない?
縦軸がドルになっている点が気になるのでそこの修正を頼んでみます。
I have another taskを選んだ後に、Y軸は金額ではなくて株価の上昇率に変更して
と指示してみます。
gafa_stock.pyの変更案が示され、diffが表示されています。終値ではなくパーセンテージに変えている雰囲気がするのでAcceptして実行してみます。
gafa_stocks.py
import streamlit as st
import yfinance as yf
import pandas as pd
import plotly.express as px
from datetime import datetime, timedelta
# Page configuration
st.set_page_config(page_title="GAFA Stocks Comparison 2024", layout="wide")
st.title("GAFA Stocks Price Comparison 2024")
# Define GAFA stock symbols
gafa_symbols = {
"Google (Alphabet)": "GOOGL",
"Apple": "AAPL",
"Meta (Facebook)": "META",
"Amazon": "AMZN"
}
# Get data for each stock
start_date = "2024-01-01"
end_date = datetime.now().strftime("%Y-%m-%d")
# Create empty DataFrame to store all stock data
df_combined = pd.DataFrame()
# Fetch data for each stock
for company, symbol in gafa_symbols.items():
stock = yf.Ticker(symbol)
df = stock.history(start=start_date, end=end_date)
# Calculate percentage change from initial price
initial_price = df['Close'].iloc[0]
df['Price_Change_Percent'] = ((df['Close'] - initial_price) / initial_price * 100)
df["Company"] = company
df_combined = pd.concat([df_combined, df])
# Create interactive plot using Plotly
fig = px.line(df_combined,
x=df_combined.index,
y="Price_Change_Percent",
color="Company",
title="GAFA Stock Price Changes in 2024",
labels={"Price_Change_Percent": "Price Change (%)", "index": "Date"},
template="plotly_dark")
# Display the plot
st.plotly_chart(fig, use_container_width=True)
# Add additional statistics
st.subheader("Stock Price Statistics (2024)")
# Calculate statistics for each company
for company, symbol in gafa_symbols.items():
company_data = df_combined[df_combined["Company"] == company]
col1, col2, col3 = st.columns(3)
with col1:
st.metric(f"{company} - Current Price",
f"${company_data['Close'].iloc[-1]:.2f}",
f"{((company_data['Close'].iloc[-1] - company_data['Close'].iloc[0]) / company_data['Close'].iloc[0] * 100):.2f}%")
with col2:
st.metric(f"{company} - Highest Price",
f"${company_data['High'].max():.2f}")
with col3:
st.metric(f"{company} - Lowest Price",
f"${company_data['Low'].min():.2f}")
なんか合ってそうな雰囲気です!
プログラムの変更が出来る=ローカルのファイルが読めるという事が分かったので、プログラムではないファイルをローカルに置いて実行してみます。
以下のファイルを配置します。
api.txt
気象庁の天気予報 東京のURL
https://www.jma.go.jp/bosai/forecast/data/overview_forecast/130000.json
応答項目の仕様
{
"publishingOffice":"気象庁",
"reportDatetime":応答日時,
"targetArea":"東京都","
headlineText":"",
"text":概況
}
また/dev
に続けて、api.txtを参考に、気象庁のAPIを呼び出して東京の天気予報概況を表示して。streamlitを使って
と雑に指示します。
pythonファイルとrequirements.txtが生成されたのでAcceptします。
生成されたコード
requests
を呼んでるのでHTTPアクセスしようとしてるなという感じです。
weather_app.py
import streamlit as st
import requests
import json
# Set page config
st.set_page_config(
page_title="東京天気予報",
page_icon="🌤️",
)
# Add title
st.title("東京の天気予報概況")
# JMA API endpoint for Tokyo (area code 130000)
API_URL = "https://www.jma.go.jp/bosai/forecast/data/overview_forecast/130000.json"
try:
# Get weather forecast data
response = requests.get(API_URL)
response.raise_for_status() # Raise an exception for bad status codes
data = response.json()
# Display weather information
st.subheader("気象情報")
st.write(f"発表時刻: {data['reportDatetime']}")
# Display headline
if data.get('headlineText'):
st.markdown("### 概況")
st.write(data['headlineText'])
# Display detailed text
if data.get('text'):
st.markdown("### 詳細")
st.write(data['text'])
except requests.exceptions.RequestException as e:
st.error("天気予報データの取得に失敗しました。")
st.error(f"エラー: {str(e)}")
except json.JSONDecodeError:
st.error("データの解析に失敗しました。")
except KeyError as e:
st.error(f"データの形式が不正です: {str(e)}")
HTTPで取得してベタッと表示するシンプルなアプリです。実行してみます。
動きました!
幾つか試した感じ、コード生成前のエージェントがローカルのファイル(リポジトリ?)を読んでくれるので、修正対象のプログラムを探したりサジェストさせたりするのにも使えそうです。
また、/dev
コマンドは自由度が高そうなので、このコマンドを入れた後は「ローカルリポジトリに対するエージェントへの指示」だと思って入力すれば良さそうです。
ちなみに上記のファイルは一発で表示されたかのように書いていますが、実際には上手くいかないケースもちょいちょいあります。もちろんバグ修正をさせることも出来ますが、一発目の生成が上手くいってないと修正させても上手くいかないことがままあるので、そういうときは/clear
して再生成した方が速いかもしれません。