見出し画像

GeminiChat クラス作成から考える「クラスって何?」

以前の記事でGoogleのAIモデルであるGeminiをAPI経由で利用するためのAPIキーの取得やテスト関数を紹介しました。

今回は、Gemini APIを実務で使いやすくするためにクラス化したいと思います。

クラスとは?

ノンプログラマー(プログラミング&ITを専門としないビジネスパーソン)にとってクラスの概念は非常にわかりづらいです。

よくある説明だと…

クラスは設計図であり、設計図から物(オブジェクト)を作り出す機能を持っている。物(オブジェクト)は属性(プロパティ)を持ち、どんな機能(メソッド)を持つかを定義できる。

と、ちんぷんかんぷんです。

freeeラボでは、クラスを「コードの再利用性が向上し、同じコードを繰り返し書く必要がなくなるもの」と簡易に定義しています。

もう少し踏み込むと学校のクラス(学級)と似ている…となります。

学校のクラスは(良きにつけ悪しきにつけ)同じような特徴の人間を集めて1つの集団と定義しています。

小学校であれば、同じ地域・同じ年齢の子供を集めてクラスにしています。

そして個々の子供には姓・名・性別という属性があって、それらによって管理識別していますよね。

これが私立高校とかになると学力別クラスとなったり、別の特徴でひとまとめにします。

私は、ある特徴でまとめるのがクラスだと理解していて、プログラミングのクラスも同様にとらえています。

よく使うコードをまとめておく

プログラミングで書くコードや関数を「再利用性が向上し、繰り返し書く必要がなくなるもの」とするには、共通の特徴でまとめておくと便利です。

共通の特徴とは例えば、Gmailの操作だったり、Googleカレンダーの操作だったりです。

Google Apps Script(以降GAS)では、こうした定番の操作を最初からひとまとめにしておいてくれています。

独自クラス

GASやJavaScriptには、最初から多数のクラスが用意されていますが、それでも個人的によく使う操作や関数群というのが出てきたりします。

こうした場合に活躍するのが独自クラスの作成です。

私は、「この操作はこの後もよく使いそうだな…」と思ったものは、同一の特徴を持ったものと併せてクラス化できないかな?といつも考えます。

APIへのリクエストはクラス化しやすい

外部のAPIを使ったプログラミングは、そのコードが複雑化しやすいです。それでいて、どういったリクエストを送るかはサービス側の仕様によるため、毎回調べて書くのは大変です。

ということで、個人的にはAPIへのリクエストはクラス化しやすく、恩恵が大きいと思っています。

Gemini APIへのリクエスト

ということで、今回の本題です。

前回のテスト関数をこねこねしてGemini APIを使うことは可能ですが、こうしたものはクラス化しておくと後が楽です。

機能(メソッド)に関しては、後からゆっくりと追加していけばよいので、まずはシンプルにGeminiにチャットを投げかけて返答をもらうメソッドだけでGeminiChat クラスを作成します。

このクラスを実装すると以下のようなシンプルなコードでGeminiモデルに質問を投げかけることができます。

console.log(new GeminiChat(apiKey).askSimple(systemRole, prompt, model));

ということで実際のコードです。

ここから先は

2,696字 / 1画像
この記事のみ ¥ 100
期間限定!Amazon Payで支払うと抽選で
Amazonギフトカード5,000円分が当たる

この記事が気に入ったらチップで応援してみませんか?