Is It Keto: Month 12

Michael Lynch

Is It Keto:12か月目

原文は Michael Lynch により に公開されました。 このブログを購読する

一言でまとめると

月間5万人の訪問者は、自分が思っている以上に価値がある。

ハイライト

  • Is It Ketoにプログラムで生成した記事を88本追加した。
  • 月間ページビューが10万に達し、Is It Ketoのオーディエンスと関わる新たな方法を模索する時期が来た。
  • 100ドル未満のハードウェアで構成できるKVM over IPデバイスを自作した。

目標の自己評価

毎月のはじめに、達成したい目標を宣言している。目標に対してどれだけできたか振り返ってみる。

Is It Ketoに100本の新規記事を追加する

  • 結果:Is It Ketoに88本の新規記事を追加した
  • 評価:B

コンテンツをプログラムで生成するのは想像以上に難しい。スコアや栄養データを生成するのは簡単だが、幅広い製品に合う大量の文章をテンプレート化するのは一筋縄ではいかない。

引き続きテンプレートを拡充して新しい食品を追加していくが、サイトの収益を伸ばすための他の選択肢も模索していく。

新しいブログ記事を1本公開する

この記事は何らかの形で2年間取り組んできたものなので、ようやく公開できて嬉しい。出来栄えにも満足しているし、自分のデジタル化プロジェクトに役立つアイデアが得られたという声をもらえたのも嬉しかった。

この投稿はRedditで好評を得たが、Hacker Newsでは伸びなかった。まだHacker Newsで伸びる可能性はあると思っているので、1週間ほどしたら再投稿してみるつもりだ。

統計

Is It Keto

指標2020年4月2020年5月変化
ユニーク訪問者数35,45150,352+14,901 (+42%)
合計ページビュー72,89499,391+26,497 (+36%)
ドメインレーティング(Ahrefs)27.027.00
AdSense収益$92.09$109.92+$17.83 (+19%)
Amazonアフィリエイト収益$128.39$111.61-$16.78 (-13%)
合計収益$220.48$221.53+$1.05 (+0%)

Is It Ketoの訪問者数は引き続き増加した。COVID以前の通常の水準まで回復したようだ。気がかりなのは、AdSense収益が伸びに追いつかず、Amazonアフィリエイト収益はむしろ減少したことだ。

詳しく数字を見ると、Is It KetoがAmazonにもたらした売上は5月の方が4月より25%多かったが、Amazonがアフィリエイトの報酬率を大幅に引き下げたため、Is It Ketoの収益は大きく減少した。

Is It Ketoのオーディエンスをもっと活用する

数週間前、Justin Vincentから連絡があった。彼は連続起業家で、The Nugget Startup Academyの創設者だ。私のブログを楽しく読んでくれていた彼は、Is It KetoのマネタイズのアイデアをブレストするためにZoomで話さないかと声をかけてくれた。私は承諾し、その会話からビジネスに関するいくつもの有用な気づきが得られた。

最初に驚いたのは、JustinがIs It Ketoの訪問者数を非常に高く評価していたことだ。

Justin:ユニークは週にどれくらい来てるの?

自分:1万くらいだよ。

Justin:すごいじゃないか。君は金の鉱脈の上に座っているよ。

トップのケトレシピブログは月間約300万ユニーク訪問者を集めているので、自分の4〜5万は大したことないと感じていた。Justinは、プロダクトをローンチする上で最も難しいことの一つは興味を持つ顧客を見つけることだが、毎週ケトに興味のある1万人にリーチできるなら、それは大きなアドバンテージだと主張した。

Justin:既存のケトコミュニティを見て、みんながどんなことに悩んでいると思う?よく話題になる課題は何?

自分:わからないな。議論の多くは、みんなが成果をシェアして、他のメンバーがそれを祝福する、という感じだと思う。

Justin:祝福し合う…面白いね。wip.chatって知ってる?

wip.chatのスクリーンショット

独立系ソフトウェア開発者に人気のソーシャルネットワーク、wip.chat

wip.chatはインディー開発者に人気のソーシャルネットワークだ。非会員でも一部のコンテンツは閲覧できるが、投稿するには会員登録が必要で、月額20ドルかかる。彼らの売りは、wip.chatのコミュニティがプロジェクトのマイルストーンに対してアカウンタビリティを持たせることでプロダクト開発を支援してくれるという点だ。

ケト版のwip.chatについて話せば話すほど、そのアイデアが気に入ってきた。私が見てきたケト向けのソーシャルネットワークはどれも汎用的なツールを使っている。Facebookグループ、subreddit、Discordチャンネルなどだ。もしケトダイエット実践者に特化したツールがあったらどうだろう?その後1週間で25個ほど別のアイデアもブレストしたが、wip.chatのクローンが依然として最有力候補に残った。

今週、この架空のケト向けソーシャルネットワークのランディングページを作り、Is It Ketoで宣伝する予定だ。サインアップボタンを設置するが、ユーザーが支払おうとすると、「まだ構築中ですが、準備ができたらお知らせするメーリングリストに登録できます」といったメッセージが表示されるようにする。

会話から得られたもう一つの大きな気づきは、パートナーシップについてだった。

Justin:メンバーシッププロダクトを作れば、他のケト関連ビジネスと直接パートナーシップやアフィリエイト契約を結べるよ。

自分:でも、訪問者はすでにいるんだ。なぜ今すぐやらないの?

Justin:いい質問だ。なぜ今すぐやらないんだい?

だからこそ、外部の視点は貴重だ。Is It Ketoの初期には他のケト関連企業にアフィリエイト契約を持ちかけたが、規模が小さすぎて大半に無視された。月間10万ページビューとなった今、Is It Ketoはパートナーシップが成り立つだけの規模になっている。あまりに長い間実現不可能だったため、再検討することをすっかり忘れていたのだ。でも、AdSense経由で自分のサイトに広告を出しているケト関連企業に連絡して、Googleを介さず直接取引しないかと持ちかけるのを妨げるものは何もない。

wip.chatのスクリーンショット

Google AdSenseを介さず、この広告主と直接取引できるかもしれない。

Is It Ketoのブラウザパフォーマンス改善

Is It Ketoの歴史の大半において、パフォーマンスは後回しにされてきた。顕著な速度低下を引き起こしているコンポーネントをたまに修正することはあったが、速度を意識して設計することはほとんどなかった。

サイト訪問者の90%がGoogle経由であること、そしてGoogleが検索順位の指標としてパフォーマンスを用いていることを考え、Is It Ketoのボトルネックを特定するために数日を費やした。Is It Ketoのコンテンツ生成にはGridsomeフレームワークを使っているので、こちらの記事がパフォーマンス向上に役立った。

変更内容パフォーマンスへの影響
Bootstrap-VueとBootstrap-Vue-Iconsをまとめてインポートするのではなく、Bootstrap-Vueコンポーネントを個別に読み込む
GridsomeのデータをVueレイヤーではなくGraphQLレイヤーでフィルタリングして静的JSONファイルのサイズを削減する
Gridsomeで動的パスを使って画像を読み込むこのハックを取り消した
Google FontsをCSSの@importではなく<link rel>タグで読み込む
Google FontsのURLを調整して必要なフォントだけをダウンロードする
HTMLの<head>内でGoogle Fonts向けにpreconnectdns-prefetchを追加
Google FontsのインポートURLに?display=swapを追加して「Flash of Invisible Text」を防止する

誰もがwebpack-bundle-analyzerを使ってJSバンドル内の大きなコンポーネントを探すといいと言う。使い方がどこにも書かれていないので、自分はおかしいのかと思っていた。どの説明もだいたいこんな感じだ。

  1. npm install webpack-bundle-analyzer
  2. ???
  3. ブラウザで便利な可視化を見る。

しかし、可視化をどうやって生成するのかを説明しているものが一つもない。ようやくわかったのは、抜けているステップ2はwebpack-bundle-analyzerをビルドに組み込むことだということだった(スタックによって方法は異なるが、Gridsomeでのやり方はこちら)。すると次回アプリをビルドしたときに、次のような行が表示される。

Webpack Bundle Analyzer saved report to /home/user/isitketo/dist/report.html

そしてreport.htmlを開けば、みんなが話題にしている可視化を見ることができる。

Webパフォーマンスは思ったより難しい

Is It Ketoは当初、Python 2でApp Engine上で動いていた。サイトへの注力を改めたことと、GoogleがPython 2のサポートを終了する予定であることを踏まえ、4月にサイトを書き直すことにした。選んだのはVueベースの静的サイトジェネレーターであるGridsomeだ。

事前にレンダリングされたウェブサイトのパフォーマンスと、Vueの柔軟な開発体験、両方のいいとこ取りができると思えた。だが、Webパフォーマンスは思っていたよりも少し複雑だった。

ブラウザは事前生成されたHTMLをそのままレンダリングし、JavaScriptはバックグラウンドで評価してくれるものだと思っていた。実際には、ブラウザは他のことをする前にJavaScriptを評価したがるのだ。Is It Ketoでは<script>タグがHTMLの一番下にあり、defer属性も付いているにもかかわらず、パフォーマンス指標を大きく下げてしまう。

スクリプト有効時のLighthouseスコア47
スクリプト削除時のLighthouseスコア87

Is It Ketoで<script>タグを削除すると、Lighthouseスコアは40ポイント跳ね上がるが、サイトは機能しなくなる。

数か月以内にリリース予定のVue 3では、ツリーシェイキングによりパフォーマンスが向上するはずだ。これにより、未使用のフレームワークコードを削除してJavaScriptペイロードのサイズを削減できるようになる。Gridsomeはバージョン1.0でVue 3に対応すると謳っているが、開発リソースが非常に限られているようなので、そこに到達するまで何年もかかるのではないかと心配している。

Raspberry Piを仮想キーボード&モニターとして使う

ここ数週間、趣味のプロジェクトに取り組んでいる。ビジネスになるとは思っていないが、もしかしたら需要があるかもしれない。

現在のサーバーはヘッドレスで、キーボードもモニターも接続されていない。SSH経由で操作しているだけだ。問題は、OSの起動に失敗したりBIOS設定を変更したいときに手詰まりになることだ。サーバー本体を机まで運び、デスクトップ用のモニターとキーボードを接続してアクセスしなければならない。

次のサーバーでは、何らかの仮想コンソールが欲しいと思い描いていた。DellのiDRACHPのiLOのようなエンタープライズ向けソリューションもあるが、サーバーのコストに数百ドル上乗せされる。KVM over IPデバイスもあるが、こちらも400ドル以上し、肥大化したクライアントソフトが必要だ。

ここ数週間、Raspberry Pi 4で貧乏人向けのリモートコンソールを作ろうとしてきた。キーボード部分はネットワーク越しでも快適に動作している。

Raspberry Piをブラウザから操作できるキーボードとして動作させることに成功した

ターゲットマシンからの映像を表示するのはもう少し厄介だが、今では約1秒の遅延で動作するようになった。実際の様子はこんな感じだ。

Raspberry Piをブラウザから操作できるキーボードとして動作させることに成功した

今のところ映像は別ウィンドウに表示されるが、ウェブページに直接埋め込めるよう作業中だ。

詳細を解説するブログ記事を執筆中だが、ソースコードはまだ完全にはドキュメント化されていないものの公開しているので、興味があれば覗いてみてほしい。

  • key-mime-pi:Raspberry Piの仮想キーボードデバイスにキーストロークを転送するためのWebサーバー。
  • ansible-role-key-mime-pi:PiのUSBガジェット機能(キーボードをエミュレートするため)を設定し、WebサーバーをsystemdサービスとしてインストールするためのAnsibleロール。

事前設定済みのキットを180ドル前後で販売することも考えている。購入に興味があれば、こちらを訪れてほしい。

過去のプロジェクト

今もメンテナンスはしているが、現在は主力ではないプロジェクトについて簡単に近況を報告する。

Zestful

指標2020年4月2020年5月変化
ユニーク訪問者数1,142467-675 (-59%)
合計ページビュー2,9601,258-1,702 (-57%)
RapidAPI収益$32.19$6.48-$25.71 (-80%)
合計収益$32.19$6.48-$25.71 (-80%)

なぜか5月にZestfulへの関心が急増した。3件の顧客からエンタープライズ向け料金の問い合わせがあった。2件は見込みがなさそうだが、残りの1件はうまくいくかもしれない。今週末までにはどうなるかわかるはずだ。

まとめ

何を成し遂げたか

学んだこと

  • 事前レンダリングされたVueサイトでも、依然として大きなパフォーマンスのペナルティがある。
  • 自分のビジネスについて新しい人と話すことで、前提を見直すことができる。

来月の目標

  • Is It Ketoの姉妹プロダクトのアイデアを検証する。
  • Is It Ketoに30本の新規記事を追加する。
  • ウェブブラウザから操作できるPiベースのKVM over IPを完成させる。

この記事は「muse-spark-1.2-contributor」を使用して翻訳されました。

コメント