新年が明けました。今年は元旦から能登半島地震、2日には航空機の事故と、心痛む事が立て続けに起きてしまいました。被災された方々にはお見舞いを申し上げると共に、地震・事故で亡くなった方には心よりお悔やみ申し上げます。
まだ救出を待つ方や、避難生活をされている方が大勢居る状況ですが、自分が出来る事を行って行きたいと思います。
本年もよろしくお願いいたします。
ツールが全ての問題を解決してくれるわけではない。 でも、ツールは本来人がやらなくても良い作業を効率的に行ってくれる。 そして、人は人にしかできない事により注力すべき。 つまり、それがクリエイティビティ(創造性)。 システム開発におけるクリエイティビティを高めるお手伝いをしています。
新年が明けました。今年は元旦から能登半島地震、2日には航空機の事故と、心痛む事が立て続けに起きてしまいました。被災された方々にはお見舞いを申し上げると共に、地震・事故で亡くなった方には心よりお悔やみ申し上げます。
まだ救出を待つ方や、避難生活をされている方が大勢居る状況ですが、自分が出来る事を行って行きたいと思います。
本年もよろしくお願いいたします。
2023年も残すところあと一日になりました。
年々、時間の経過が早く感じられますが、コロナ禍明けの今年は特に早く感じられました。そんな今年の振り返りです。
・Generative AIの普及
今年一番のトピックはなんと言ってもGenerative AIでしょう。今更説明する必要も無いくらい、ChatGPTの出現は驚きでしたし、瞬く間に普及、そしてWindows Copilotを始めとする一般製品にも組み込まれていきました。このままでは人の仕事が無くなるとか、楽して仕事が出来る。みたいな事も言われましたが、逆にプロンプトエンジニアといった新しい考え方・テクニックも出てきましたが、でもその本質は「相手に仕事の指示を的確に判りやすく伝える」という「人としてのコミュニケーション技術」だったというのも、皮肉な感じがしました。
・リアルイベント開催の復活
コロナ禍が明けたと実感できるのは、今までオンラインで開催されていたイベントがリアル開催されるようになり、久しぶりに大勢の集まりに参加したり、フェイスtoフェイスで会話が出来るなど、元の世界が戻ってきた喜びがありました。
・GX30 : GeneXusインターナショナルミーティング
イベントといえば、GeneXusインターナショナルミーティングもリアル開催となりました。私も久しぶりにウルグアイに渡航し、参加してきました。目玉としては、りそな銀行・NTTデータソフィアの方々も一緒にイベントに参加していただき、講演も行いました。
2024年はどんな年になるでしょうか。私は世界が平和になるように願ってやみません。
皆さんにとって良い一年になりますように。
みなさん、こんにちは。暫くぶりの投稿です。
2023年11月28日から3日間、ウルグアイにてGeneXusインターナショナルミーティング GX 30が開催されました。
前回が2019年になるので4年ぶりのリアル開催でした。本当に久しぶりに世界中から集まった面々に会えてとても懐かしく、嬉しく思いました。
オープニングキーノートスピーチをするニコラス・ホダールCEO
さて、イベントを通じてのレポートを幾つか。
イベントの参加人数は少なめでした。以前はメインホール(BallRoom)が一杯で立ち見で溢れるほどでしたが、今回は空席もチラホラ。GeneXus社の人に聞いたら、オンライン参加者が多いとの事。イベント参加もパンデミック後の新様式でした
GeneXus 社の講演ではやはりAI関連が目立っていました。GeneXus Next と、GeneXus Enterprise AI の二つです。それぞれをざっくり説明します。
・GeneXus Next は以前の投稿でも紹介しましたが、Webベースのノーコード開発ツールです。自然言語で記述した業務要件をAIが解析し、トランザクションオブジェクトを定義、WorkWithPlusパターンとデザインシステムを適用する事でメンテナンスのUIまで自動生成してくれます。「業務要件を記述」というと、どのレベルまで書くとどんな内容まで実装してくれるの?と気になる所ですが、今時点では
・トランザクションストラクチャの出力
・ビジネスプロセスダイアグラムの出力
でした。これも機能的には追加されていくものと思われます。
既存のGeneXusとの関係が気になりますが、講演の中では「ノーコードでモデリング」と言っていましたので、GeneXus を置き換えるものではなく、要件定義時のモデリングツール的な使い方をイメージしているのではないでしょうか?また、Nextで実装した技術をGeneXusにも実装していくと言っていましたので、AI機能の実験場であるのかもしれません。
あとはマルチプラットフォーム IDE という言い方も(Web版とは別に)していました。こちらはVS Code のプラグインで提供されるのかもしれません。
・GeneXus Enterprise AI は、LLMに対するコネクタ製品との事。自分で開発したアプリ(ナレッジベース)から、Enterprise AI のインターフェース経由でLLMに接続できます。なぜアプリから直接LLMに接続しないのか?いというと、一つは接続先となるLLMは固定ではなくサポートしているものであれば(OpenAI、GoogleBird、etc)共通のインターフェースで接続できます。もう一つは、Enterprise tAIにはエンベディングが含まれているとの事で、いわゆるベクトルデータベースを使ってLLMに対する情報付加が出来るようになります。
既にGeneXus Wiki はGeneXus Enterprise AIを使用しているバージョンにアップデートされています。
AI 系の講演で全般的に共通していたのが、コンセプチュアルな説明が多く、具体的なデモが少なかったです。これは今時点ではテクニカルプレビューの意味合いが強く、具体的な価格やライセンス体系も含めた製品としての出荷は来年以降になるからと思われます。
(具体的な情報は何もないので、この記事を見たからといって、ジェネクサス・ジャパンへ問い合わせるのはお控えください)
AI の次にGeneXus社が力を入れていたのがSuperApp/Mini App でした。これはネイティブモバイルジェネレーター(スマホアプリ)の新機能になるのですが、中国のWeChat、日本ではLineやPayPayをイメージしてもらうと判りやすいです。SuperAppがいわゆる親アプリ(プラットフォームアプリ)で、MiniAppが抜き差し可能な子アプリになります。
またスーパーアップにはプラットフォーマーとしての決済インターフェイスが用意されているので、eコマース的なミニアプリからスーパアプリの決済を使う事も出来ます。デモではイタオ銀行のスーパーアプリ上で、カフェや映画のチケットを購入できるミニアプリが動作していました。
そして、MiniAppを管理するアプリがMini App センターです。ミニアプリのアップロード、申請、承認、公開といった、アプリストアとしてのワークフローを備えた運用支援ツールになっています。
この3つの構成でエコシステムを構築する事ができます。(もちろん、ビジネスモデル・スキームは必要ですが)
ちなみに、独自のミニアプリストアで公開するミニアプリですが、Apple app store 、Google Play store の審査は必要ないのか?とGeneXus社の担当者に聞いてみたところ、それは問題ないとの事でした。コロナ過中にウルグアイではGeneXus社がコロナ対応アプリをいち早くリリースしていましたが、その頃にApple、Google各社に問い合わせていて、問題ないと回答をもらっているそうです。
スーパーアプリに関しては既存のスクラッチアプリにミニアップレンダーというスーパーアップ用のインターフェースを組み込む方法(いわゆるマイグレーション)と、GeneXusで一から開発する方法の二種類を用意しているようです。これにより、速やかな市場展開が出来ます。
という、ことで簡単にと言いながら結構長くなってしまいましたが、4年ぶりのGXインターナショナルミーティングのレポートを終わります。
それぞれ詳細な情報を入手したら記事にしようと思います。
では。
前回、ベクトルデータベース検索を使ったChatGPT Pluginを作ってみましたが、思ったようには動作しませんでした。
そこで今回は、他のChatGPT Pluginがどういう動作になっているのか? 検証したいと思います。検証といっても、普通にPluginを使うだけです。前回のブログを見て貰うと判りますが、Pluginを実行した時の挙動(APIに対するリクエストデータとレスポンスデータ)は簡単に見る事が出来るますので、どういう呼び出し方をしていて、どういうデータが返ってくるかを確認できればAPIの仕様が判るという訳です。
こちらはつい先日公開されたメルカリのプラグインです。
試しにもう一つ
前回の続きです。
作成したAPIをChatGPT Pluginとして使ってみましょう。
プラグインデベロッパーアカウントでは、自分で作成したプラグインをインストール可能です。Plugin storeの画面から「Develop your own plugin」をクリックします。
マニフェストファイルとYamlファイルが正しく認識されるとPluginがインストール可能になります。
質問 : データベースを定義する方法を教えて下さい。GeneXus wikiで調べてください。
回答 : 以下に、GeneXusのデータベース定義に関連する情報を提供します。
1.Commit on Exit property : この記事では、GeneXusが各トランザクションと各手続きに対して提供するプロパティについて説明しています。これは、生成されたプログラムが自動的にCOMMITを実行するかどうかを定義するためのものです。
2.For in command : この記事では、配列やコレクションを走査するためのFor inコマンドについて説明しています。
3.Extended Table : この記事では、Extended Tableという概念について説明しています。Extended Tableは、特定のBase Tableに位置しているときに、複数のテーブルへのアクセスを簡素化するためのものです。
これらの記事は、データベースを定義する方法に関する一般的な情報を提供しますが、具体的な手順や例については、GeneXusのドキュメンテーションやチュートリアルを参照してください。
前回の続きです。
作成したベクトルデータベース(Cosmos DB)の中身はこんな感じです。
1レコードの内容がまるっとテキストデータでJSON形式で格納しています。「embedding」項目の値として小数値が配列となっています。これが文章をベクトル化した結果です。では、このデータベースを使って検索するプログラムを作成します。
検索処理ですが、通常のRDBのようにDB側で検索するのでは無く、一旦DBからベクトル値を全レコード分抽出した配列と、質問文章をベクトル化したものを、比較=コサイン類似性(Cosine Similarity)計算します。
以下、検索処理のPythonコードをChatGPTに解説して貰った内容です。
このPythonコードは、Azure Cosmos DBに保存された文書データを検索するWeb APIを提供します。具体的には、OpenAIのEmbedding APIを使用してクエリと文書のベクトル化を行い、それらのコサイン類似度を計算して最も類似度が高い文書を返す機能を持っています。以下に、コードの主要な部分を段階的に解説します。
ChatGPTを使う上でモデルが学習していない情報(特に最新情報[2021年9月以降])や特定分野の情報)をどうインプットさせるか? は当初の課題でした。それが(有償ユーザーに限りますが) WebブラウジングやPlugin機能が解放されることでピンポイントで情報を取得する事ができ、ChatGPT上で出来る事が飛躍的に増えました。
私の立場としてはGeneXusの技術情報に関する問合せ(セルフトレーニング)やコーディングなどをChatGPTで実現する事ができるか? というのが直近の目標だったりするのですが、JavaScriptやPythonといった十分にモデルが学習済みの技術であればそれも容易なのですが、いかんせんGeneXusというマイナー技術では、なかなか思う様な結果を得ることが出来ないのが現実です。
という事で、次に考えたのは、GeneXus技術情報に特化したプラグインで、問合せの内容を元に文脈的に近い情報をwikiページから取得しモデルに返すことで、より精度の高い回答をChatGPTが出来ないか? というものでした。
問合せの内容から独自のデータを利用してモデルに検討させるのは、最近ではAzure OpenAI サービスにてAdd your dataという機能があります。まだプレビュー版でありますが、これを使うと例えば自社のドキュメントをインプットしておく事で、とり業務に特化した質問に対する回答を得られることができるというものです。
今後も次々にこういった機能やサービスがリリースされてくるでしょうから、自前で作る事にあまり意味はないのかもしれませんが、エンジニアとしては早期に取り組むという事と、実際の技術的なポイントを押さえておきたくてトライしてみました。
その中で情報収集・検討・トライ&エラーした結果として要約したポイントです。