2019/05/21
個人開発でサービスをリリースしたので記事にまとめます。
最近こちらの記事などでキャリアの構築には専門性の掛け算が大事という話をよく聞くので私がそこそこ専門性を持っている『IT×ボードゲーム』なサービスを作りました。
作ったサービスはこちら → https://joururi-soft.com
以下は閲覧オンリーユーザーのログインに必要な情報です。
ユーザー名:DilemmaHoldem
パスワード:texasholdem
こんな感じの可視化情報があれば、どんなゲームが売れるか仮説を立てて実際のボードゲームを作ることができるのでボドゲ制作者の方々が幸せになるはずです。少なくとも私は幸せです。
使った技術要素は以下の通りです。
それぞれの項目を見ていただければわかると思いますが色々な記事から情報を取得しているので多分その気になれば誰でも似たようなサービスは作れます。
お名前.com で独自ドメインを取得しました。
無料のドメインもあるらしいのですがよく分からなかったので有料ドメイン取っちゃいました。
あと、こちらの記事とかで有料ドメインを取得するとやる気が出ると見たのでまず一番最初にドメインを購入して退路を潰しました。
実際リリースまでこぎつけることができたのでこれは有効だったと思います。
これが本当のドメイン駆動開発(ボソッ
メイン言語:Scala
ライブラリ:scala-scraper(スクレイピング)、phantomjsdriver(XML API 叩く用)、scalikeJDBC(DB 接続)等
言語は Scala です。最近一番使うことが多いというだけの理由です。
BGG では XML API が公開されておりこの API で各ゲームの評価レート、メカニクス等を取得できます。
バッチ処理ではこの API を叩いてデータを収集、MySQL に蓄積します。
PhantomJS が既に開発終了しているということはバッチを作成し終わってから知りました……。
今だと puppeteer とかになるのでしょう。
このバッチは現状ローカル環境で動かしてデータを集め、ダンプデータをリモートの MySQL に投入しています。
ソースコードはもう少し整理したら github で公開します。
scala-scraperによるWebスクレイピング
Scala で PhantomJS を使う
サーバは GCE の small インスタンスです。
今はこのスペックで十分動きますが今後利用者が増加するようなことがあればスペック上げます。
ちなみに無料枠の micro だとメモリ足りなくて MySQL が起動しませんでした
OS は特にこだわり無いのですが今までの仕事で一番使ってきた CentOS を使いました。
できるだけ新しいバージョンで勉強したかったのでバージョンは 7 です。
GCP のロードバランサを使って https 対応も行っています。
他にも SSH 接続のデフォルトポートを潰したり、http のポート開けたり色々設定してます。
本当は MySQL サーバと BI ツールのサーバは分けた方が良いのでしょうが現状一緒のサーバに乗せています。
GCE の無料枠のサーバを立るときに、初見でハマりそうなところ
Google Cloud Platform (GCP) で独自ドメインを設定する
GCP managed SSL(β版)を利用したhttpsサーバ構築
データベースは最新版を使った方が今後に活きるやろの精神で MySQL 8 を使用しています。
BI ツールから接続するために develop というリモート接続可能なユーザーを追加しています。
ポート開けたり、外部接続可能なユーザー作ったりといったことを全然知らなかったので今回のサービス開発では MySQL の環境を整えるのが多分一番苦労しました。
MySQL 8.0 初期設定覚書
Mysqlのgrant文でユーザ作成&権限付与しようとしてエラーが出たのでメモ
centos7 mysql 外部接続を許可しよう
色々調べた結果 Superset が良さそうだったのでそれを使うことにしました。
有名どころは Re:dash とかだと思うのですが仕事で使っていて可視化の種類があまり多くないこと、SQL スキルにかなり依存する等ちょっと微妙に思うところが多かったのでそれらが良い感じに緩和されていそうな Superset を使うことにしました。
ただ、実際使ってみるとやっぱり SQL のスキルはある程度必要だったのでちょっと微妙かも……。
今まで Docker を使ったことがなかったのでインストールは Docker コンテナ上に行いました。とても簡単でした。
Dockerコマンドメモ
BIツール superset をdockerでインストール
Supersetを導入して、DBを可視化してみた
主に GCP のお陰で全体的に割と簡単に開発が進められたのですが、私はアプリのエンジニアなのでインフラ周りは超苦労しました。
特に MySQL のインストールから設定辺りは一歩進むごとに罠にハマるのを繰り返していたので作りたいもののゴールを描いていないと途中で投げ出していたような気がします。
しかし、ほとんど全て自分で作ったお陰で少しずつ進めるうちに徐々に目標に近づいていく感覚はとても感じたので楽しく開発できました。
そして、今回は OSS や GCP をふんだんに使ったお陰で個人としてはそれなりのスピードと品質でリリースまでいけたと思います。恐らく総作業時間は二週間前後くらいではないかと?
GCP 等は普段の仕事でも使うときは使うのでそういったノウハウを作りながら学べたのはかなり良い学習になったと思います。
可視化したデータはまだまだ少ないのでこれからどんどん増やしていきます。そのために今はデータ可視化について勉強中です。
あと、このサービスを作ったそもそもの目的はボードゲームの開発を行うことなのでこのサービスを使ってデザインしたボードゲームで一発ブチ当てたいです。今まで作った作品たちは大ヒットとまでは言えないので……。
そして、このサービスの発表のために 2019/5/25(土) に東京ビッグサイトで行われるゲームマーケットという同人ボドゲの即売会にサークル参加してきます。ブース番号は『Q19』です。
即売会なのにゲームを売らないという酔狂なブースゆえに多分暇してると思うので技術の話とかしに遊びに来ていただけると喜びます。
以上、お読みいただきありがとうございました!