目次から雑誌を検索する「ink」-開発者インタビュー#02
個人開発者の裏話を直接インタビューでお届けするPRANET stories。今回は雑誌の目次検索サイト「ink」を開発している皆さんにお話を伺いました。
ink(インク)
雑誌を目次から探せる検索サイト。2019年9月リリース。
対談メンバー
・リッキー プロダクトオーナー
・古澤/松根 エンジニア
インタビュワー
松原(@dowanna6):PrAha Inc.のCEO/エンジニア
松原:集合写真を見て気になったんですが…人、多くないですか?(笑)
リッキー(PO):多いと思います(笑)フルコミットの人は居ませんが、人数だけで言えば10人は居るかな…
目次から雑誌にアクセスする
松原:個人開発で10人も集まる事は、なかなか無いと思いますよ!そんなビッグプロジェクトの成り立ちを教えていただけないでしょうか?
リッキー:僕は学生時代、いろんな雑誌を持ち寄って、ページを切り抜いて、自分だけの雑誌をツギハギするワークショップを実施していたんですよ。そこで気づいたのが「どの雑誌に何が書いてあるのかわからない」という問題です。
松原:Tarzanならいい身体になる方法が書いてあるとか、「こんな事が書いてあるのかな」とボンヤリ想像は出来るけれど、糖質制限に関する情報が何号に書いてあるかは分からない、みたいな事ですか?
リッキー:そうです。これは雑誌という情報媒体の根本的な性質に起因していて、雑誌は「フロー情報」なので蓄積される前提にありません。出版されて、短い時間軸で消費され、消えていく。
松原:よほど好きな雑誌でなければ、一度読んだら捨てちゃいますしね。
リッキー:でも最近はWEBの方がフロー情報としては圧倒的に速くて、雑誌の優位性が失われている。だから印刷物の中でも雑誌の売上低下が激しいんです。
松原:なるほど。
雑誌でしか手に入らない情報が欲しい
リッキー:でも雑誌にしか載ってない情報って意外と多いんですよ。例えば僕が90年代のインターネットについて以前調べていた時、ネットで調べてもリンクが切れていたり、欲しい情報が見つからなかった。古い情報なので、全然メンテナンスされていなかったんです。
松原:確かに、メンテナンスされていない情報って多いですよね。
リッキー:そこで昔の雑誌を取り寄せて読んでみると、ネットに載っていないようなコアな知見が沢山得られたんです。雑誌を「ストック情報」として捉え直して情報を蓄積させたら、雑誌の価値が再注目されるんじゃないか?ストック情報を検索可能にすれば、よりニーズに合った情報が見つけられるんじゃないか?と考えたのが、inkのキッカケです。
松原:inkで「糖質制限」と調べたら、糖質制限について書かれた雑誌の目次が表示される感じですね?
リッキー:そうです。雑誌に対して目次からアクセスするイメージですね。
松原:どんな雑誌が検索可能なんですか?
リッキー:今は種類を問わず10万冊近くデータベースに登録されているんですが、例えば住宅情報誌とか、恐らくストック情報としては役に立たないだろうと判断した情報は省いています。ノイズが増えてしまうので。
松原:実際にinkを作ってみて、雑誌との付き合い方に変化は生まれましたか?
リッキー:以前Value Booksさんにお話を伺いに長野の上田市に行く機会があったので、事前に上田市について調べようと思ったんです。でもネットで探しても「サマーウォーズの舞台」とか「市役所のHP」とか、全体最適された情報しか出てこなくて。
松原:グーグルが検索結果を個人最適しているとはいえ、みんなが欲しい情報が上に出てきやすいですもんね。
リッキー:そこで ink を使ったら上田市について特集した記事が見つかって、その雑誌を読んだら、ネットでは手に入らない面白い情報にアクセスできた。こんな感じにニッチな情報と自分のニーズがドンピシャにマッチする瞬間が増えるのが楽しいですね。
1年がかりの構想が生み出す安定感
松原:これだけ大きなチームで長い開発期間をかけて、メンバー同士で揉める事はないですか?
全員:揉めないですね。
松原:すごいですね…どうしてそんなにチームがまとまっているんでしょう?
リッキー:まずinkの開発を始める前に、僕ともうひとりのPMで1年くらい構想を練ったんですよ。ほぼ毎週顔を合わせて、「雑誌とはどうあるべきか」みたいな議論を重ねて。
松原:ハリウッド映画みたいなガッツリした構想期間ですね
リッキー:もともと一緒によく遊ぶ仲だったので、会う頻度が高かったのもあると思います。ただ、あの1年をもう一度やれと言われたら嫌ですね(笑)
松原:そこまで議論を尽くしたサービスだからこそ、これだけの人数が居て、かつ個人開発でもブレずに進めるんですね・・・
古澤(エンジニア):1年かけて議論した哲学に対して「お、それいいじゃん!」と共感して僕も参加したので、コアな部分を共有できているのは強いと思いますね。
inkの作り方
松原:ここからは少しエンジニア向けの質問をしてみます。ink は、どんな構成で作られているんでしょうか?
松根(エンジニア):アプリケーションはVue.jsとGoで書かれていて、検索周りはElasticsearchを使っています。インフラはAWSですね。CI/CDも整備していて、ブランチマージからビルドとデプロイまで自動化されてます。
松原:ElasticsearchはAWSのマネージド型を使っているんでしょうか?
古澤(エンジニア):いえ、EC2のインスタンスに自分たちで建てていますね。大手サービスであれば1時間のダウンタイムで数億円の損失が出てしまいますが、個人開発にそこまで高い可用性は求められないので・・・安い方を選びました(笑)
松根:でも、だいたい大事なミーティングの時に落ちてるよね
古澤:(笑)
松原:技術選定は、もう基本的に趣味の世界ですかね?
松根:そうですね。せっかく個人開発するなら、使ってみたかった言語とか技術を使ってみようかな〜って感じです。エンジニアにとっては、個人開発の楽しいところですよね。
古澤:Elasticsearch大好き
松原:やっぱりElasticsearchは速いですか?
古澤:RDSで数秒かかっていた検索が0.数秒まで短縮できたので、速いですねー。
松原:速い!検索結果のチューニングもされているんですか?
古澤:してますよ!タイトルの場合はスコアを上げたり、検索順位にはプロダクトの思想が反映されるので、POのリッキーと会話しながらその辺りは調整しています。
開発の苦労話:雑誌が一致しない
松原:開発周りで特に苦労した話ってあります?
リッキー:雑誌コードが被る問題とかヤバかったよね。
松原:雑誌コード?
リッキー:雑誌に振られているIDが一定期間を経ると使い回される事があるので、全然違う雑誌が同じIDを使う、みたいな事が起きます。
松原:へー・・・!それは雑誌を特定するのが難しそうですね。
古澤:結構難しいですね。当然誌名だけでは判断できないので、発行日、号などを組み合わせないと特定できない。雑誌のドメイン知識が結構求められますね。
リッキー:なので実はチームに本業で雑誌ライターをしているメンバーが居まして。
松原:本当に個人開発なのかな、って思うぐらいリッチなチームですね
古澤:あと、僕は大学で図書館情報学を専攻してました。
松原:え、そんなドンピシャな学部あります?(笑)
古澤:元は図書館司書の育成機関としての役割もあったみたいなんですけど、図書館以外の情報源(WEBとか)が増えるに連れて他の情報も取り扱うようになった学部ですね。当時も「どうすれば雑誌を特定できるか」みたいな事を試行錯誤していたので、そのまま今に活きています。
松原:本当に雑誌の目次検索のドリームチームだなぁ…。
リッキー:雑誌が特定できれば、例えば目次の検索結果からamazonの商品詳細まで繋げられるので、そこまで行けたら嬉しいな〜と最近は考えてます。
個人でも会社でもなく、部活みたいなチーム
松原:これだけのチーム規模で開発していると、結構すごい費用がかかっていませんか?
リッキー:個人開発なのでみんな個人の時間で働いているけど、人件費に換算したら1000万円はかかっているんじゃないかな(笑)
松原:ヒエー!!ほとんど会社のチームと変わらない体制だと思うんですけど、本業との違いをどういう時に感じますか?
リッキー:仕事ならROIを意識して優先順位を決めますが、個人開発だと「モチベーション上がるしLP作るか」とか、本業で取らない選択肢も多いですよね。個人開発は絶対にやらなきゃいけないわけじゃないから、仕事以上に全員の意識を合わせるのが難しいと言うか。
松原:そんな中、これだけの人数が個人の時間を使って、揉める事なく進めている秘訣はどこにあるんでしょう?
リッキー:みんなサウナが好きだったり、一緒に旅行してたり、一緒に遊んでいる事が大きいんですかね。社会人になると、この人数の固定メンバーと集まる機会って減っていくじゃないですか。共通の趣味を持った人が、同じ目的のために集まったからこそ続いている。僕らにとっては部活みたいなものですね。
松原:チームで集まって物を作っていく。素晴らしい話だなぁ…inkさんの話を聞いて「今年はチームで個人開発してみようかな」って思う人が出て来そうですね。これからもinkの活躍、期待してます!
inkチーム:ありがとうございました!
ITエンジニア専用SNS「PRANET」で、目次から雑誌を検索できるサービス「ink」を応援しませんか。
PRANETでは「エンジニアが選ぶ、この個人開発が凄いランキング!」を毎月実施!エントリーされたプロダクトは、毎月受け取った「いいね!」に応じてランキングが決まります。
またPRANETは個人開発者を中心としたコミュニティなので、一緒に個人開発に取り組める仲間が見つかるかも・・・?2020年はPRANETで仲間を見つけて、チーム開発に挑戦してみてはいかがでしょうか!
PRANETの登録はこちらから▽