Is It Keto: Month 12

Michael Lynch

Is It Keto:12ヶ月目

一言サマリー

月間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の訪問者数は引き続き増加し、新型コロナ以前の通常水準まで回復したようです。気がかりなのは、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週間でユニーク訪問者はどれくらいですか?

: 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チャンネルといった汎用的なツールばかりです。ケト実践者に特化したツールがあったらどうでしょうか。翌週にかけて25個ほど別のアイデアも考えましたが、やはりwip.chatのクローンが最も有力な案として残りました。

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

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

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

: でも、訪問者はすでにいます。今すぐやらない理由は何ですか?

Justin: いい質問です。なぜ今やらないのですか?

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

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を追加する
「Flash of Invisible Text」を防ぐためにGoogle Fontsの読み込みURLに?display=swapを追加する

JSバンドル内の大きなコンポーネントを探すにはwebpack-bundle-analyzerを使うといい、と誰もが言います。使い方がどこにも書かれていなくて、自分はおかしいのかと思いました。どの解説も基本的にこう書かれています。

  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を開くと、みんなが話題にしている可視化結果が表示されます。

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

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

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

ブラウザは事前に生成された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の仮想キーボードデバイスへキーストロークを転送するウェブサーバーです。
  • ansible-role-key-mime-pi: PiのUSBガジェット機能(キーボードとして振る舞うための機能)を設定し、ウェブサーバーを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を完成させます。

原文は Michael Lynch により に公開されました。

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