GitHub org: AgricolaDevJP
GitHub 上で AgricolaDevJP という organization を立ち上げました。今さっき作ったみたいな書きぶりをしていますが、実際に org を作ったのは 2022 年 8 月ごろです。もう半年以上経っていますね。
これまで、ボードゲーム関連、とりわけアグリコラに関連したアプリケーションをいくつも個人開発してきました。
これらのリポジトリを、これまでは自分の GitHub アカウント(@Arthur1)にぶら下げて公開していました。今後作るものに関してはこちらの organization に紐づけて公開することになります。
組織としての AgricolaDevJP の目的は以下の3つです:
一緒に開発したい!というアグリコラプレイヤーがいたらぜひ id:arthur-1 まで一声おかけください。リポジトリは基本的に公開しているので fork して contribute できるはずですし、知り合いであれば organization にメンバーとして招待もできます。目的に合致するものでしたら、この org 下でソースコードを公開しても構いません。
自分以外の人がコードを自由にいじれる状態にリスクがあるのも承知していて、適切な権限を持ったロールを割り当てるなどの準備もきちんとしています。このあたりの管理には、 Terraform の GitHub Provider が役に立ちました。
org を作ったきっかけ
自分のリポジトリが増えてきたので整理したい
@Arthur1 下のリポジトリは 2023 年 3 月現在、プライベートを含め 98 個あります。しょうもないリポジトリ*1も多々あるのですが、しょうもなくないものも大分多くなってきました。
自分が個人開発として丁寧につくるもののほとんどがアグリコラ関連であることから、これらを別 org に切り出すことで整理がつくかなと思ったのです。
自分だけで開発・メンテはしんどい
これまでいろんなものを作ってきたのですが、自分だけで開発・運用・保守のすべてをやるのはかなりしんどいです。学生時代ならまだしも、今はフルタイムで働いており自由に使える時間も限られています。
アグリコラ関連の開発には、どうしても人力でやらなければならない toil がつきまといます。たとえば、延々とカードのテキストを入力する、playagricola というサイト上で管理されている ID と丁寧に紐づける、といった作業があります。これらは正直やる気があれば誰でもできることなのですが、今は自分が全部やっています。ここがボトルネックになって何ヶ月もサービスをリリースできないことがままあります。
とすると、手伝ってくれる他人を招待したくなってくるのですが、個人のリポジトリに他のユーザーを admin として招待することはできません。そこで、organization による管理にしてしまおうと思ったわけです。
気持ち的には、下のエントリの事例がやや近いですね。
バトグラ技術部への憧憬
やるからには、この organization を GitHub 上の単なる organization を超えた存在にしたいと考えています。
自分が目指しているのはバトグラ技術部というコミュニティです。バトルグラウンドというオートチェスライクなゲームがあって、僕も好んでよくプレイしています。
このゲームの戦略を研究するためのトラッカーやシミュレーターなどを提供しているのがバトグラ技術部です。開発者とユーザーの距離が近く、集めたデータが素早く有効に活用されているところがとても良いなと思っています。少なくとも自分一人でやっている状態からすると雲の上のような存在です。
3/3(金)20時より、バトグラ技術部データ分析班研究発表会を開催します。
— れを@レヲランガ(HSBG:南海奇皇#1989) (@reotyobirin) 2023年2月22日
最新環境の戦績データを、様々な視点から分析していきます。
レヲランガtwitchチャンネルにて配信予定、聴講お待ちしております。https://t.co/7dDapcudQs#Hearthstone #ハースストーン #バトグラ研究発表会 pic.twitter.com/nTqvdECHgX
The State of AgricolaDevJP
この org を自分がどういう風に使っていくか、という現在とちょっと先の未来までの話をします。
砂場としての AgricolaDevJP
普段の仕事で得た知識を用いて実践する砂場として AgricolaDevJP を活用します。この 1年間で自分が新たに学んだこととして、
などがあるのですが、これら新たに身につけた技術を積極的に使うようにしています。
逆に、この org での活動で得た知識を仕事に還元することもできています。この org で試しにやってみて良い設計の決定をしたなと思うことについて、仕事のチームに持ち帰りブラッシュアップした上で ADR を書きました。このあたりの話はまたどこかでします。
持続的なサービス提供のために
バトグラ技術部を目指すためのリソースを確保するためにやるべきことは、現在自分依存になっている開発・運用・保守を自分からできる限り引き剥がすことだと思っています。
テストの用意、CI・CDの整備、Dependabot の導入などを通じて、自分が手作業でやらなければならないことを極力削減しようと試みています。運用面についても、監視を導入する、インスタンスの管理をしなくて済むように FaaS や CDN などを利用する、などの改善を進めています。
今自分が提供しているものがどのように運用されているかというと、1つの VPS 上に複数サービスがコンテナを使わずにごった煮になっているという状況です。デプロイも全手動だし、他のサービスにも関わるので PHP のメジャーバージョンを上げられないなどの弊害も発生しています。デプロイにダウンタイムが発生するので、深夜作業が避けられません。また、Chef などの構成管理もしていないしバックアップもほぼ取っていないので、このサーバが何らかの事故で吹っ飛んだら元の状態に戻すことはできないでしょう。
最低限今サービスを提供できている状態なので、自分の手から離し、持続的にサービスを提供する仕組みづくりのために一旦しゃがむという選択をします。
AgricolaDB をリニューアルします
AgricolaDevJP org 下で開発したものの最初のリリースは AgricolaDB のリニューアル版にすることを予定しています。このサービスは利用者が多いものの、前述の通り、今の仕組みでは維持が大変になってきました。
こちらのサービスを具体的にどのようにリニューアルするかについては、近日エントリを書く予定なのでお楽しみに。
最後に
「技術で農場を楽しく豊かにしたい」
アグリコラプレイヤー、募集中