Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】SurrealBot

2025年10月02日に「Medium」が公開したITニュース「SurrealBot」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

生成AI「SurrealBot」の開発記録ドキュメントの初回版。AI開発の「旅路」を追体験できる内容で、システムエンジニアを目指す初心者にとって、実際の開発過程や思考プロセスを理解する手助けとなる。

出典: SurrealBot | Medium公開日:

ITニュース解説

システムエンジニアを目指す初心者の皆さん、今回は「SurrealBot」というプロジェクトを通して、生成AIを活用したDiscordボットの作成について解説する。このプロジェクトは、AIを使って画像を生成する仕組みを、プログラミング初心者が触れる良い機会になるだろう。

SurrealBotは、一言で言えば「Discord上で、ユーザーが入力したテキスト(指示)に基づいてAIが画像を生成し、その画像をDiscordに送り返す自動プログラム」だ。まるで魔法のように、言葉から絵が生まれる体験を、自分たちの手で実現できる。このプロジェクトでは、いくつかの異なる技術を組み合わせ、一つのシステムとして動かす工程を体験する。システムエンジニアにとって、複数の要素を連携させるスキルは非常に重要だ。

まず、このプロジェクトの心臓部である「生成AI」について説明する。生成AIとは、学習したデータに基づいて、新しいオリジナルのコンテンツ(画像、文章、音声など)を作り出すことができる人工知能のことだ。SurrealBotでは、特に「画像生成AI」を用いる。具体的には「Stable Diffusion XL」という高性能なモデルが使われる。これは、私たちが「赤いリンゴの絵」と指示すれば、その言葉通りの絵を新たに作り出す能力を持つ。このAIモデルは、数百万枚もの画像とそれに対応するテキストの説明を学習しており、その知識を使って私たちの言葉を絵に変える。

このAIモデルを動かすために、私たちはプログラミング言語「Python」を使う。Pythonは非常に読みやすく、多くのライブラリ(便利な機能の集まり)が用意されているため、初心者にも人気が高い。Discordボットを開発する際にも、Pythonはよく利用される。

開発環境としては「Replit」が使われる。これは、ウェブブラウザ上でコードを書き、実行できるオンライン開発環境だ。自分のパソコンに特別なソフトウェアをインストールする必要がなく、インターネット環境さえあればどこからでも開発を進められる点が便利だ。システムエンジニアは、様々な開発環境を使いこなす必要があるため、Replitのような手軽な環境に触れることは良い経験となるだろう。

SurrealBotはDiscord上で動くボットであるため、「Discord」というコミュニケーションプラットフォームについて理解しておく必要がある。Discordは、チャットや音声通話ができるサービスで、ユーザーが作成した「サーバー」と呼ばれるコミュニティ内で活動する。このサーバーに、自動的にメッセージを送ったり、特定の指示に反応したりするプログラムが「ボット」だ。Discordのボット機能を利用するには、Discord上で新しいアプリケーションを作成し、「トークン」と呼ばれる秘密の鍵を取得する必要がある。このトークンは、ボットが正当なプログラムであることをDiscordに証明するためのもので、他人には絶対に教えてはならない重要な情報だ。

ボットがDiscordとやり取りするためには、「Discord.py」というPythonライブラリを使用する。このライブラリを使うことで、ボットがメッセージを受け取ったり、画像を送信したりといったDiscordの機能を簡単に操作できるようになる。プログラミングにおいて、特定のサービスと連携する際には、このように公式が提供するライブラリやAPI(アプリケーション・プログラミング・インターフェース)を利用することが一般的だ。

AIモデルであるStable Diffusion XLをPythonから利用するためには、「Hugging Face Diffusers」というライブラリが使われる。Hugging Faceは、AIモデルを共有したり、利用したりするためのプラットフォームだ。Diffusersライブラリは、Hugging Faceが提供する様々な生成AIモデルを、統一された簡単な方法で使えるようにしてくれる。私たちはHugging Faceでアクセストークンを取得し、それを使ってStable Diffusion XLモデルにアクセスする。これにより、PythonコードからAIモデルに指示を送り、画像を生成してもらうことができるようになる。

開発の流れは次のようになる。まずDiscord上でボットの準備を整え、トークンを取得する。次にReplitでPythonプロジェクトを立ち上げ、Discord.pyやDiffusersなどの必要なライブラリをインストールする。そして、取得したDiscordボットのトークンやHugging Faceのアクセストークンといった機密情報を、Replitの「環境変数」として設定する。環境変数は、コードの中に直接書き込まずに、プログラムが実行時に利用できるようにする仕組みで、セキュリティ上非常に重要だ。

Pythonコードでは、ボットが起動したときの処理や、ユーザーからメッセージが送られてきたときの処理を記述する。ユーザーが特定のコマンド(例えば「!generate prompt」)を入力すると、ボットはその「prompt」(指示内容)を抽出する。抽出したpromptは、Diffusersライブラリを通じてStable Diffusion XLモデルに渡され、画像が生成される。生成された画像は、一時的に保存され、その後Discord.pyを使ってDiscordのチャンネルに送信される。

最後に、作成したボットが常に稼働し続けるための工夫が必要となる。Replitは通常、プログラムが停止するとそのプロセスも終了してしまうが、ボットは24時間いつでもリクエストに応えられる状態であるべきだ。そこで「UptimeRobot」というサービスが登場する。UptimeRobotは、指定したウェブサイトやサービスに定期的にアクセス(pingを送信)し、それが稼働しているかを監視するツールだ。Replitでボットを起動する際に、ウェブサーバーのような機能を備えさせることで、UptimeRobotから常にアクセスを受け、ボットが停止しないように維持する。これは、システムが常に利用可能であること(可用性)を確保するための基本的な手法の一つだ。

このSurrealBotのプロジェクトを通して、システムエンジニアを目指す皆さんは、単にコードを書くだけでなく、以下のような多くのことを学ぶことができる。複数の技術要素(Discord、Python、Replit、AIモデル、各種ライブラリ、外部サービス)を組み合わせて一つのシステムを作り上げる総合力。APIを使って異なるサービスを連携させる方法。機密情報を安全に管理するための環境変数の利用。そして、作成したシステムを安定して運用するための工夫。特にAIという最先端技術を、実用的なアプリケーションに落とし込む経験は、これからのIT業界で非常に価値のあるスキルとなるだろう。システム開発は、このように様々な部品を組み立て、全体としてうまく機能するように設計し、構築していく創造的な作業なのだ。

関連コンテンツ

関連IT用語