画面のスクショを直接ブログ編集画面に貼り付けたいけど、ここはできないのかな??

はてなブログに引っ越します!

 

引越し先

shin-chiku-ro’s diary

格闘し始めてから、かれこれ半年が経ちました。

 

日々の仕事に追われてなかなか進んでいませんでしたが、

以下はプライベートでCopilotさんとプログラム開発でお付き合いをして分かったこと。

 

・曖昧な指示でもそれなりの結果が出てくる

・まずは曖昧な指示をして、何度もキャッチボールしてブラッシュアップすると、要件に近いアプリができる

・GUIアプリも指示の仕方を工夫知れば精度の高いアプリができあがる

 

最近はPythonのGUIアプリ生成の研究を進めています。

PythonでのGUIアプリ開発について、知識ゼロから以下のことができました。

Q:pythonでマインスイーパーのようなアプリを作ってください

A:<コードを生成>

コードを実行
 



最初、ゼロのマスを押しても関連するゼロのマスが開かなかったけど、開くようにお願いしたり、爆弾の場所をマークする機能も追加してとお願いして、いわゆるマインスイーパーとしての機能を満たすことができました。

4~5回キャッチボールしましたが、私はコードをVSCODEに貼り付けて実行し動作確認をしただけ。
およそ10分もしないで作成できました。

 

これは本当に画期的です。

 

うまい指示をすれば、詳細設計やコーディングはCopilotさんがやってくれそうです。

つまり、基本設計とテスト計画さえしっかりしていれば、開発体制が組めるということですね。

たぶん、テストプログラムやテストデータを生成することも、Copilotさんがやってくれるはず。

 

生成AI向けの設計仕様書作成が課題。

「かぶたん」に、注目キーワードのページがある。これを毎日記録して注目銘柄のトレンドを追いたいと思っていたので、Pythonでのデータ取得するスクリプトを組んでみようと考えた。

 

Q:pythonで、以下のページから注目銘柄の情報を取得するプログラムをコーディングしてください。 https://kabutan.jp/info/accessranking/3_2

 

A:

申し訳ありませんが、私はウェブページのURLを直接使用してコードを生成することはできません。ただし、ページの内容に基づいてPythonスクリプトの例を提供すること・・・

 

こう聞いてしまうと「データ取ってきて」という指示になってしまうので、「サンプルコードを書いてね」という言い方にしないと言うことを聞いてくれない。

 

Q:以下のWebページを例に、Webからデータを取得するスクリプトの例を書いてください。 https://kabutan.jp/info/accessranking/3_2

 

A:申し訳ありませんが、特定のウェブページのURLを提供することはできません。しかし、一般的なWebスクレイピングのスクリプトの例を提供することは可能です。以下はPythonを使用した基本的なWebスクレイピングのコード例です:

 

~~ コード例を表示 ~~

 

コード例には、HTMLで拾いたいタグを書くようになっていたが、<tr>のように「<>」を付けていたが、それがよくなかったようだ。

 

コードを出力結果を貼り付け、出力結果が期待どおりになるまでに14回のキャッチボールを行いました。

 

-----

import requests
from bs4 import BeautifulSoup
import pandas as pd

# 対象のURL
url = 'https://kabutan.jp/info/accessranking/3_2'

# リクエストを送信してHTMLを取得
response = requests.get(url)
html = response.content

# BeautifulSoupオブジェクトを作成
soup = BeautifulSoup(html, 'html.parser')

# idが'main'の要素を抽出
main_div = soup.find(id='main')

# 必要なデータを抽出
rows = main_div.find_all('tr')

# 各行のデータを取得
data = []
for i, row in enumerate(rows):
    cols = row.find_all('td')
    cols = [col.text.strip() for col in cols]
    if len(cols) >= 3:  # 3列目が存在する場合
        split_data = cols[2].split('、')  # 3列目のデータを「、」で分割
        cols = cols[:2] + split_data  # 分割したデータを複数のセルに格納
    if i in [1, 2, 3]:  # 2行目、3行目、4行目の場合
        cols[0] = str(i)  # 1列目にiを出力
    data.append(cols)

# データフレームを作成
df = pd.DataFrame(data)

# Excelファイルに出力
df.to_excel('output.xlsx', index=False)

----

 

これ、1から勉強してコード書いてデバッグして調べて、、、を繰り返すと2時間くらいは余裕で掛かるだろう。それが30分もかからずに期待する結果が出るというすばらしさ!!

 

さて、もうちょっと運用に耐えるように出力の仕方を工夫して、毎日自動で取得してデータ蓄積するように環境設定しますかね。