ブログ移転のお知らせ

はてなブログに移転しました

nonbiri-stars.hatenablog.com

 

Pythonの学習環境と、Python Scriptの開発環境

これまでいくつかSirilのPython Scriptを作成してきましたが、私はPythonが全く書けません。
AIが全部やってくれるので不完全燃焼感が出てきている事と、これ以上複雑な事をやるには自力でPythonを書けるようになるしかないかなと思っています。
(AIに草案を作らせて、仕上げを自分でやるイメージ)

が、プログラミング言語って覚えるの大変なんですよねホントに。


Python学習環境の構築


教材はweb上にいくらでもあるのですが、「どうやって気軽に継続的に学ぶか」がネックでした。
特に躓いた時のフォローが重要です。
(途中で分からなくなって投げ出しそうなので…)

という事で次の2点がマストです。
・AIにコーチしてもらう
・開発環境にAIが統合されていて、書いたコードを直接添削できる


これを満たせて、学習できる環境を作ってみようとしてみました。
候補に挙げたのは下の3環境です。

どの環境でもAIにコーチしてもらいながら学習が可能らしいです。

・VSCode
・Cursor
・google colab


・VScode
既にメインPCにインストール済み。
拡張機能でAIが利用可能。
Codeiumなら無料で利用可能。
(copilotなどは有料プランのみ)

・Cursor
VScodeをベースにしてデフォルトでAIを組み込んでいる。
開発環境にチューニングしたAI(composer)とchatGPTなど色々なAIを利用可能


・google colab
ブラウザベースでインストール不要。
geminiが利用可能。



AIがデフォルトで組み込まれており、そのまま開発環境に移行出来そうなCursorを選びました。



早速インストール。

表示 > 拡張機能からpythonを検索しインストール。
ついでに日本語環境もインストールして再起動。



学習用のプロジェクトフォルダを作成して準備完了。
open projectをクリックし、作成した学習用のフォルダを選択し、指示を出して学習開始です。


Ctr+LでAIとのチャット枠が出てくるのでプロンプトを入力します。
プロンプトの例です。
--------------------------------
あなたはプロのPythonインストラクターです。私はプログラミング未経験の初心者です。
これからPythonの基礎を実践形式で学びたいです。以下のルールで私を指導してください。
​一方的に講義せず、小さな課題を出し続けてください。
​「概念の説明」→「短いコードを書く課題」→「私がコードを入力」→「あなたが添削・フィードバック」のサイクルを繰り返してください。
​まずは「Hello, World!」の出力から始めてください。
​私が間違えたら、答えをすぐ教えるのではなく、ヒントを出してください。
--------------------------------

これでAIのインストラクターに教わり始める事が出来ました。
分からないと言えば、書いたコードをチェックして間違いのポイントを指摘してくれます。

実際の画面です。
左上がコード、右側がAIとの対話、左下がターミナルです。



Cursorはフォルダ単位で記録を残すので、次回も学習用のフォルダを開けば続きから再開できます。
基本はコレで大丈夫。
追記:駄目でした。
下のマークダウン形式でセーブしましょう。

もっと確実な方法としては、マークダウン形式で記録を残し、再開時に読み込む方法です。

これなら、フォルダを変えたくなった時にはマークダウン形式のファイルを変更先に移動させるだけでAIの状況を移植できます。


終了する時のプロンプトの例です。
--------------------------------
今日の学習を終了します。
私たちの学習状況を忘れないように、現在のフォルダに progress.md というファイルを作成(または更新)して、以下の内容を記録してください。
​現在のレベル: (例:変数まで理解、for文でつまづき中など)
​今日学んだコードの要点:
​次回の課題: (次回、私が席に着いたらすぐ取り組むべきこと)
​このファイルを「セーブデータ」として使います。
--------------------------------



再開する時の例です。
--------------------------------
学習を再開します。progress.md を読んで、前回の続きから指導を始めてください。
あなたは引き続き、プロの親切なPythonインストラクターです。
progress.md に書かれている「次回の課題」を出題してください。
--------------------------------

これでホントに学習出来てるのがすごい。
ま、ごく基本を学べばあとは実践で鍛えていこうと思います。




で、ここで気がついたのが、マークダウン形式のファイルをAIに読み込ませるという工夫。

私はマークダウン形式に馴染みが無いんですが、構造化されてるのでAIが情報を読み取りやすいらしい。


今までSirilのpythonスクリプトを作成する時にはpdfを読み込ませていました。

が、アレは人間が見やすいようになっているファイルです。
AIはコレを頑張って読み解いていたわけですね。


じゃ、資料をマークダウン形式で与えてやればより精度の高いコーディングが出来るのでは?と考えました。
(恐らく詳しい人は当然のごとくやっている事でしょうが…素人はようやく気づけました)


そうと決まればSiril documentationをマークダウン形式に変換して開発環境を作ろう!


Siril Python Script開発環境の構築


追記
以下の内容は勘違いを含んでいます。
修正版の記事を作成しました。
追記終わり


…どうやるんだ?(笑)


pandocというソフトでマークダウン形式に変換できる事は判明。

ただし、入力可能な形式は下の通り。

Markdown
Textile
reStructuredText
HTML
LaTeX
DocBook XML
OPML
Emacs Org-mode
Literate Haskell (Markdown,reST,LaTeX)


うむ。当然ながらpdfが無い。

htmlはありますが、あの大量のページを1ページずつ読み込むのも大変です。

さてさて、どうするか…



どうやらSirilの開発はGitLabで行われており、ここではSphinxで管理されているとのこと。
ファイル形式はreStructuredText(.rst)でpandoc対応と言うことが判明!これだ!


Gitでドキュメントをローカルにクローンします。
そこから必要そうなファイルをチョイスして、pandocで.mdに変換し準備完了!


…念の為マークダウンファイルを読んでみます。


うーん…特に重要なcommandsとpython-APIの中身が超怪しい。

特にpython-APIの中身が無いに等しい。
たったの260行で説明出来るワケ無いでしょう。


どこにデータがあるのか分からなかったので、commandsとpython-APIだけはhtmlから取ってくる事にしました。

python-APIは4000行超えになって、内容もwebの説明書と変わらなくなったのでok。


Sirilアップデートのたびに手動で変換するのはめんどいので、変換用のバッチファイルを書いて…と

pandoc https://siril.readthedocs.io/en/stable/Python-API.html -o sirilpy.md
pandoc https://siril.readthedocs.io/en/stable/Commands.html -o Commands.md

for %%f in (*.rst) do (
    echo Converting %%f ...
    pandoc "%%f" -f rst -t markdown -o "%%~nf.md"
)

中身としては、commandsとPythin-APIだけはwebから取得して.mdに変換し、残りはbatファイルが入っているフォルダの中にある全ての.rstファイルを.mdに変換するというバッチです。


続いて、その他の制約を手動で記入してマークダウンで作成して保存します。
- 対象バージョン: Siril 1.4.0
- Python API はラッパーであり、処理仕様は CLI に依存
- Commands.md に記載のないコマンドは禁止
- deprecated / experimental は使用不可
- CFA / linear / sequence 条件を必ず確認すること
- GUIはPyQt6を使用すること。ktinterは使用禁止。


出来上がった.mdを開発環境のフォルダの中にSiril_docというフォルダを作って入れておきます。


これでAIが読み込む資料が準備できました!


実行してみる


プロンプトを送信する時の注意点として、次の2文を入れておけばルールに忠実に作ってくれます。

--------------------------------
以下の処理では siril_docs/ 以下の Markdown のみを仕様として使用してください。
存在しない Siril コマンドや API は使用禁止です。
--------------------------------


早速、unsharp mask scriptを作らせてみると…

簡単なスクリプトとは言え、1回プロンプトを送信しただけでデバッグまでオートで終えて完成してしまいました。

しかも私がGithubにアップしているv2よりレスポンスが格段に良い。


すげぇ…
あとで微調整してv2.1に更新しとこ。


変わったポイント


今までの私の環境のボトルネックは2つありました。

1つ目は、Sirilのpython-APIがという超ニッチなAPIをAIに認識させ、これを守らせてコーディングさせること。
これにはsiril documentationという70MB超のファイルを読み込ませる必要があり、エージェントが限られます。
それに、読み込ませた資料を守らない事もありました。


2つ目は、上の問題をクリアする環境だとデバッグが難しかったことです。

会話形式でのデバッグだったので、ホントにやりにくい。
何も解決できないまま利用上限に引っ掛かる事も多かったです。


この問題を同時に解決出来たので、凄い勢いで開発が進みます。

ますますPython Scriptの開発がやりやすくなったー!
今はまだ作りたいものが無いので、次に何を作るか考えないとね。


余談ですが、Cursorの様なAIを統合した開発環境が最近流行らしく、最近はGoogleがAntigravityをリリースしているそうです。


gemini 3 proが使えるらしいので猛烈に魅力的ですが、まだ初期のバグがあるとのこと。
Antigravityもその内使ってみたいと思います。


コメント

にほんブログ村

PVアクセスランキング にほんブログ村 にほんブログ村 写真ブログ 天体写真へにほんブログ村 科学ブログ 天文学・天体観測・宇宙科学へ