全然使ってもらえないので少し宣伝させてください。
OpenAI APIを使ってAI占いサービスの「占い気分」というWebアプリをリリースしました🎉パチパチ
完全無料&登録不要で使えるので良ければ占ってみてください🔮
この記事について
この記事は本来ならputs 'HelloWorld'
で済むはずのHelloWorldと表示するだけの
プログラムをChatGPTさんにとにかく複雑に出力してもらうだけの記事です。
なぜそんなことをしたのか
ただの興味本位です。
やってみよう!!
一般エンジニアのHelloWorld
を表示するだけのソースコード
puts 'HelloWorld'
#実行結果
ruby main.rb
=> HelloWorld
わかる。
というよりもこれ以外書いたことがない。
ChatGPTから出力されたHelloWorld
を表示するだけのソースコード
class Encryptor
def initialize(key)
@key = key
end
def encrypt_character(c)
(c.ord + @key).chr
end
def decrypt_character(c)
(c.ord - @key).chr
end
end
class HelloWorldGenerator
def initialize(encryptor)
@encryptor = encryptor
end
def generate_from_char_codes(encrypted_codes, idx = 0)
return "" if idx >= encrypted_codes.length
decrypted_char = @encryptor.decrypt_character(encrypted_codes[idx].chr)
decrypted_char + generate_from_char_codes(encrypted_codes, idx + 1)
end
end
key = 3
encryptor = Encryptor.new(key)
hello_world_codes = [72, 101, 108, 108, 111, 87, 111, 114, 108, 100]
encrypted_hello_world_codes = hello_world_codes.map { |code| code + key }
hello_world_generator = HelloWorldGenerator.new(encryptor)
puts hello_world_generator.generate_from_char_codes(encrypted_hello_world_codes)
#実行結果
ruby main.rb
=> HelloWorld
?!!!????!
暗号化だと?
ソースコードの解説
このRubyプログラムは、複雑な方法で"HelloWorld"を表示するものです。コードの各部分について説明します。
1. `Encryptor`クラス:
- このクラスは、与えられたキーに基づいて個別の文字を暗号化および復号化する機能を提供します。
- `initialize`メソッドは、Encryptorオブジェクトを作成する際に、暗号化/復号化のキーを設定します。
- `encrypt_character`メソッドは、与えられた文字をキーを使用して暗号化します。
- `decrypt_character`メソッドは、与えられた文字をキーを使用して復号化します。
2. `HelloWorldGenerator`クラス:
- このクラスは、`Encryptor`オブジェクトと暗号化された文字コードの配列を使用して、"HelloWorld"を生成します。
- `initialize`メソッドは、`HelloWorldGenerator`オブジェクトを作成する際に、`Encryptor`オブジェクトを設定します。
- `generate_from_char_codes`メソッドは、再帰的に呼び出され、暗号化された文字コードの配列を受け取り、復号化して元のテキストを表示します。
3. キーの設定と`Encryptor`オブジェクトの作成:
- `key`変数に、暗号化/復号化のキー(この場合は3)を設定します。
- `encryptor`変数に、キーを引数にして`Encryptor`クラスの新しいインスタンスを作成します。
4. 暗号化された"HelloWorld"の文字コードの配列の作成:
- `hello_world_codes`変数に、"HelloWorld"の文字コードの配列を設定します。
- `encrypted_hello_world_codes`変数に、`hello_world_codes`配列の各文字コードにキーを追加して暗号化された文字コードの配列を作成します。
5. "HelloWorld"の生成と表示:
- `hello_world_generator`変数に、`encryptor`を引数にして`HelloWorldGenerator`クラスの新しいインスタンスを作成します。
- `puts`を使用して、`hello_world_generator.generate_from_char_codes`メソッドを呼び出し、暗号化された文字コードの配列を復号化して"HelloWorld"を表示します。
このプログラムは、"HelloWorld"という文字列を直接使用せず、暗号化された文字コードの配列を復号化して結果を表示しています。また、再帰処理を使用しているため、プログラムの実行フローが複雑になっています。
まぁ要約すると、暗号化と複合化を行うEncryptorクラス
と、暗号化された文字コードの配列から"HelloWorld"を生成するHelloWorldGeneratorクラス
を使用しています。
Rubyにはmapなどのループ関数がありますが、再帰処理を使用し、暗号化された文字コードの配列を復号化して表示しています。
感想
そんな依頼は見たことがないですが「ターミナルにHelloWorld
と表示してください。」という依頼があったとして先ほどのようなソースコードをプルリクで出せばたぶんレビュアーさんに殴られると思います。
まぁこの記事で伝えたかったことはChatGPTはすごいということですね。
ChatGPTなどの生成系AIの登場でエンジニアという職業は不要になるのではないか?!など私自身も不安感がありましたが、無くなることはないと思っています。仮に職業として無くなったとしても私はプログラミングをします。
ただ、AIはエンジニアの仕事は奪わないと思いますが、AIをプログラミングに取り入れられるエンジニアは他のエンジニアの仕事を奪うのではないかなと思います。
少しカッコつけましたが、使えるものはとにかくフル活用して皆んなで素晴らしいアプリケーションを開発しましょう