virt_flyのブログ -32ページ目

virt_flyのブログ

フライトシミュレーターソフトのFlightGearで仮想飛行を楽しむブログです。

↑フィライトシミュレーターのFlightGearから得たスクリーンショットで本の表紙、帯もできた(笑)

 

ChatGPTは小説家になる夢を叶えてくれるか

 

Raspberry Pi Picoを用いて、ChatGPTでプログラミングが可能かを試している途中なのですが、光るアクリル板の発光色の変化をコントロールするのに1つしかないRaspberry Pi Picoを専用にしてしまい、その後試すことができなくなってこまることになりました。

 

しかたないので、今回はChatGPTに世間が言うように小説が書けるかを試してみることにしました。

 

構成や情景、人物の描写等々、何をとっても小説家に必要な才なんてこれっぽちも持ち合わせていないが、それだけに、ChatGPTの力を借りて自分の思いを小説として表現できたら、この上なく嬉しいことにちがいありません。

 

結果は、見事に玉砕!

 

リアリティが少しでもあったほうが検証になるかと思い、台湾有事をテーマに、各国の思惑や置かれた条件をシツエーションとして指定し、ChatGPTに内容を膨らましてくれることを期待したのですが。

 

かなり単純化、矮小化し、それらしい理由付けも創作したシツエーションにしたのですが、ChatGPTの小説執筆はエラーを起こし途中までで終了、文章の中身もシツエーションの説明に過ぎないものならまだましなくらいと言いたくなるほど逸脱し、めちゃくちゃ。大体が、こちらの指定したシツエーションの文章が、書き換わってしまっているのですからお話になりません。

 

細かすぎる設定は不向きなのか、あらすじを示されて話をふくらませるのはまだ苦手で、まだあらすじを考えるのがやっとなのかもしれません。ChatGPTが登場してからSF作品の投稿が増えたと言われるのも、ChatGPTが示したユニークな発想をもとに人が脚色したと考えたら納得できそうですが、GPT-4を使った有料のChatGPT Plusならまた別な結果となったのでしょうか?

 

今回のテーマはここまで。次は参考に収録したものでお読みいただく必要はありません。

 

フライトシュミレーターのFlightGearをテーマにしたブログだというのに、ここのところさっぱり話題になることがなかったなかで、今回はなんとかFlightGearに結びつけることができたのは、よかったのやらどうなのやら。ことが新たな戦前にかかわることだけに、はばかられます。

 

◀参考▶以下に示すのは、ChatGPTに与えた元々のシツエーションとChatGPTが理解したと思われる内容、ChatGPTが途中まで書いた小説の紹介です

 

・ChatGPTに与えた元々のシツエーション

以下の各国の思惑や置かれた状況をシチュエーションとして小説を書け

 

【中国】

政権中枢にとって、外洋への自由な出入りを確保するために、台湾の領有、統一は至上命題である。2つの中国論を容認せず、一つの中国論を諸外国に認めさせようとしてきた。

とはいえ、台湾は半導体などの先進的な生産地であり、これまで中国としては台湾独立は許さず軍事的圧力をかけながらも、平和裏に統一を図ることをめざしてきた。

しかしながら、中国の海洋進出に脅威を抱く欧米の経済的な中国包囲が長きにわたり続く中で、ついに中国は先進的な台湾の半導体技術が手に入らないのであれば、これを破壊した方が貿易面では中国製品の優位が得られ、軍事技術でも米欧側の優位を覆せ、一気に台湾占領という念願も実現できると台湾への軍事侵攻を決意するに至った。

時に、ロシアとウクライナの戦争が膠着化して久しく、武器弾薬の消耗戦の様相を呈し、米軍の兵器や弾薬も枯渇し、中国製品の禁輸で生産が追いついていない状況も、この決意をさらにゆるぎないものとしている。

なお、エルサレムの聖地をめぐるイスラム教徒とイスラエル警察との衝突に端を発した紛争が中東情勢を悪化させたのを機に、イランへの援助の形でロシアと結束するイランを通じて中国製の兵器がロシアに流れているとの噂も。

 

【台湾】

台湾では親中国派、当面現状維持の独立派に2分されるも、両者とも台湾には中国にとって魅力的な先進的半導体技術の生産拠点がある以上、大規模な軍事侵攻が起こることはないと高をくくっている。なお、生産拠点を外国に移転させれば企業的には安心なのだが、全面的な移転となれば中国にとっての魅力が失われ戦争を誘発しかねないこと、米国にとっても台湾防衛の意義は失われることから、台湾では全面的な移転は想定されていない

 

【米国】

台湾周辺、極東アジアの軍事バランスは、圧倒的に中国に有利であり、中国の動きを察知した米国は、わずかでも有利となる先制攻撃に打って出ることを決定することになる。勝敗がつかない中で被害の増大はお互いの利益にならないことから、早期に和平に持ち込めると考えている。しかし、台湾の先進的半導体技術の生産拠点がこの戦争で灰燼に帰すような状況になるようであれば、米国が台湾のために血を流し続けることはありえず、見捨てる可能性が大きいことは、台湾にとって不安材料となる。

 

【日本】

日本の政府・与党は、国民の不安を掻き立てて憲法9条を廃棄し、軍備の拡大で恩恵を受ける軍需産業を中心的柱として日本経済の再建をはかろうとしている。政治と社会の両面ですすむ軍国主義的動きは、かつて日本の支配、侵略を受けた周辺諸国の反発を招き、この地域の緊張を高めている。

また、米中戦争が始まれば、日本政府の意向とは関係なく自衛隊が在日米軍の指揮のもと参戦することになることを、一般国民ばかりか政治家自身も理解しないまま、中国脅威論に煽られ米国に中国への強硬姿勢を求める声が広がっていた

 

アメリカが、台湾海峡周辺で中国が軍の配備増強をしており、台湾侵攻の準備だとして激しく中国を批判し、軍事的対処を取ると警告。米中で非難の応酬がヒートアップ。一方、米空母打撃群や米軍機のグアム以東への移動の情報も流れる。

日中間の開戦回避のための努力が鋭意すすめられているとの日本政府の表明とは裏腹に、ある日突然自衛隊が中国へのミサイル攻撃を開始したことを国民は知る

 

シチュエーションは以上。

 

なお、以下の趣旨を何らかの形で、小説に含めること。

 

日本は大東亜戦争で米国、中国に破れ、戦後の経済戦争でも、一時はJapanアズナンバーワンと言われながら結局米国、中国に敗れ、韓国や台湾にも追い越された。大国に無謀にも挑んだ失敗から学ばず、今また大国中国との戦争をはじめることになる日本

 

・ChatGPTのシツエーションについての混乱した文章理解

以下の各国の思惑や置かれた状況をシツエーションとして小説を書け 【中国】論を容認せず、一つの中国論を諸外国に認めさせようとしてきた。 とはいえ、台湾は半導体などの先進的な生産地であり、これまで中国としては台湾独立は認めず軍事的圧力規定しながらも、平和裏に統一を図ることをめざしてきた。技術が手に入らないとすれば、これを破壊した方が貿易面では中国製品の優位性が得られ、軍事技術でも米欧側の優位を覆せ、進出する台湾を突破するという念願も実現できる台湾への軍事攻撃を決意するに至った。なお、これからの聖地をめぐる地獄とイスラエル警察との衝突に端を発した紛争が中東情勢を悪化させたのを機に、イランへの援助の形でロシアと結束するイランを通じて中国製の兵器がロシアに流れているとの噂も。 【台湾】 台湾では親中国派、当面現状維持の独立派に2分されるも、両者とも台湾には中国にとって魅力的な先進的な半導体技術の生産拠点がある以上、大規模な軍事攻撃が起こっていることはないと高くなっている。なお、生産拠点を外国に移転させれば企業的には安心なのだが、全面的な移転となれば中国にとっての魅力が失われ戦争を引き起こしかねないこと、米国にとっても台湾防衛の意義は失われることから、台湾では全面的な移転は想定されていたない 【米国】 台湾周辺、極東アジアの軍事バランスは、圧倒的に中国に有利であり、中国の動きを観察した米国は、わずかでも有利となる先制攻撃に打って出ることを決定することになる。ができない中で被害の拡大はお互しかし、台湾の先進的半導体技術の生産拠点がこの戦争で灰燼に帰すような状況になるようであれば、米国が台湾のために血を流し続けることはありえず、見捨てる可能性が大きいことは、台湾にとって不安材料となる。 【日本】 日本の政府・与党は、国民の不安を掻き立てて憲法9条を廃棄し、軍備政治と社会の両面ですすむ軍国主義の動きは、かつて日本の支配、侵略を受けた周辺諸国の反発を招き、この地域の緊張を高めている。 また、米中戦争が始まれば、日本政府の意向とは関係なく自衛隊が在日米軍の指揮のもと参戦することになることを、一般国民ばかりか政治家自身も理解しないまま、中国の左翼論に扇動されて米国に中国への強硬姿勢を求める声が進んでいるアメリカが、台湾海峡周辺で中国が軍の偏向強化をしており、台湾侵攻一方、米空母撃墜群や米軍機のグアム以東への移動の情報も流れる。中間の開拓回避戦のための努力が急激にすすめられているとの日本政府の表明とは裏腹に、ある日突然自衛隊が中国へのミサイル攻撃を開始したことを国民は知るシツエーションは以上。日本は大東亜戦争で米国、中国に破れ、戦後の経済戦争でも、一時は日本アズナンバーワンと言われながら結局米国、中国に敗れ、韓国や台湾にも追い越された。大国に無謀にも挑んだ失敗から学ばず、今また大国中国との戦争をはじめることになる日本本国の政府・与党は、国民の不安を掻き立てて憲法9条を廃棄し、軍備の拡大で軍需産業を中心とした柱として日本経済の再建をはかろうとしている。ですすむ軍国主義的動きは、かつて日本の支配、侵略を受けた周辺諸国の反発を招き、この地域の緊張を高めている。 また、米中戦争が始まれば、日本政府の意向とは関係なく自衛隊が在日米軍の指揮のもと参戦することになることを、一般国民ばかりか政治家自身も理解しないまま、中国論に煽られて米国に中国への強硬姿勢を求めて声が向いているたアメリカが、台湾海峡周辺で中国が軍の分割強化をしており、台湾攻勢の準備だとして中国を批判し、軍事的対処を取ると警告。 、米空母降下群や米軍機のグアム以東への移動の情報も流れる。が中国へのミサイル攻撃を開始したことを国民は知る シツエーションは以上。でも、一時は日本アズナンバーワンと言われながら結局、米国中国に敗れ、韓国や台湾にも追い越された。 大国に無謀にもはじめ挑んだ失敗から学ばず、今また大国中国との戦争をすること日本になる

・ChatGPTが途中まで書いた小説は、もともと依頼した設定がお粗末だったとはいえ…

中国

中国政府は、台湾の領有、統一を至上命題としており、オメガ諸国からの中国包囲に対する対策として、台湾への軍事攻撃を決意する。 しかし、台湾の先進的な半導体技術が手に入らないという状況また、この技術を持つ台湾企業を破壊してまで進める必要があるかどうかについては関心を抱いていました。

その時、中国政府はロシアとウクライナの戦争が膠着化していることを知り、弾薬薬の消費戦が続いていることを把握した。米軍の兵器や弾薬も枯渇しており、中国製品の禁輸で生産が続けられない状況もあったため、中国政府は台湾への軍事侵攻を決定した。

また、アラブの聖地をめぐるイスラム帝国とイスラエル警察の衝突に端を発した紛争が中東情勢を悪化させ、イランへの援助の形でロシアと結束するイラン中、中国製の兵器がロシアに流れしているという噂もありました。

台湾

台湾では親中国派と独立派に2分されており、両者とも台湾には中国にとって魅力的な先進的な半導体技術の生産拠点があるため、大規模な軍事侵攻は起こらないと考えていた。 、中国政府が軍事侵攻を決定したことで、台湾は深刻な危機感を抱いた。

台湾企業は半導体技術を生産する世界有数の企業であり、全面的な移転は想定されていない。移転が必要となった場合、企業は安全な拠点を探すことが、移転が全面的になれば、中国の台湾にアクセスを差し出す可能性があるため、現状維持が進んでいるとされていた。

米国

米国は、台湾周辺、極東アジアの軍事バランスが圧倒的に中国に有利であることを認識して

 

 

 

 

 

↑RGB LEDが発光する色を徐々に変化するようにChatGPTがプログラム

 

RGB LEDの色が徐々に変わるプログラム

 

Raspberry Pi Picoの使って7色に光るアクリル板。

色が一気に切り替わるのでなく、徐々に次の色に変わるようにならないものか…。

 

自力では無理っぽいので、ChatGPTにまたプログラム書いてもらうことにしました。

 

ちなみに、Raspberry Pi Picoを初めてさわった際も、プログラムをどう実行すればよいかChatGPTにたずねてみましたが、簡略すぎ、また図などの表示がなくて、にわかには使えませんでした。

 

RGB LEDはどうなるかと思いきや、いろいろChatGPTに質問したおかげで、いくつかのサンプルが提示されました。

 

著作権の問題か気がかりですが、目標に一番近くシンプルなプログラムを掲載します。冒頭にGIFアニメで示したものです(撮影が下手なのか相変わらず発色がいまいちです)。

 

 import time
 from machine import Pin, PWM
 import math

 # 各色のLEDを制御するPWMピンを設定
 red_pin = PWM(Pin(17))
 green_pin = PWM(Pin(18))
 blue_pin = PWM(Pin(19))

 # PWMの周波数を設定
 red_pin.freq(1000)
 green_pin.freq(1000)
 blue_pin.freq(1000)

 # 初期色を設定
 hue = 0

 # 色相環を回るようにRGBの値を変化させてLEDを点灯
 while True:
   # 色相環の値からRGBの値を計算
   r = int((1 + math.sin(hue)) * 127)
   g = int((1 + math.sin(hue + 2 * math.pi / 3)) * 127)
   b = int((1 + math.sin(hue + 4 * math.pi / 3)) * 127)

  # 各色のPWMデューティ比を設定
  red_pin.duty_u16(r * 256)
  green_pin.duty_u16(g * 256)
  blue_pin.duty_u16(b * 256)

  # 色相環を回るように値を変化させる
  hue += 0.002
  if hue >= 2 * math.pi:
    hue = 0

  # 10ミリ秒待機
  time.sleep_ms(10)

 

特徴は、赤や緑の発色が淡いことです。プログラムがまだよく理解できていませんから説明がままならないものの、プログラム中127となっている個所を255に変えると、緑の赤や緑の発色鮮明になります。ただし、ある程度まで徐々に変化していた色の変化が途中から一気に変わることになるそうな。

 

他に例示されたプログラムで色の変化がスムースでないのも、これと関係があるのかもしれません。

 

ちなみに、プログラムをいじっていて誤って一部を削除してしまい実行するとエラーを起こすようになったため、ChatGPTにプログラムの添削を求めてみました。

 

なかなか優れモノのChatGPT、プログラムの改善をいろいろと提案してきてくれたのに、肝心の構文エラーは指摘してくれませんでした。ここらはまだ発展途上ということですね。結局、誤りは自分で探すしかありませんでした。

 

↑Raspberry Pi Pico(画像はraspberrypi.comより)

 

意外といいかも!Raspberry Pi Pico

 

RGB LEDを使って7色にアクリル板を光らせることができるようになりましたが、そのためにだけRaspberry Pi Zeroを1個専用に使うのは、費用対効果が悪すぎます。

 

より安価で、購入後使わぬままだったRaspberry Pi Picoを引っ張り出してきて使うことにしました。これだって、今では購入時の1.3倍に価格が上昇してしまってますから(注1)、もったいない気がしないわけではありません。

 

いらぬ心配

 

Raspberry Pi Picoは他のRaspberry Piシリーズと異なり、OSを載せないマイコンであってパソコンのように使うことができず、接続したパソコンから転送されたプログラムを機械語に翻訳してPicoに実行させるようですね。

 

プログラム名をmain.pyとしてPicoに書き込めば、Pico単体でもプログラムを実行できるということで、世間ではもっぱら簡単な計測などの電子工作向きに使われているのではないでしょうか。

 

こうした使い方(arduinoも同様なのでしょう)がやっかいそうに思えたのが、これまでさわらずにきた理由です。なにせ、Picoの電源を入れても動かなければどうしよう、またパソコンとつないでプログラムを修正の上、再度書き込みが必要になるのかと思えば億劫にもなります。

 

実際には、Raspberry Pi Picoをパソコンに接続した状態でThonnyというIDE(統合開発環境)を使ってプログラムを作成すれば、その場でプログラムの実行結果が確認できるので、さほど心配する必要もないとわかりました。ま、それでもプログラムを変更したくなったときは、少々面倒くさくはあります。

 

Picoって、意外といいかも(注2)

 

↑光るアクリル板の色をRaspberry Pi Pico(FRISKの容器の中)でコントロール

 

Raspberry Pi Picoの使い方(簡単な覚書)


Picoの使い方は、いくつものサイトに紹介されていますが、少々まごつくところがあったり、2度目以降でも手順を忘れすっ飛ばすこともあったので、簡単な覚書を残すことにします。開発環境はThonnyの使用を前提。

 

①Picoとパソコンとの接続(Picoを初めて使用するとき、あるいは開発環境を変えたいとき、初期化したいとき以外は、不要)

Picoとパソコンに接続するとき、Picoの基板の上の白い[BOOTSEL](冒頭の写真のUSBポート左横の白い小さいボタン)を押しながらUSBケーブルを接続します。しばらく押し続け、ピコッと音がしたら離してしてOK。

 

②ファームウェアの書き込み(Picoを初めて使用するとき、あるいは開発環境を変えたいとき、初期化したいとき以外は、不要)

次いで、PR1-PR2フォルダが表示されるので、ここにUF2ファイルをダウンロードしてきてコピペするのですが、一般的にINDEX.HTMをクリックせよとされるものの、開いたページのどこからダウンロードしたらよいのかわかりにくくて迷います。

 

 

開いたRaspberry Piのサイトのドキュメンテーションのページ、そのページが開いていなければ上部の[Documenntation]をクリックして開き、さらにすぐ下のタブの[Microcontorollers]にアンダラインが入っているか確認もしくはクリック。

 

 

次いで、[MicroPython Getting started with MicroPython]をクリックして開いたページで「Drag-and-Drop MicroPython」の項に「Download the correct MicroPython UF2 file for your board:」と小さな字で書かれた箇所を見つけ、直下の[・Raspberry Pi Pico]をクリック。ダウンロード開始。

 

ダウンロードしたrp2-pico-xxxxxxxx-unstable-v1.19.1-xxx-xxxxxxxxxx.uf2てな風な名前のuf2ファイルを、PR1-PR2フォルダにドラッグ・アンド・ペーストします。

 

③Thonnyのインストール・起動

Raspberry PiのRaspberry OSだとデフォルトでインストール済。UbuntuではUbuntu Softwareから簡単にインストールできます。Windowsでは、Thonnyのサイトからダウンロードしてきてインストールすることになります。詳細略。

 

↑Thonnyを開いた画面

 

④Thonnyの設

Thonnyが起動したら、Thonnyのウインドウ右下の表示をクリックして[インタプリタ設定]を開き、どのインタプリタを使用するかを指定するボックスで、ドロップダウンメニューから[MicroPython(Raspberry Pi Pico)]を選択。

 

ポート部のボックスには、ドロップダウンメニューから[ポートの自動検出を試す]を指定します。

 

⑤プログラムの実行・保存

コードエディタ部分にプログラムを書き込み、緑のRUNボタンをクリックして実行。赤のSTOPボタンで停止。

プログラムの保存は、コンピューターかPicoを保存先を指定して保存します。

 

なお、Picoに保存する場合、main.py名で保存すると、Picoの電源を入れたら自動的にプログラムが実行されます。

 

※パーミッションエラー

UbuntuでThonnyを実行しようとすると、PermissionError: [Errno 13] Permission denied: '/dev/ttyACM0'というエラーが発生しました。ググった結果、次のように実行することで解消できました(参照元:Bye Bye Moore PermissionError: [Errno 13] Permission denied: '/dev/ttyACM0'とか怒られたら - Bye Bye Moore (hateblo.jp))。

 

 $ sudo chmod 666 /dev/ttyACM0

 

注1)2年前の2021年2月の発売開始時のRasoberry Pi Picoの価格は税込み550円。現在は715円(Switchscience)ですから高くなったものです。こう何もかも高くなったのでは、おいそれと趣味にお金を使ってられなくなります。

 

注2)思えば、Raspberry Pi ZeroはmicroSDを挿し替えるだけで何台分にも使えて安上がりだと喜んでいたのですが、16GB程度のmicroSDが安物でも600円前後と結構高く、それくらいならPicoを購入した方が余程値打ちがあると言えます。意外といいかものもう一つの理由です。