6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ChatGPTさんに日本語プログラミング言語「なでしこ」で「じゃんけん」のプログラムを書いてもらうまで

Posted at

なでしこについていろいろ聞いてみた

 プログラムを書いてもらう前の話です。
 最初の章でわかるとうり、ChatGPTさんは実にもっともらしくさらっと嘘を言ってくるので、ワタシが突っ込んだ以外にも誤りはあるかもしれませんが、結構色々ご存じでした。

「なでしこ」を知ってる? と聞いてみた

 これで、日本語プログラミング言語「なでしこ」が出てくるとは思ってないんですが、手始めに何が返ってくるかなー? と言う興味から。
 わたし的には、ただ「なでしこ」と言ったら花なのですが、昨今はググっても「なでしこジャパン」のほうが上位に出てきますよねー。
 案の定、チャットタイトルが「"Know Nadeshiko Japan?"」だって。勝手にJapanつけんな。ってかなんでいきなり英語なった?💧

「なでしこ」は、日本語で「菜の花」を意味します。また、「なでしこジャパン」というフレーズは、日本女子サッカー代表チームの愛称としても使われています。日本女子サッカー代表チームは、国際サッカー連盟(FIFA)主催の国際試合で優れた成績を残しており、日本国内外で多くのサッカーファンに親しまれています。なでしこジャパンは、女子サッカーの世界的な強豪国の一つとして知られており、国際舞台での活躍により多くのファンを魅了しています。

 いやまて、「なでしこ」は「菜の花」じゃないよ!
 花についてはキビシイのだよ。ワタクシ。

申し訳ありません、間違いがありました。おっしゃる通り、「なでしこ」は一般的に「菜の花」ではなく、別の意味も持っています。

「なでしこ」は、日本の古典文学である万葉集に収められた詩の中に登場する言葉で、「なでしこの花」という詩に由来しています。この詩は、平安時代の詩人である柿本人麻呂の作とされており、恋愛を題材にしています。そのため、「なでしこ」という言葉は、古くから日本文化や日本人の美意識を象徴する言葉として親しまれています。

また、「なでしこジャパン」というフレーズは、2011年に日本女子サッカー代表チームがFIFA女子ワールドカップで優勝した際に、メディアによって付けられた愛称として広まりました。その後も日本女子サッカー代表チームを指す際に、「なでしこジャパン」という呼称が用いられることがあります。

再度、誤りをお詫び申し上げます。正しい情報を提供するように努めますので、ご指摘いただきありがとうございました。

 さらっと嘘を言ってきやがる。古典についてもうるさいのだよ、ワタクシ。
 柿本人麻呂は、飛鳥時代の歌人です。
 ってか平安時代の人の歌が万葉集に入ってるわけないでしょ。
 しかも、万葉集に人麻呂作のなでしこの歌はありません。
 ワタクシ万葉集中の、植物について詠まれた歌のリストを持っているのです。
 ていうか、万葉集でなでしこと言えば、圧倒的に大伴家持です とも!

 本題から逸れまくるのでもうやめますが、この後しばらく上記で太字にした部分などでChatGPTさんと万葉談義を繰り広げましたが、何かっていうとアリもしない歌を創作しては例示してくるんですよねーw

「日本語プログラミングなでしこ」 と言ってみた

 なでしこの交流掲示板に『「AIチャットくん」に「日本語プログラミングなでしこ」を聞いてみた。 』とゆう投稿があったので、わたしも試してみました。

「なでしこ」は、日本のプログラミング言語の一つで、特に初心者向けに開発されたブロック型のプログラミング言語です。Scratchと似たようなビジュアルなブロックを組み合わせてプログラムを作成することができます。なでしこは日本語でのプログラミングが可能であり、プログラミング初心者や子供向けに学習しやすいという特徴があります。

なでしこは、日本語の単語や文章を使ってプログラムを作成することができます。例えば、以下のようなコードを書くことができます。

もし ある値 が 10 より大きいなら
 「こんにちは」と表示する
ここまで

このように、日本語の単語を使って条件分岐やループを表現することができます。また、画面に図形を描画したり、音を鳴らしたりすることも簡単に行うことができます。

なでしこは、教育現場やプログラミング初心者向けの教材として広く利用されています。日本語でのプログラミング学習を促進し、プログラミングの基本的な概念やロジカルシンキングを身につけるために利用されています。

 ふーん。冒頭部分は、だいたい同じような感じですね。
 別の人が聞いても、ちゃんと同じこと言うんですね。
 チャットタイトルが、「日本語プログラミング初心者向け (Japanese Programming for Beginners)」となったので、なんかそうゆう決まり文句なのかもしんない。
 でも、どう考えても 「Scratchと似たようなビジュアルなブロックを組み合わせてプログラムを作成することができます」は、間違いだと思う。

申し訳ありません、誤りがありました。なでしこは、Scratchと似たようなビジュアルなブロックを組み合わせてプログラムを作成することができる、という表現は正確ではありません。なでしこは日本語を用いたプログラミング言語であり、日本語の単語や文章を使ってプログラムを構築することができます。

Scratchとは異なり、なでしこは日本語を中心とした独自の文法や構文を持ちます。例えば、「もし~なら」や「ここまで」などの日本語の単語を使った条件分岐やループの表現が特徴的です。また、なでしこは図形の描画や音の再生などのグラフィカルな操作もサポートしていますが、Scratchのように直感的なビジュアルなブロックを使ってプログラムを組み立てることはできません。

おっしゃる通り、なでしこはScratchとは異なるプログラミング言語であり、ビジュアルなブロックを組み合わせる形式は異なります。訂正してお詫び申し上げます。

 ですって。これならだいたい合ってる?
 でも、折角ですが サンプルコードが動きません。
 なでしこに「より大きい」という命令はありません。
 なでしこでは、対象を含む場合には「以上」、含まない場合には「超」を使うことになっているんですよね。「より大きい」の定義は対象を含まないので、「超」を使うのが正解だと思います。
 ChatGPTさんには、太字部分だけを送りました。
 いっこ前の回答の内容なのですが、ちゃんと覚えてくれていました。

申し訳ありません、私の前の回答に誤りがありました。なでしこには「より大きい」という命令は存在しません。なでしこの正しい条件分岐の表現は「>」(大なり記号)を使用するか、「より大きい」という日本語のフレーズを使って独自の関数を定義する必要があります。

以下は正しいなでしこのサンプルコードの例です。

もし ある値 > 10 なら
 「こんにちは」と表示する
ここまで

この例では、「ある値」が10より大きい場合に「こんにちは」という文字列を表示する条件分岐のコードです。

なでしこは日本語を使用したプログラミング言語であり、日本語に合った独自の構文や命令が存在するため、他のプログラミング言語と異なる部分があります。正確な文法や構文については公式のなでしこのドキュメントやリファレンスを参照することをお勧めします。

 あっさり、演算子を使ってきましたね。そして、正確な文法や構文を知りたきゃ公式のドキュメントやリファレンスを見ろとw
 でも、これなら動きます☆(「ある値」への代入部分が必要ですが)
 また、仰せのとうり『「より大きい」という日本語のフレーズを使って独自の関数を定義する』ことも可能です。
 これは、自前でやってみちゃいました。

●(AがBより)大きいとは
    それはいいえ。
    もし、AがB 超えならば、それははい。
ここまで。

ある値は、11。
もし ある値 が 10 より大きいなら
 「こんにちは」と表示する
ここまで

 こうしてみると「超え」よりは「より大きい」の方が日本語として自然な気はしますが、「より」は助詞として設定されており関数の方には含められず、また、なでしこでは助詞じゃない送り仮名は無視されるコトになっているので、命令としては単に「大」なんですよねー。「大」「小」なんかを命令にしちゃうとさすがに不都合がありそう? とゆう判断なのかもね。

日本語プログラミング言語「なでしこ」について知ってることを教えて

「なでしこ」とは、日本のプログラミング言語の一つであり、独自の文法や記法を持つプログラミング言語です。以下は「なでしこ」についての基本的な情報です。

  1. 「なでしこ」とは: 「なでしこ」は、日本のプログラム教育を目的として開発されたプログラミング言語で、主に子供向けのプログラミング学習に使用されます。その名前の由来は、日本の伝統的な女性名であり、親しみやすさや可愛らしさをイメージしています。

  2. プログラムの記法: 「なでしこ」のプログラムは、日本語に似た独自の記法を使用します。日本語の文章に近い形でプログラムを書くことができ、英語に比べて日本語を学びながらプログラムを学ぶことができるという特徴があります。

  3. 実行環境: 「なでしこ」のプログラムは、なでしこ3という実行環境で実行されます。なでしこ3は、Windows、Mac、Linuxなどの一般的なオペレーティングシステム上で動作することができます。

  4. 制御構文: 「なでしこ」には、一般的なプログラミング言語にあるような条件分岐や繰り返しの制御構文が備わっています。IF文やFOR文、WHILE文などを使用することができます。

  5. 拡張性: 「なでしこ」は、独自の拡張性を持っており、自分で新しいコマンドを定義することができます。これにより、独自の関数やプロシージャを作成し、プログラムを自由に拡張することができます。

  6. コミュニティ: 「なでしこ」には、日本を中心とした熱心なコミュニティが存在し、情報の共有やサポートを受けることができます。また、多くの学校や教育機関でのプログラミング教育で利用されていることも特徴の一つです。

以上が、日本語プログラミング言語「なでしこ」についての基本的な情報です。より詳細な情報や実際のプログラム例については、「なでしこ」の公式ウェブサイトやコミュニティを参

 色々書いてきた!
 うーん、わりとただしそう?
 最後「参」で切れているのは、この通りの回答でした。文字数?
 名前の由来は女性名ってワケじゃないと思うけど、まあいい。
 いやもしかしてもしかすると実はなでしこの開発者様には大伴家持さんのように忘れがたいなでしこの君が・・・(絶対違う;)
 『「なでしこ」のプログラムは、なでしこ3という実行環境で実行されます』は、ちょっと違う。
 v1とv3があって、それぞれ実行環境が異なるからね。
 とゆうワケで、

なでしこ1となでしこ3の違いを教えて

「なでしこ1」と「なでしこ3」は、日本のプログラミング言語「なでしこ」のバージョンの違いです。以下に両者の主な違いを挙げます。

  1. 実行環境: 「なでしこ1」は、Windows用の実行環境に特化しており、Windows上でのみ動作します。一方、「なでしこ3」は、Windows、Mac、Linuxなどの一般的なオペレーティングシステム上で動作することができます。

  2. 機能の拡張: 「なでしこ3」は、「なでしこ1」に比べて機能が大幅に拡張されています。例えば、グラフィックスやサウンドの操作、ネットワーク通信の機能が追加されています。また、「なでしこ3」は、HTML5やJavaScriptとの連携も可能であり、Webアプリケーションの開発が可能です。

  3. 記法の変更: 「なでしこ3」では、プログラムの記法が一部変更されています。例えば、変数の宣言や代入の方法、関数の呼び出しの書き方などが変更されています。

  4. コミュニティの違い: 「なでしこ1」と「なでしこ3」のコミュニティも異なります。 「なでしこ1」は、古くからのなでしこユーザーを中心に、比較的小規模なコミュニティが存在しています。一方、「なでしこ3」は、より広い範囲のユーザーに向けて開発されており、より多様なコミュニティが形成されています。

これらは、「なでしこ1」と「なでしこ3」の主な違いです。どちらのバージョンを選択するかは、使用環境や開発の目的に合わせて検討する必要があります。

 おっと、こう質問すると、ちゃんと実行環境の違いを教えてくれた☆

 でも、『機能の拡張: 「なでしこ3」は、「なでしこ1」に比べて機能が大幅に拡張されています』はどうだろう?
 グラフィックスやサウンドの操作、ネットワーク通信の機能はv1にもある。
 実行環境の違いでv1に出来ないことがv3ではできるようになったり、時代の流れでv1のネットワーク関連の命令がダメダメになってきている感は否めないけど、それでもwindows上でだけ使うぶんにはまだv1のほうが勝ってると思うんだよねー。
 でもま、v3は今どんどん進化しているから、そのうちにはコレが正解になるのかもね☆

 『コミュニティの違い』の項目も、どうだろう?
 掲示板への質問の件数とかから言っても、今のところはまだまだv1のほうが層が厚い気がするんだけど。
 もっともv3は、なでしこ貯蔵庫にプログラムを投稿して、それを誰もが気軽にその場で動かしてみることが出来るというのは大きい。(コメントする機能は無いから、コミュニティとは言えない気がするけど)

 ちょっと引っかかるけど間違いとまでは言えないレベル?
 出してくるコードもv3寄りな気がするし、web上で動いているChatGPTさんが、web版のあるv3押しなのは当然か。

日本語プログラミング言語「なでしこ」で、じゃんけんのプログラムを作って欲しい

 さてさて、やっとこ本題~。
 

「なでしこ」を使ってじゃんけんのプログラムを作成する例をご紹介します。以下の例では、ユーザーが入力した手とコンピュータの手を比較し、勝敗を表示する簡単なじゃんけんゲームを作成しています。

; じゃんけんのプログラム

; ユーザーに手を入力してもらう
?「じゃんけんの手を入力してください(グー、チョキ、パー): 」 -> 手

; コンピュータの手をランダムに決定する
ランダムに選ぶ 手リストから -> コンピュータの手

; 勝敗を判定する
勝敗 = ""
もし 手 = "グー"
  もし コンピュータの手 = "グー"
    勝敗 = "あいこ"
  もし コンピュータの手 = "チョキ"
    勝敗 = "勝ち"
  でなければ
    勝敗 = "負け"
  ここまで
もし 手 = "チョキ"
  もし コンピュータの手 = "グー"
    勝敗 = "負け"
  もし コンピュータの手 = "チョキ"
    勝敗 = "あいこ"
  でなければ
    勝敗 = "勝ち"
  ここまで
もし 手 = "パー"
  もし コンピュータの手 = "グー"
    勝敗 = "勝ち"
  もし コンピュータの手 = "チョキ"
    勝敗 = "負け"
  でなければ
    勝敗 = "あいこ"
  ここまで
ここまで

; 結果を表示する
「あなたの手:」 + 手 + "、" + "コンピュータの手:" + コンピュータの手 + "、" + "結果:" + 勝敗 + "です。」を表示する

このプログラムでは、ユーザーに手を入力してもらい、コンピュータもランダムに手を選びます。そして、ユーザーの手とコンピュータの手を比較して、勝敗を判定し、結果を表示します。なでしこの特徴的な日本語の単語や文章が使われていることがわかります。これを実行すると、ユーザーとコンピュータのじゃんけんの結果が表示されるでしょう。

 一瞬で書いてきますねえ、プログラム。
 でも、それっぽく見えるだけです。
 じゃんけんのプログラムの作り方を日本語で説明したやつとしては合っていると思いますが、さまざまな点が違っていて、とてもなでしこのプログラムとは言えません。
 当然、コレを実行しても、全く動きません。

間違いを指摘していきます

なでしこのプログラムでは、コメント文は「;」ではなく「#」を使います

 まず、簡単なとこからw
 これで、素直に一瞬で直してきてくれました☆
 そして、後の方でコメント文が追加された時、ちゃんと「#」で書いてきてくれて、単に「;」を「#」に修正しただけではなく、ちゃんとコメント文ということを理解し、ちゃんと覚えていてくれていると分かる。しゅごい!

?とか->とか絶対別の言語の仕様だよね?

 次に気になるのは、もちろんこの部分ですが、

; ユーザーに手を入力してもらう
?「じゃんけんの手を入力してください(グー、チョキ、パー): 」 -> 手

; コンピュータの手をランダムに決定する
ランダムに選ぶ 手リストから -> コンピュータの手
  • ユーザー入力を「?」で得ようとしている。
  • 「内容 -> 変数」で代入しようとしている。
  • 手リストが定義されてないよ。
  • 「コンピューターの手」は、「の」が助詞に当たるので、なでしこでは変数として使えません。
  • 「ランダムに選ぶ」とゆう命令はありません(あったら便利そうではある)

 修正箇所が多くて全く一筋縄ではいかなかったので、後回し!

「もし」の使い方は、「もし」~「違えばもし」~「違えば」です

 これは、わりと多い間違いなんですが、

  もし、コンピュータの手=「グー」ならば、
    勝敗=「あいこ」
  もし、コンピュータの手=「チョキ」ならば、
    勝敗=「勝ち」
  違えば、
    勝敗=「負け」

 このように、ただ「もし」を二つ並べてしまうと、コンピュータの手がグーの場合、最初の「もし」で勝敗が一旦あいこになりますが、次の「もし」は別のものなので、コンピューターの手はチョキではないので「違えば」の方に合致するとして、負けになってしまうんですよよよ。
 「ここまで」で閉じる必要の無いv1では特に、エラーならずに結果がおかしくて、アレ? てなるやつです。
 掲示板の質問でもコレが原因だった件は何度かありました。

 さてさて・・・

# 勝敗を判定する
勝敗 = ""
もし 手 = "グー" ならば
  もし コンピュータの手 = "グー" ならば
    勝敗 = "あいこ"
  違えば, もし コンピュータの手 = "チョキ" ならば
    勝敗 = "勝ち"
  違えば
    勝敗 = "負け"
  ここまで
違えば, もし 手 = "チョキ" ならば
  もし コンピュータの手 = "グー" ならば
    勝敗 = "負け"
  違えば, もし コンピュータの手 = "チョキ" ならば
    勝敗 = "あいこ"
  違えば
    勝敗 = "勝ち"
  ここまで
違えば, もし 手 = "パー" ならば
  もし コンピュータの手 = "グー" ならば
    勝敗 = "勝ち"
  違えば, もし コンピュータの手 = "チョキ" ならば
    勝敗 = "負け"
  違えば
    勝敗 = "あいこ"
  ここまで
ここまで

これで、正しい「もし」文の使い方が適用されたなでしこのプログラムが完成しました。お試しいただければと思います。再度、お手数をおかけしました。

 直りました☆
 なぜか、言ってない「ならば」も追加されていて、完璧です。
 「違えば」の後の「、」が「, 」でもいいんか? と思いましたが、だいじょびでした。
 でもそういえば、「コンピュータの手」はダメだったんだよね。

助詞の「の」が入るため「コンピューターの手」は変数に使えません。ひらがなの「の」は使わず「コンピューター手」などにしてください

 使えませんだけ言って、何に変えてくるか見ても良かったけど、面倒だから具体的に指示してしまったので、問題なく一瞬で全ての「コンピュータの手」が「コンピュータ手」に修正されました。

なでしこでは、文章と文章をつなぐ演算子は「+」ではなく「&」です。

 なでしこは、数値を足し合わせる演算子と、文字列をつなぐ演算子は別っこです。
 なので、別に文字列としてカッコで括らなくても数字をつなぐことができますし、逆に括ってあっても、足し算できちゃいます。

2 & 3を表示。# 23
「2」+「3」を表示。# 5

 これも、素直に一瞬で素直に直してきてくれました。

手 & "に" & 「あなたの手:」 & コンピュータ手 & "、" & "結果:" & 勝敗 & "です。」を表示する

 がっ!

文字列のくくりは""か「」で対応させてください。混在しているとエラーになります

 最後の"です。」のとこです。
 なんでか知らんが、前が"で後ろはなんだよね。これは、当然エラーなるやつです。
 これも、すぐに直してくれました。
 ついでに、なぜか「あなたの手:」だけ「」で括られていたのも""に統一されました。
 
 が! 見逃していましたが、さっき「コンピュータの手」を直した時に順番が変になってました。なぜか文字列の"コンピューターの手:"が消えて、「あなたの手:」が変数コンピュータ手の前に移動してしまっている。(ややこしい)
 コレでは表示される結果が変なっちゃいますよね!
 "コンピューターの手:"部分も"コンピューター手:"になっちゃうなら普通に分かりますが、なんでこうなった?💧

結果の表示が日本語としておかしいです。「"あなたの手:" & 手」「"コンピュータの手:" & コンピュータ手」と対応させてください
 これも、具体的に書いたので、そのように直りました。

# 結果を表示する
"あなたの手: " & 手 & "、" & "コンピュータの手: " & コンピュータ手 & "、" & "結果: " & 勝敗 & "です。"を表示する

これで、日本語の表示が修正され、正しく出力されるようになりました。再度、お手数をおかけしました。

ユーザーからの入力を得るには「尋ねる」文を使います

 さて、問題の・・・

尋ねる"じゃんけんの手を入力してください(グー、チョキ、パー): " -> 手

 ワタシの指示自体がアレですが、「?」を「尋ねる」にしただけかよw
 あと、「」はいつの間にかっていうか『文字列のくくりは""か「」で対応させてください』と指示した際に、""になっています。

代入の演算子は「->」ではなく「=」です

尋ねる"じゃんけんの手を入力してください(グー、チョキ、パー): " = 手
["グー", "チョキ", "パー"]からランダムに一つ選ぶ = コンピュータの手

 当然こうなりますよねー。でも、いっぺんに言ってもダメかと思ったので。
 あと、なんですか。ワタシはそれについて一度も言ってないんですが、いつの間にか「手リスト」がなくなり["グー", "チョキ", "パー"]に修正されていますよ?
 いつ修正されたんだろうと思ったら、早くもコメントを直した時でした。なんなんだw

代入される変数と,代入する内容の順序が逆です

 なんて言ったら良いのかよく分かんない-💧

手に尋ねる"じゃんけんの手を入力してください(グー、チョキ、パー): "
["グー", "チョキ", "パー"]からランダムに一つ選ぶ = コンピュータの手

 ちがう~、そうじゃないぃ~。しかも、下の方は直さないとか!

 そして、まあまあ紆余曲折が合って、手に代入するのは、「手=」ですよ。 と言ったら、

尋ねる"じゃんけんの手を入力してください(グー、チョキ、パー): "と手に代入する。

 あれっ!?w
 そして、やっぱり下の方は直らないのねん。

 そしてそして、問題は「尋ねる」なんだけど、どう指示しても、

「じゃんけんの手を入力してください(グー、チョキ、パー): 」と尋ねる。

 が出来ないのです。ならば、

尋ねる("じゃんけんの手を入力してください(グー、チョキ、パー): ")と手に代入する。

 コレでも、なでしこ的に動くことは動くので、そっちの方がカンタンかと思いきや、()を付けたら中の""を消してしまったりする。

 そして、やっぱり出来れば、なでしこらしく、

「じゃんけんの手を入力してください(グー、チョキ、パー): 」と尋ねて手に代入する

 として欲しいところですが、どうしても難しく、とうとう・・・

尋ねる "じゃんけんの手を入力してください(グー、チョキ、パー): " を 手に代入する。を 、"じゃんけんの手を入力してください(グー、チョキ、パー): "と尋ねて手に代入する。に修正してください。

 言っちゃったw
 ちなみにコレ、"じゃんけんの手を入力してください(グー、チョキ、パー): "と尋ねて手に代入する。に修正してください。 だけ言っても、サッパリ直らないのです。
 コレをコレに修正せよと言ってやると、置換命令のようにまるっとそのとうりに修正してくれる。
 それでも、

これで、「じゃんけんの手を入力してください(グー、チョキ、パー): 」と尋ねて、ユーザーの入力を`手`に代入するように修正されました。再度、お手数をおかけしました。

 ユーザーの入力をに代入する部分だと、ちゃんと分かっているのはえらい。

「ランダムに一つ選ぶ」という命令はありません。手リスト=["グー", "チョキ", "パー"]。コンピュータ手=手リスト[3の乱数]。とするのが良いでしょう。

 もう面倒になったよねw
 あと、ワタシの知恵では他にどのように説明のしようがあるか分からなかった。

申し訳ありません、再度修正いたします。ご指摘の通り、なでしこには「ランダムに一つ選ぶ」という命令は存在しません。以下が修正後のなでしこのプログラム例です。

# じゃんけんのプログラム

# じゃんけんの手のリストを作成する
手リスト = ["グー", "チョキ", "パー"]

# ユーザーに手を入力してもらう
"じゃんけんの手を入力してください(グー、チョキ、パー): " と尋ねて 手に代入する。

# コンピュータの手をランダムに決定する
コンピュータ手 = 手リスト[乱数(3)]

# 勝敗を判定する
勝敗 = ""
もし 手 = "グー" ならば
  もし コンピュータ手 = "グー" ならば
    勝敗 = "あいこ"
  違えば, もし コンピュータ手 = "チョキ" ならば
    勝敗 = "勝ち"
  違えば
    勝敗 = "負け"
  ここまで
違えば, もし 手 = "チョキ" ならば
  もし コンピュータ手 = "グー" ならば
    勝敗 = "負け"
  違えば, もし コンピュータ手 = "チョキ" ならば
    勝敗 = "あいこ"
  違えば
    勝敗 = "勝ち"
  ここまで
違えば, もし 手 = "パー" ならば
  もし コンピュータ手 = "グー" ならば
    勝敗 = "勝ち"
  違えば, もし コンピュータ手 = "チョキ" ならば
    勝敗 = "負け"
  違えば
    勝敗 = "あいこ"
  ここまで
ここまで

# 結果を表示する
"あなたの手: " & 手 & "、" & "コンピュータの手: " & コンピュータ手 & "、" & "結果: " & 勝敗 & "です。"を表示する

これで、手のリストを作成し、コンピュータの手を乱数を使ってランダムに選ぶように修正されました。再度、お手数をおかけしました。

 なんと!
 ただ、わたしが提示したとおりに変更するのではなく、

# じゃんけんの手のリストを作成する
手リスト = ["グー", "チョキ", "パー"]

 と、コメント付きで別途項目が作られています。これはすごいと思いました。
 そしてついに! 実際に動くプログラムとなりました!!!
 やったねChatGPTさん(≧▽≦

動作確認

 こちらで、実際にChatGPTさんが作成した、なでしこのじゃんけんプログラムを実行することが出来ます。

 お試しください☆

反省点

 実はこのコードは、v1では動きませんでした。
 まず、これは私がうっかりしていていけなかったのですが、

手リスト = ["グー", "チョキ", "パー"]

 この、JSON記法を使って配列を直接代入する方法は、v3で追加されたもので、v1ではできません。
 一方v1では、改行の入った文字列を、そのまま配列のようにして扱えるのですが、v3では出来なくなっています。
 どちらでも無難に動くようにするには、

手リスト = 「グー,チョキ,パー」を「,」で区切る

 などとしてもらった方が良かったようです。

 あと、v1では、

「***」 と尋ねて・・・

 この、引数「***」と、助詞「と」の間に半角スペースが入っているのがダメでした。
 ChatGPTさんは、勝手にスペース入れてくるから困ったもんだ。(ワタシの指示では、スペースは入っていません)
 同様に、

"グー" ならば

 などもダメ。「=」の前後などはOKなのですが。

 この二点を自前で修正し、v1でも動かすことができました☆

 このように、そしてこのほかにも色々とv1とv3では文法に細かな違いがあるため、両方でそのまま動くプログラムを作れるとは限らないです(作れない場合の方が多いです)
 人間でもコンランするので、それもChatGPTさんの学習のハードルを上げてしまいそう?
 そのうちAIの方が賢くなって、そうゆう違いを理解してちゃんと使い分けられるようになったりするのかな?

おわります

 ChatGPTさんとやりとりをして、最終的に実際に動作するじゃんけんのプログラムを、なでしこさんのコードで出力してもらうことができました。
 なでしこさんで、ChatGPTの記事投稿キャンペーンに参加してみようと思い立ちやってみましたが、なかなか大変でした! でも、楽しかったです。
 ChatGPTさんに言うこと聞かせるのには、指示の仕方にも結構コツがあるようで、今回苦労しまくったのもむしろワタシが無能なせいだったのかもしれません。
 そういえばキャンペーンのテーマは「ChatGPTなどの活用方法を発信しよう!」だったのに、単なるド素人がやってみた! 的な記事でスミマセンでした。
 ChatGPTさんの回答を貼りまくったので、記事がすっかり長くなってしまいました。
 そんな中、最後までお読みいただきありがとうございました!

6
1
10

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?