自分でブログに書いた記事を整理するために、生成AI(Gemini)を活用して自作のWebサイトを作成しました。
katoshiの研究ノート https://katoshi-mfacet.github.io/
このサイトは、日本語で書いたブログ記事の原稿から自動生成しています。
特徴は以下です。
・記事の原稿から自動生成 ・カテゴリ分け、タグ付けによる記事の整理 ・30カ国語対応、アクセシビリティ対応
基本的な仕組み
基本的な仕組みは、astroというフレームワークをベースにしたプログラムを自作し、記事の原稿からHTMLファイルを自動生成しています。
このプログラム自体も、GoogleのGeminiとチャットしながら作りました。
この仕組みのおかげで、記事の原稿を書いて再生成の処理を実行すれば、あとは自動的にHTMLファイルが更新されて、このWebに反映されます。
カテゴリ分けとタグ付け
カテゴリ分けやタグ付けのための別のプログラムも自作しています。
そのプログラムからAPI経由でGeminiに記事を渡して、自動的にカテゴリ分けとタグ付けをしています。
カテゴリ一覧とタグ一覧を記事と一緒に渡せば、Geminiが記事の意味を解釈して、適切なものを上手く提案してくれます。
また、カテゴリ一覧とタグ一覧自体も、別の自作プログラムで過去の記事から抽出して決めています。ここでも、Geminiを活用しています。
API経由でGeminiに順次過去の記事を渡し、カテゴリ候補とタグ候補を出力させます。そして全記事から抽出したカテゴリ候補とタグ候補をGeminiに渡して、カテゴリ一覧とタグ一覧を決定しています。
この一連の処理もプログラムで自動化しています。
多言語化翻訳
多言語化のためには翻訳が必要です。もちろん、この翻訳にもGeminiを活用しています。
翻訳には2つのパターンがあります。
1つは、記事によらず共通のWebサイト内の文字列の翻訳です。メニューの項目名や自己紹介などの文が対象です。
もう1つは、記事の原稿そのものの翻訳です。
これらの翻訳も、自作のプログラムを作って、その中でGeminiのAPIを使って翻訳を実行しています。
アクセシビリティ
目の不自由な方が音声で記事の内容を聞きたり、マウス操作が困難な方がキーボード操作だけでWebサイトを閲覧したりすることを考慮して、HTMLファイル側にいくつかの工夫を加えておくとアクセシビリティが向上します。
アクセシビリティについては、私はほとんど知識が無く、Geminiがプログラミングのためのチャットをしている最中に提案してくれた形でした。
そして、こうしたアクセシビリティ向上のためにHTMLに加える変更も、Geminiとのチャットで変更方法を聞いて対応しました。
壁の消失
プログラムの作成、翻訳やカテゴリとタグの整理といった自然言語処理、アクセシビリティのように気が付きにくい点の提案、といった様々な形で、このWebサイトの作成に生成AIを活用しました。
また、HTMLの生成とカテゴリ・タグの自然言語処理を含めて、記事の追加時に自動更新できる仕組みを作ることができたため、今後も記事が増える度に成長していくWebサイトにすることができました。
このWebサイトの作成を通して、様々な壁が生成AIにより容易に越えられるようになったと実感しました。
まずは言葉の壁です。30ヶ国語対応は、従来であれば翻訳のことを考えてもとても個人では不可能でした。
加えて、翻訳したブログが意図したニュアンスを伝えられているのかや、ネイティブの人にとって違和感や不快な表現になっていないかという懸念もあります。
生成AIの翻訳は、従来の機械翻訳よりもニュアンスを的確に伝えることができ、表現も自然です。かつ、翻訳結果を生成AIに再度入力して、不自然や不適切でないかを確認することもできます。
また、Webサイトの多言語化という観点では、日付や単位といった言語によって表現方法が異なるものに対して、適切に対応することは難しい点でした。
例えば3つのカテゴリにそれぞれ記事が1件、2件、10件ある、という場合、日本語では1記事、2記事、10記事のように、単に件数の後に記事という単位をつければ済みます。
しかし、英語であれば、1 article, 2 articles, 10 articles というように単数形と複数形を分ける必要があります。また、言語によっては少ない数の複数形と大きな数の複数形でも表現が変化するケースもあるそうです。
さらにアラビア語のように文字を右から左に書く言語の場合、Webサイト全体のレイアウトも右から左という読み手の視線の動線に沿った自然なものにしたり、文字や画像で矢印を使っいる場合は、それを左右反転させる必要性も考えなければなりません。そうした点も、生成AIにチェックしてもらうことで対応しています。
生成AIとWebサイトの多言語化に取り組んだことで、従来のやり方では気が付かず配慮できなかったことについても、細かやかに対応することができました。
これは、アクセシビリティの配慮についても同じです。これまでであれば、私自身と同じようにWebサイトを閲覧できる人に対しての配慮しかできませんでした。
しかし生成AIは、私には気が付かない、あるいは気が付いても手間を惜しんで対応を見送るような配慮を、容易に組み込んでくれます。
多言語化もアクセシビリティも、まだ完璧とは言えないとは思いますが、少なくとも私が1人で考えたり調べて作るよりも圧倒的に高い質になっていると思います。
このようにして、生成AIが、ブログ記事の情報発信という取り組みに対して、多くの壁をなくしてくれたのです。
さいごに
私はシステムエンジニアでありプログラミングの経験は豊富です。また、仕事でWebサイトの作成をすることはありませんが、昔から趣味でいくつかのホームページを作ったことはありました。
そうした経験と、生成AIとのチャットのやり取りで、この多言語化ブログサイトの自動生成の仕組みを、2週間ほどで作ることができました。
生成AIがなければ、そもそも多言語化対応は考えもしなかったでしょう。その意味では発想の壁も超えたと言えます。
また、記事が増える度にカテゴリ分けやタグ付けをする手間を考えると、一度作った後に更新しなくなる可能性も高かったでしょう。 生成AIの自然言語処理による自動化ができるようになったことで、メンテナンスや更新の壁も超えることができました。
また、この仕組みは、私のようなプログラミングやWebサイト作成の経験がない人でも作ることはできます。この記事をGeminiのような生成AIに読ませて、自分も作りたいと相談すれば、作り方を教えてくれるはずです。
私の作ったプログラムを公開して広く使ってもらうこともできますが、生成AIが本格的なソフトウェアエンジニアになりつつある今、公開すべき最も価値のある情報は、プログラムそのものよりも、この記事のようにアイデアと仕組みの解説文になるでしょう。アイデアや基本的な仕組みは、プログラムよりもさらに容易に変更したり強化したり、組み合わせることが可能です。
このことは、ソフトウェア開発やWebサイト作成の壁がなくなりつつあると同時に、個人による情報発信の壁も消えていくことを示唆しています。
インターネットは技術的には情報のやりとりの壁を事実上消しましたが、私たちは言語やアクセシビリティといった壁に阻まれています。
機械翻訳や音声読み上げという形で、情報の受け手の工夫次第である程度は壁を乗り越えることができますが、情報発信をする側が対応や配慮をしなければ越えられない部分もあります。
そうした情報発信側が超えるべき壁を、生成AIが消してくれるのです。
言語やアクセシビリティの壁が消えても、その先には文化や習慣、価値観の違いといった壁があるはずです。これらはさらに乗り越えることが困難な壁かもしれません。
しかし、その困難な壁を越えるためには、まずはその前にある壁を超えておかなければなりません。そうして壁の目の前までくれば、またその壁を乗り越えるためのアイデアやテクニックが見えてくるでしょう。
こうやって、世界から壁がなくなりつつある時代にさしかかっているのかもしれません。このWebサイトの作成を通じて、私はそう感じた次第です。