2025/08/21 19:56 How I built my first side project: Tubee, in 2017

やあ、ロボ子!今日のニュースは、YouTubeのレコメンデーションアルゴリズムに不満を持った学生さんが作った「Tubee」というお話じゃ。

博士、こんにちは。Tubeeですか、面白そうですね。どんなことができるんですか?

Tubeeは、ユーザーがYouTubeチャンネルを購読して、新しい動画がアップロードされたときに、自動で色々なアクションを実行できるプラットフォームなのじゃ。例えば、YouTubeのプレイリストに追加したり、スマホに通知を送ったり、動画をDropboxに保存したりできるぞ。

なるほど。自分でYouTubeフィードを構築するようなものですね。開発は2017年から始まったんですね。

そうじゃ。最初はPHPとjQueryで作られていたみたいじゃな。DigitalOceanのチュートリアルを参考にLAMPスタックを構築したらしいぞ。でも、開発ワークフローはちょっと大変だったみたいで、TransmitとSublime Textでコードを編集して、SSHでサーバーに接続してApacheを再起動していたらしい。

それは非効率的ですね。でも、そこからDockerとDocker Composeによるコンテナ化に進化したんですね。素晴らしい。

じゃろ?それに、PubSubHubbubプロトコルを使ってYouTubeの通知を受信していたみたいじゃ。賢い!

PubSubHubbubですか。初めて聞きました。YouTubeのリアルタイム通知を受け取るためのプロトコルですね。

そうそう。でも、APSchedulerを使って定期的なタスクを処理しようとしたときに、Gunicornのpre-forkモデルでジョブが複数回実行される問題が発生したらしいぞ。

それは大変でしたね。分散システムの基礎知識の欠如が原因だったんですね。

じゃな。APSchedulerの作者やFlask Web Developmentの著者にも助けを求めたみたいじゃ。こういう経験から、ドキュメントをしっかり読むことやStack Overflowを活用する能力が重要だと学んだみたいじゃぞ。

本当にそうですね。それに、プロジェクトを通じて、要件の85%を事前に把握することや、SRP(Single Responsibility Principle)に従うことの重要性も学んだんですね。

そうじゃ。構造化ロギング、ユーザー認証、ステージング環境の構築も行ったみたいじゃな。Twelve-Factor Appの原則も無意識のうちに実践していたらしいぞ。

素晴らしいですね。でも、最終的にはプロジェクトを終えることになったんですね。NLP Labでの研究プロジェクトに注力するため、Tubeeの開発に時間を割けなくなったんですね。

そうみたいじゃ。それに、Tubeeが解決しようとした問題が、ユーザーの注意を引かず、スケーラビリティに欠け、新しいチャンネルの探索を促さないという根本的な問題もあったみたいじゃな。

なるほど。プロジェクトを誰にもデモしなかったため、フィードバックを得る機会が少なかったという反省点もあるんですね。

じゃな。「Move faster, Break more things」の原則を理解していなかったり、ロードマッピング、設計、実装、テスト、フィードバックをすべて一人で担当したことも反省点として挙げているぞ。

多くの教訓が得られたプロジェクトだったんですね。AI支援なしでデバッグする経験や、境界のない探求心を持つこと、RTFM(Read The Fucking Manual)の精神でツールを深く理解することが重要だと。

そうじゃ。最後に、YouTubeが意図的に通知をミュートしている証拠は見つからなかったみたいじゃ。コンテンツ作成者が動画をアップロードしてすぐに削除した場合、通知が届かないことがあるみたいじゃな。

勉強になりました。私も何かサイドプロジェクトを始めてみようかな。

いい心がけじゃ!そういえば、ロボ子。Tubeeを作った学生さんは、もしかしてYouTuberになりたかったのかも…なんてな!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。