はじめに
第1章 DiscordとDiscord Bot
第2章 shovel - 日本語読み上げDiscord Bot
第3章 shovelのシステム構成
第4章 shovelのソフトウェア構成
第5章 大勢に使ってもらえるサービスを目指して
第6章 品質を上げるための設計のポイント
第7章 開発環境 - 開発効率と品質をあげる礎
第8章 実装 - いざ、コーディング
第9章 テスト - コードの品質をまもる、最後の砦
第10章 Discord Botのテスト自動化
第11章 アップデートのための作業
第12章 Botの土台作りのダイジェスト
第13章 セキュリティ - Botとユーザーを守る壁
第14章 監視 - 24時間みまもり体制
第15章 バックアップ - 安心を確保する
第16章 運営 - ユーザーと接しよう
第17章 Bot運営の金銭面
おわりに
筆者は2019年5月、日本語読み上げDiscord Bot「shovel(シャベル)」を一般公開しました。
「shovel」を一般公開すると決意したのは2018年9月。当時の筆者はBtoBソフトウェア開発経験はあれど、インフラから運営まで一手に担当する個人開発サービス運営の経験は皆無。技術面から運営面までわからないことでいっぱいでした。本当に多くの壁にぶち当たりましたが、そのたびに調査したり有識者に助言を受けたりすることで、なんとか乗り越えてきました。当初は想像もしていませんでしたが、shovelは公開から1年間で50万人のユーザーに利用してもらえるまでに成長しました。
本書はその経験を題材・実例として「サービスを作り、一般公開し、知ってもらい、運営する」うえで必要なこと(つまり、2018年9月当時の筆者が知りたかったこと)についてまとめたものです。
本文中の実例は、Discord Botで説明します。ですが、フロントエンドがDiscord Botであるというだけで、Discord以外のBotやWebサービスなど、さまざまなサービスと共通である内容も多く含まれます。もちろん、Discord Botを公開したい方にとっては、すぐに実用に供することのできる有用な情報となるはずです。
「作った! 動いた! そこまではできたけど……」
そんな個人開発者が、もう一歩踏み出す場面で、この本が道しるべのひとつになることを願います。
2020年8月 北浦 望
・プログラミング、サービス運営に興味がある人
・日本語読み上げDiscord Bot「shovel」に興味がある人
・Discord Botを本格的に運営したい人
・サービスを作ってみたが、公開するのになんとなく躊躇している人
・サービスを公開しているが、これでいいのか不安な人
・サービスを公開したが、思うようにユーザーが増えなかった人
・サービスをたくさんの人に使ってもらう方法
・サービスの土台となるサーバー設定
・サービスを攻撃から守るセキュリティ設定
・よいサービスを作るための開発プロセス
・サービス運営の障害と乗り越え方
・Discord Bot「shovel」の設計
第1部では筆者の個人開発サービスであるDiscord Bot「shovel」を解剖し、システム構成とコードの内部構造を説明します。Discord Botに興味がない方も、第2部以降を理解するために、軽く目を通しておいてください。第2部では、よいBotを作るための考え方と、開発プロセスについて説明します。第3部では、shovelの稼働率99.98%がどのように裏打ちされているかをお見せします。第4部ではshovelの運営とお金のことについて、個人開発で限られたリソースをどのようにやりくりしているか、工夫していることをお話します。
この章では、本書のさまざまな解説の例として扱うDiscord Bot「shovel」についての理解を助けるために、Discordというサービスについて簡単に説明します。また、discord.pyを使い、Pythonで簡単なDiscord Botを作ってみます。すでにDiscordやdiscord.pyを知っている方は読み飛ばしていただいてかまいません。
Discord(ディスコード)は、2015年に開始したゲーマー向けのボイスチャットサービスです。公式ウェブサイトによると、ユーザー数は全世界でなんと2.5億人とのことです。基本的な機能はすべて無料で利用できます。ゲーマーの間では、オンラインプレイでボイスチャットをする手段として、第一の選択肢としてあがるサービスです。ボイスチャットがメインのサービスではありますが、テキストチャットも利用できます。代替ツールとしては、Skype、LINEなどが挙げられます。
Discordでは多彩なコミュニティを作ることが可能です。任意のメンバーを集めたクローズドなコミュニティから、コミュニティに参加するための招待URLを公開しているオープンなコミュニティまで、Discordにはさまざまなコミュニティがあります。
Discordでは、このコミュニティを指して「サーバー」と呼びます。ユーザーが「サーバー」を作成し、そこに他のユーザーを招待します。しかし「サーバー」という名前を本書で使うと、一般名詞の「サーバー」と混同してしまいややこしいので、本書では、Discordの開発者用公式ドキュメントに倣って「Guild」と呼ぶことにします。
Discordユーザーは、100個までのGuildに参加できます。それぞれのGuildにはいくつかの「チャンネル」があります。テキストチャットは「テキストチャンネル」、ボイスチャットは「ボイスチャンネル」で行います(図1.1)。ボイスチャットは「誰かに電話をかける」というような一般的な通話とは異なり、ボイスチャンネルに入室し「誰かが参加するのを待つ」または「すでに始まっている通話に参加する」というスタイルで行います。
TwitterやSlackと同じように、DiscordでもBotを作ることができます。会話ログの保存をしたり、特定単語に反応するような単純なBotから、Botを通じてRPGやカードゲームがプレイできるようなBotまで、さまざまなBotが存在しています。つづいて、Botの仕組みについて詳しく解説します。
そもそもBotとは何なのでしょうか。まず、Botではない通常のユーザー(人間)がDiscordを利用する場合の接続方法について見ていきましょう(図1.2)。ユーザーは、光回線や4G回線でインターネットに接続された端末(スマートフォン、PC)を持っています。この端末から、アプリやWebブラウザを通じてDiscordにアクセスしています。
では、Botはどうでしょう。人間が操作するのではなく、プログラムだけがDiscordに接続するのがBotです(図1.3)。Botには普段見慣れたDiscordアプリのような操作画面は通常存在しません。黒い画面でコマンドをタイプして動かすプログラムが、Botを操作します。
たとえば誰かのテキストチャット発言をキャッチし、それにテキストで反応するようなプログラムを書くと、Discordのテキストチャットで反応するBotができあがります。
Discord Botを動かすには、まずDiscordのWebサイトでBotアカウントを作成します。すると、トークンという文字列が割り振られます。BotのプログラムはそのトークンをAPIサーバーに渡すことで、Botとしてログインできます。トークンは、いわばIDとパスワードがセットになったようなものです。
上記の説明のとおり、Botは最低限「プログラムを動かすコンピューター」と「インターネット回線」と「トークン」があれば、家庭用のPCでもどこでも動かすことができます。次の節では、あなたのPCで実際にBotを動かしてみましょう!