PhpStormと僕

日々周りを巻き込むことをモットーに。気まぐれでJetBrains製のIDEネタとか書いてます。

漫画ビレッジっていうWebサービスを作った

漫画ビレッジっていうサービスを今週リリースした。

ITmediaの記事の記事でも紹介してもらったが、無料のマンガサービスに掲載されているマンガのリンクを集めたサービスという位置づけ。

各所でご紹介頂いたこともあり、公開2日で80万PVくらいのアクセスがあって結構驚いている。

賛否はあって然るべきだが、マンガアプリ運営している出版社の中の人から「ぜひうちのサービスも登録してください」という問い合わせもあったりするので、これは本当に意外で結構驚いたりはしている。

現時点で3,700シリーズくらいデータを貯めているけれど、まだ独自スコア付けが終わっていないものもあるので全シリーズは公開していないが、コンテンツは徐々に拡充していくつもり。

(どうでもいいけど、個人的なこだわりでサービス名で使っているのは「漫画」だが、固有名詞及びサービス名以外の箇所では全てカタカナの「マンガ」で統一している。本エントリ内も以下同様)

きっかけは id:kensuu さんとゴールデンウィーク前に「ブラウザだけでマンガ読めたら最高だよねぇ」「合法漫画村(パワーワード感)」っていう会話をしていて面白そうだなぁと思ったこと。

自分もマンガ好きで普段からKindle(まとめ買い勢)、マンガワンピッコマとかはよく使っているのだけれど、とにかくマンガアプリは種類が多すぎて

  • どのアプリでなんのマンガが何話まで読めるのか分からない
  • 各アプリごとにユーザ登録がめんどくさい(アカウントが大量になってどのアプリでどうログインするのか分からなくなる)
  • 読んでたマンガがどのアプリで読んでいたのか分からなくなって何話まで読んだか分からなくなる
    • これは動画をNetflixで見てたかAmazon Primeで見てたかdアニメで見てたか分からなくて何話見ればいいんだっけってなる現象も同じ

みたいなつらさはそこそこ感じていた。

マンガアプリを提供している各社プラットフォーマーからすると当たり前だけど自社のアプリを使って欲しいはずなので、 アプリごとの個別最適化は進んでいくものの横断的に見れる仕組みは出てこないだろうなぁと思っていたので、それなら作っちゃえ!と。

最初は1週間くらいで作れるかなーと思ったけど、個人開発の常でテンションが続かずにUI周りハマり始めて結構開発から離れちゃったりしたので、結果的に丸1ヶ月掛かった。

自分はエンジニアなので、以下は漫画ビレッジがどんな技術つかって作ったのかをまとめてみる。

フロント

フロントはNuxt。管理画面系はVue + Bootstrap。

UIフレームワークとしてはアプリUIっぽく作れるFramework7のNuxt wrapperのnuxt7を使っている。

ただ、UIフレームワークに関していえば結果的に選定をミスっていて、

  • Framework7-Vueに乗っかるとFramework7Domの独自実装の兼ね合いでServer Side Rendering(SSR)ができない
  • Nuxtの機能のfetchやasyncDataなどが潰されていて恩恵に与れない部分がいくつかある

というつらみがそこそこあって、UI周りは今日中にFramework7を捨てて作り直す予定。

別で作っているサービスでもAdmin機能としてFramework7は使っているが、ここらへんの事情を無視できるサービスであれば使うのは悪くないかなーと個人的に思っている。

バックエンド

バックエンドはすべてFirebaseに乗っかるようにしていて

クローラーだったり細かなバッチ処理類は Cloud Functions

WebAPI相当とデータベースに該当するものはすべてFirestoreを使っている。

ユーザ登録/認証機能は使っておらず、このサービスにおいては今後も実装する予定はない。(元々の思想に「ログインだるいよね」があるので)

FirestoreはまだβではあるもののRDB脳を捨て去ってからはかなりクセはあるもののとても快適で、APIレイヤーを意識しなくていいのはだいぶ楽ができている。 SubCollection周りの取り回しやQueryにまだまだ難はあるものの利点のほうがでかいので、別サービスでも積極的にFirestoreは使っていくと思う。

ただ、PVがそこそこあるせいでFirestoreのデータ転送量が意外と多く(もともとFirestoreはめちゃくちゃ安いんだけど)、収入がないの個人サービスを支えていくにはちょっとつらい規模の支出が出ているので、そこはなんとかしたいところ・・・。

インフラ

特に強いこだわりはないがいまのところはHerokuで動かしている。

1台でも余裕で捌けていたのだが、Zero Downtime DeploymentのためにPrebootを使いたかったので Standard-1X dynosの2台構成で今は動かしている。こっちはFirestoreとは違って微々たるもので、5000円/月くらい。

今後どうしていくのか

あくまでマンガアプリのプラットフォーム側の発展を意識して邪魔するつもりや、タダ乗りする気は無く、うまい感じに共存関係を築ければ良いなぁと思っているので、そんな視点でゆるく改善を続けていこうかなーと思っています。