はじめに
Hello, World!!
はじめましての方ははじめまして。
3年半ほどTalendというETLツールの技術者をやっています。
少し前に、下記の記事を投稿させていただきました。
こちらの記事では、ChatGPTのアウトプットがどの程度妥当なものか、という検証を行いました。結果として、「内容の精査は必要だが、たたき台の作成程度には使えるだろう」という結論に至りました。
それからというもの、筆者は主に調べごとやプログラムの草案等の作成をChatGPTに頼っています。
今回の記事では、上手く使えば非常に有用なChatGPTについて、ChatGPTではどういったことができるかを記載していこうと思います。
ChatGPTとは
前回記事では、ChatGPTに「ChatGPTとは?」と質問してみました。
今回も同じことをしてみます。
Q. ChatGPTとは?
A. ChatGPTは、OpenAIが開発した対話型AIで、大規模な言語モデルを使ってユーザーの質問に答えたり、会話をしたり、さまざまなタスクをサポートしたりすることができます。ChatGPTは、大量のテキストデータを基に訓練されており、日常会話、専門的なアドバイス、物語の創作、勉強のサポート、さらにはクリエイティブなプロジェクトの提案など、幅広い用途に対応します。
具体的には、ChatGPTを使うことで以下のようなことが可能です:
質問応答:学術的な内容や日常的な疑問への回答
アイデアの提案:プロジェクトや物語のアイデア出し
文章作成と校正:エッセイやメールの執筆、文法やスタイルの改善
学習サポート:試験勉強や特定の分野についての学習の助け
翻訳と言語学習:多言語での会話や翻訳のサポート
ChatGPTはユーザーと自然な会話ができるよう設計されており、テキストベースでの対話を通じて、親しみやすいインターフェースで提供されます。
「ふーん」って感じですね。
ChatGPTについて、簡単にまとめると
- 無料で利用できる生成AI
- いくつかモデルがあり、無料利用でも限定的なアクセスが可能
- 有料プランを利用すると、無料プランよりもより多くの回数、特定の回答モデルを利用できる
- 大体何でも答えてくれるが、規約に反するものには答えてくれない
といったところでしょうか。
利用方法
筆者はブラウザでしか利用したことがないので、その方法について記載します。
基本的には、下記URLにアクセスし、質問したいことを打ち込むだけです。
次に、実際の利用事例を記載したいと思います。
サンプルケース
ケース01 : 入力項目をもとに、対応するバーコードの画像を生成するJavaのコード作成
「JANコードから、それに対応するバーコードを生成するTalendジョブ」を実装してみました。
当然コンポーネントでは実装できないので、tJavaコンポーネントでコードを記述していくのですが、このような処理が実際に実装できるのか、当初は見当が付きませんでした。
そこで、ChatGPTに「実装できる?」と聞いてみました。
Q. Janコードをもとにバーコードの画像を生成するJavaコード
A. (前略)
public class JanBarcodeGenerator { public static void main(String[] args) { String janCode = "4901234567890"; // JANコードを13桁で指定 String filePath = "jan_barcode.png"; // 保存先ファイル名 try { generateJanBarcode(janCode, filePath); System.out.println("JANコードのバーコード画像が生成されました: " + filePath); } catch (WriterException | IOException e) { e.printStackTrace(); } } public static void generateJanBarcode(String janCode, String filePath) throws WriterException, IOException { if (janCode.length() != 13 || !janCode.matches("\\d+")) { throw new IllegalArgumentException("JANコードは13桁の数字でなければなりません。"); } EAN13Writer barcodeWriter = new EAN13Writer(); BitMatrix bitMatrix = barcodeWriter.encode(janCode, BarcodeFormat.EAN_13, 300, 150); Path path = Paths.get(filePath); MatrixToImageWriter.writeToPath(bitMatrix, "PNG", path); } }
今回の記載では省略していますが、ライブラリの導入からコードの処理の意味までものすごく丁寧に記載してくれます。
今回はこれをベースに、
- JANコードは8桁と13桁の2種類が存在する
- JANコードは数値のみで構成される
あたりも組み込み、最終的には以下のコードとなりました。
try {
String regex = "^\\d{8}$|^\\d{13}$";
if (! Pattern.matches(regex, context.jancode)){
System.out.println("Error");
} else {
BitMatrix bitMatrix;
if (context.jancode.length() == 13) {
bitMatrix = new MultiFormatWriter().encode(context.jancode, BarcodeFormat.EAN_13, context.width, context.height);
} else {
bitMatrix = new MultiFormatWriter().encode(context.jancode, BarcodeFormat.EAN_8, context.width, context.height);
}
Path path = FileSystems.getDefault().getPath(context.output_dir + "/jancode_" + context.jancode + ".png");
MatrixToImageWriter.writeToPath(bitMatrix, "PNG", path);
}
} catch (Exception e) {
e.printStackTrace();
}
依頼を受けてからコードを実装し、動作確認するまでで約1日の作業時間でした。
今回はJavaですが、主要な言語であればだいたいコード作成してくれると思います。
ケース02 : 素朴な疑問の解消
それはある日のお昼のこと。
筆者がサッ○ロ一番を食しているとき、筆者の頭にふとした疑問が浮かぶ。
「そういや、塩ラーメンの発祥ってどこなんだろう?」
こんな素朴な疑問にも答えてくれます (技術投稿なのに何を書いているのでしょうね、私)。
Q. 塩ラーメンの発祥は?
A. 塩ラーメンの発祥地は、日本の北海道、特に函館市とされています。函館の塩ラーメンは、その透明でさっぱりとしたスープが特徴で、1940年代ごろから提供され始めました。スープには豚骨や鶏ガラを使用し、シンプルながらも深みのある味わいが特徴です。函館のラーメン店「梅光軒」が、塩ラーメンの普及に大きく貢献したと言われています。
この塩ラーメンの誕生により、日本各地に塩味のラーメンが広がり、現在では全国で様々な塩ラーメンのバリエーションが楽しまれています。
ちなみに調べたところ、いつごろから存在するかははっきりしませんでしたが、北海道の函館発祥である「函館ラーメン」が源流となっているようです。
とまぁこのように、しょうもない質問をしても嫌な顔一つせず答えてくれる、すごくいいやつです。
ケース03 : 画像生成
Q. ギターの画像
そのままだとQiitaがサポートする画像ファイルの形式ではないため、pngに変換して貼り付けています。
お題に沿って、アコースティックギターの画像が生成されました。
今回は適当にお題を言ってみましたが、シチュエーションや画風を詳細に指定することで、それっぽいイラストを作成することも可能です。ただし、画像の生成については、時間による回数制限があるので要注意です。
また、最近のAI画像でよくあるように、人を描かせると手の描写がおかしかったりするので、生成した画像を何かに使用する際は、一度確認してからをお勧めします。
まとめ
いかがだったでしょうか。
今回は、ChatGPTでできることをいくつか、実例とともに挙げてみました。
ChatGPTですが、技術的なことから雑談的なこと、はてはお絵かきまで、わりとなんでも答えてくれるすごいやつでした。
AIは人類の英知の結晶であり、10年後、20年後のAIの発展も気になるところです。
が、これだけいろいろできるとなれば、我々技術屋の仕事がなくなってしまう未来もありうるのではないかと思いました。
とはいえ有用なことは疑う余地もないので、上手く付き合って作業の効率化に生かせるとよいと思います。
以上