Help us understand the problem. What is going on with this article?

本の要約メモ共有サービスを個人開発した.

京大生が2人でアプリを作ってリリースしていたので, 文系京大生の僕(Twitter@by110416)も1人でウェブサービスをリリースしてみた。

FirebaseだけでiOS版マッチングアプリ「Rose Me」をリリースするまでの話

使ったもの

  • Ruby on Rails
  • PostgreSQL
  • Heroku
  • SendGrid

作ったサービスとそのコンセプト・目的

link: 本の要約メモ共有サイトbookI/O

  • 良い本(情報)に出会うコストを下げる
  • 小さなアウトプットを継続する場を提供する
  • 情報共有の壁を減らす

詳細なコンセプト・サービス概要はこちらのnoteに書いてあります。
https://note.mu/110416/n/n833a969d3bf6

本を調べるときにノイズ(赤いプログラミングスクールとかアフィサイトとか)が多かったので、「複数の指標から本の評価が見れるサイトがあったらいいな」と思って開発をスタート。

最初は技術書のレビューサイトを考えたのですが、

  • もうすでに存在している
  • 技術書以外の情報も知りたい
  • 狭く深いユーザーではなくほどほどに広くほどほどに浅いユーザーをとりたかった

ので技術書・専門書・ビジネス書のメモ共有サイト(最初は「レビューサイト」を検討したが後述の理由で「メモ共有サイト」に変更)というコンセプトにしました。


ちなみに個人開発の技術書サイトは、Yusak Inoueさんtechbooksや、
YUUKIさんのPooks
有名なものだとqiitaの引用数をランキングに反映したテック・ブック・ランクがあります。

既存の情報を引っ張ってきて整理する(&それでお金を稼ぐ)キューレーションには「他人のふんどしで相撲をとる」という批判もありますがある程度は必要だと思います。


差別化

サービス名 検索機能 ジャンル 書籍数 優位性 評価軸 ソーシャル性 信頼度
techbooks 技術書 不明 Qiitaベースの分類,UI・UX 2 ?
pooks △- 技術書 不明 UI 1 × ?
テック・ブック・ランク x 技術書 4000冊 Qiitaベースのランキング 引用数 ×
  • 技術書だけではなく役に立つ(実利的な)本を扱う
  • レビューではなくメモの共有サイト
  • 技術に興味のあるデザイナーやビジネスパーソン、逆にマーケティングや組織運営などのビジネス面に興味のあるエンジニアを対象にする
  • いい情報に出会えるようにオンライン上の記事やメディアを本と関連付け

機能

情報を得る&情報を活用ために次のような機能を考えました。

  1. 本を信頼性・価格満足度・わかりやすさ・おもしろさ・おすすめ度(人に薦めたいか)の5つの指標で判断する。

  2. 評価が一目でわかるようにグラフを表示する。

グラフはchart.jsを使いました。便利。

new Chart("#dom_id",config_hash)

の一文でチャートを描画できます。

image.png

評価入力用のradio buttonは少し工夫して星にしました。
以下の記事を参考にしました。
https://kg-update.net/cssで評価★星を作る/
image.png

ユーザビリティ

話が変わりますが、みなさん「読書感想文」を書け、といわれて困った経験はないですか?あれって得意不得意が別れますよね。
え、みんな得意?そうだったら悲しい。

読書メーターの本の感想をみてるとすごいな~と思います。(小並感)

ところで本に関連するサービスへのニーズは

  • いい本にであうコストを下げる
  • 本の内容を楽に手に入れる

ことだと思います。

後者の場合は、本の要約サイトflyerというサービスが有名です。

どちらかというとインプット+記録のためのサービスが多いですね。

アウトプットとして「読書感想文を書け」って難しいです。
けど、「要約しろ」とか「いい点を教えて」とか「5段階評価でいくつくらい?」って言われたら本の感想って案外書けそうです。

アウトプットの選択肢にはブログやnote, youtubeがありますが、
ブログやnoteは一つの記事に分量を書かないといけないし、本気でやるならSEO対策をしたりしないといけないのでアウトプットを継続するハードルが比較的高いです。

そこで

アウトプットのハードルを下げるサービスがあったら面白いのでは?と思い、

レビュー(感想文)ではなくメモを共有するコンセプトにしました。

なんとなく比較表(主観)

BookI/O flyer
コンセプト Outputを簡単に 10分で時短読書(Inputを簡単に)
ジャンル 実用書全般 ビジネス書
評価者 オープンなマス クローズドな専門家
評価 マスの集合知ベース 専門家の権威と信頼ベース
評価軸 5つ+総合評価 3つ+総合評価
使い道 本を探す・評価を見る・アウトプットを共有する 要約を読む・記事を読む
運営 個人 企業
価格 無料 要約5冊500円~
求められるもの アウトプットと情報共有 お金
その他 開発者が京大生 CFOが京大卒

バックエンド

「Rubyオワコン」ってよく言われますが(そもそもよく言われてるのか?)小規模~中規模のサービスを個人開発するならRuby on Railsがかなり使い勝手が良いです.

というのは日本語・英語問わず情報量が多く、ウェブ開発に必要な機能が一通りそろっていて、コードを書く量を減らせるからです.
gem(ライブラリ)が充実していて、ログイン周りのdevise, ページネーションをさくっと実装するkaminari, テストにつかうrspec, seo 対策に使えるmeta-tagsなどがあります.

deviseはさまざまなヘルパーメソッドも用意されており、よくあるログイン・認証周りの機能をサクッと作れます。万歳。
この記事がわかりやすいです。
https://qiita.com/tobita0000/items/866de191635e6d74e392

また、フロントエンド系のgemは、自分で作ることもできるけどなんだかんだめんどくさい機能を減らすことができます。

フロントエンドはslimやhaml, sassやscssを使えば短くスマートに記述できます。

redundant.html
<div class="hoge" id="Hoge" style="display:flex;padding:10%">
  <div class="foo">
    <p class="bar">Hello World!!</p>
  </div>
</div>
concise.haml
.hoge#Hoge{style:"display:flex;padding:10%"}
  .foo
    %p.bar Hello World!!

emmetによる補完にも対応しています。

erb2haml というgemを使えば、erbで書いたhtmlを簡単にhamlに変換できます。

railsならpartial機能で部品を再利用するのも容易です。
viewのhtml.erbやhtml.hamlからrenderで呼び出すことができます。
renderで呼び出すタイミングでlocalsオプションを使って引数を渡すこともできます。

render_example.haml
= render "partial",locals:{arg: hoge}
-# partial側からargでhogeを参照できる。

dbなどのインフラはherokuに丸投げです。herokuにリリースするための情報も充実しているのでありがたいです。
herokuがよしなにやってくれている部分のことを知りたくなったら次の記事がわかりやすいです。
https://qiita.com/takahiro1127/items/fcb81753eaf381b4b33c

最近アドオンを見てみたらprismicなどのCMSバックエンドや機械学習ツール、音声処理ツール、動画ホスティング・ストリーミングなど便利なサービスがあって驚きました。

GCPはいわずもがな良いけどherokuもいいぞ。

フロントエンド

css フレームワークはbulmaを使いました。レスポンシブ対応の軽量cssフレームワークのひとつで機能・ドキュメントが充実しているのでとても便利です。
こんな感じでそこそこきれいなUIがサクッと作れます!
image.png

ちなみに作っている途中でmaterialize.cssというライブラリを見つけて浮気しそうになりましたがそこそこの量をbulmaで作っていたので諦めました。

モダンなReactとかVueも使ってみたかったのですが学習時間がそんなに取れなかったので今回は延期しました。

また、「お問い合わせ」に関してはgoogle formを使いました。フォームとそれを受け取る管理画面を作るのは、個人開発の場合優先順位を低めにしていいと思います。

SEO

最低限やること
・title, description, ogpなどのmetaタグの設定
・google search console, google analyticsへの登録
・urlの正規化
meta-tagsというgemを使ってtitle, descriptionなどのhtml metaタグを動的に生成したり、google search consoleやgoogle analyticsに登録したりして最低限のSEOを施しました。search consoleの所有権確認で少し詰まりました。
効果があるかはわかりませんが、本の詳細ページの下のほうに関連書籍を追加したり、headerを固定したり、footerに内部リンクを追加してサイト内回遊の導線を作りました。
最近は検索エンジンだけでなく、ソーシャルからの流入も考えないといけないのでTwitterシェアボタンなども追加しました。
google search consoleで確認すると、httpのコンテンツとhttpsのコンテンツの両方をインデックスしていたので、httpsでcanonicalを正規化します。
www.hoge.domain,hoge.domain, http://hoge.domain, https://hoge.domainなど、共通のコンテンツが異なるurlで重複している場合、重複コンテンツとしてSEOに負の影響を与えることがあります。

個人開発で気を付けること

デザインは沼(泥沼)。ほどほどに。

フロントエンドまわりはどれだけでもこだわれます。沼です。しかし、その労力に見合ったものがあるとは言い難いです。(あくまで個人の感想です。)
(チーム開発の醍醐味は分業の経済が働くからフロントエンドはフロントエンドに集中してデザインにしっかりこだわれることだと思う。)

http://bm.straightline.jp/
このサイトはたまたま見つけたウェブデザインのブックマークサイトなんですが、しばしば「こだわりすぎだろ。これ採算取れるのか?」ってサイトが出てきます。

周囲の人のレビューを受けよう

「このサービス最高!」と思っていても伝え方や押すポイントによって受けが悪い場合と、そもそもサービスにニーズがない場合があります。なので開発途中でもレビューを受けてどのポイントを押していくのか、あるいは開発をやめるのかを決断する必要があります。

引き際大事。

サンクコストはあきらめましょう。セ〇ンペイはクソサービスでしたが、巨額を投資したクソサービスを即座に撤退する判断は間違っていなかったと思います。「コンコルド効果」という言葉があるくらい。引き際を見極めましょう(このサービスこけたらブーメラン)

とりあえず完成させる。

完璧な理想像を思い描いてそこを目指して延々と手を動かすよりもとりあえず、まずサービスの全体像を作ってみてささっさとリリースしてそこから少しずつ改修していったほうがいいです。
よくいう「完璧を目指すよりまず終わらせろ」です。

全部作らない。

技術的ハードルが高かったり、手間がかかることは後回しにして手動でするのも一つの手だと思います。(技術情報共有サイトに書くことじゃないかも。)

詰まった点

Amazonの書籍検索API使えない問題

Amazonの書籍検索APIはそれまでの売上がないと上限がかなり厳しくてすぐrequest too quicklyとかいうエラーが出ます。urlのルール見て自分で文字列加工しようかと思ったらtimestampsやsignatureがいるらしいです。
https://jpn.itlibra.com/article?id=20708

あきらめてgoogle books apiを使うことにしました。
google books apiは下のお世話になった記事・情報源のリンク先が分かりやすいです。

domainの所有権確認

ドメインはバリュードメインで取得しました。検索クエリーなどを調べるためgoogle search consoleに登録したのですが、バリュードメインの管理画面からtxtレコードを使って所有権を確認しようと思ったら失敗しました。
txt @ google-site-vertification=hogeで指定できるはずがなぜか出来ません。

調べたところルートドメインを指定するためにpointDNSを使っていたのでpointDNS側から設定しないといけないようです。
結論としてはpointDNSの管理画面からadd recordを選択し
type: txt
として
google-site-verification=hoge
を下のテキストエリアにペーストすればOKです。
ネットワーク周りの知識が足りないので勉強しなければ。。。

10/29追記
バリュードメインでドメインをとった後に、メールアドレス認証のメールが来るのでそれをちゃんと認証しましょう。そうしないとドメインがロックされます。(私はロックされました😢)
verification-noreply@onamae.comから来るメールです。

コンテンツが増えないとユーザーが増えない・ユーザーが増えないとコンテンツが増えない問題

レビュー共有サイトのように、ユーザーが投稿したものがコンテンツになるサービスの場合、初期の集客が進まないという問題があります。集客が進まないとユーザーが増えない、ユーザーが増えないからコンテンツも増えない、コンテンツがないからユーザーが増えないと悪循環にはまります。大失敗。

初期の集客は国内外とわずどこのサービスも苦労しているようです。

サービス開発のためのマーケティングコンセプトとして「SVTの法則」というものがあるそうです。(S=simple, V= valuable, T= trend)

金も知名度もない個人でこういったサービスを作る場合、技術的なハードルよりもマーケティング的なハードルが高いです。
個人開発で成功している事例をみると、他のユーザーが使っているとより面白いけど一人しか使わなくてもある程度の楽しさを提供できるもの、あとは、なんらかの強い必要性を満たしているものが多いです。
レトルトキャリーさんのみんなのボタンメーカーとか杉田賢人さんの立教大学シラバス検索システムですね。
あとは需要を目ざとく見つけて極めてニッチなところを狙っていく戦略です。
個人で開発期間1日のアプリが結構ダウンロードされた話
この記事はとてもいい例です。

お世話になった記事・情報源 &宣伝

オンライン上にオープンに情報が転がっていなければこのサービスを作ることはできなかったと思います。このオープンでフリーな文化がもっと広まるといいと思います。
そのなかで私の作ったサービスがおもしろい本・面白い情報に出会うコストを下げ、ハズレの本をひく確率を下げることができれば幸いです。

以下のサイト・ブログ・記事を作成してくださった方々ありがとうございました。


宣伝

コンテンツが少なくこまっています。
最近読んだ技術書があったらメモを登録していただけると嬉しいです(切実)。
本のメモ共有サイトbookI/O
本はトップページの検索窓かメニューバーの検索窓から検索できます!


全般

Ruby on Rails チュートリアル
herokuにrailsアプリをdeployする
酒と涙とRubyとRailsと

google books api

google books api からjsonデータを取得

google books api公式ドキュメント

フロントエンド

bulma 公式ドキュメント

chart.jsでレーダーチャートを書く

ソーシャル機能

railsでフォロー機能をつくる

ランダムにdbから取得

https://qiita.com/yutaroadachi/items/c48125e1c3f9b2403c38

herokuの設定

日本向けRailsアプリケーションをHerokuで走らせるためのまとめ
Rails5+Heroku+SendGrid でメール送信するまで。
初めてHerokuで独自ドメインを公開するあなたへ
Heroku の AddOn、PointDNS を設定しました

SEO

RailsでSEOが捗るgems

モチベーション維持・情報収集

個人開発のエンジニアがプロダクトを紹介できるサイトです。
プロダクト共有サービスeggineer

宣伝サイト

個人で作ったサービスを宣伝できるサイトです。

Service Safari
ツクログ

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした