普段使いで 開発のモチベを取り戻した話 影広 智彦 - ペンギン内閣
影広 智彦 - ペンギン内閣 • 学部2年です • 小学4年生ごろに スクラッチを始め る • 中学生でC言語や Python、Goなど を始める。またD 言語にハマる。 • 趣味では、Web サービスなどを少 し作っています。
SNSには凄いエンジニアがあふれている • 「このアルゴリズムの高速化で論文を書き ました」 • 「このAI用ツールを作りました。1Kのス ターを集めています」 • 「個人開発のサービスの売上が月10万円に なりました」
こういう世界で 私がプログラミングする 意義とは?
なぜ、私は開発のモチベーションを失っ ていたのか • じっくりと難しい技術・理論を理解するの は辛い • 正直に白状すると、私はすぐに簡単に変化 するのが好きです • 世の中、優秀な人が便利なものを作ってい る • 残念ながら、私は全く新しい独創的なもの も作れず
ここで考えたい 個人開発のマトリックス 私の手前味噌ですが…
他人 優秀だと バズ 思われた りたい い 便利 技術 普段 技術的 使い 好奇心 自分
他人 優秀だと バズ 思われた りたい い 便利 今日話すのはこれ→ 技術 普段 技術的 使い 好奇心 自分
なぜ、私は普段使いで開発のモチベを取 り戻したのか • 技術的にすごい必要はない • 自分以外のユーザー獲得を考えなくてい い。競合サービスとの差を悩まない • 自分が作ったものを自分で使うことに価値 がある。競合サービスではなく自分で作る 大義名分 • 当事者性。自分が使いそのツールの快・不 快を体験すること。これが開発の燃料にな る
ここからは実際の事例を 紹介します
私が開発している日記Webアプリ • 2年ほど日記執筆を継 続できている • テキストベースなので 自由度が高い。私は TODOには「・」で書 き、終了後「 」に 変えて使っている • リアルタイム編集、毎 日のテンプレート機 能、習慣化計測機能な どを完備
リアルタイム同期されない問題 • 編集するたびにサーバーに送 信される仕様だった • しかし、リロード時にサー バーからクライアントに送信 する仕様 • その結果、せっかくスマホで 追記したのに、パソコンでリ ロードせず編集してしまい、 上書き削除される悲劇が3回ほ ど…。
こんなユーザ体験 やってられない!!
CRDTを実装する • CRDTを使い、リアルタイム同期を実装する • ライブラリはYjsを使用する • 自前で同期のアルゴリズムを考えるのは難し いしバグが怖いのでやめる • 無事、日記のリアルタイム同期に成功! • これで日記が上書きされて消えることがない
習慣機能でホームページと連携したい • せっかく習慣を毎日記録 しているのだから、継続 した累計日時をホーム ページに載せたい!
習慣機能の公開APIを実装 APIとして公開。 ホームページでそ のAPIをfetchして 組み込み。
普段使いが自己表現に つながった
前の日からコピペしないといけない問題 • 繰り返し日課のタスクを、昨日の日記から 今日の日記にコピペする必要があった • 毎朝、それをする必要があり、面倒でなか なか一日を始められない • テンプレート機能がほしい
こんなユーザ体験 やってられない!!
テンプレート機能を実装する • テンプレートタブの 「 」と書かれた行 が、その日の日記 に、自動挿入される • その日の0時に実行さ れるバッチ処理
これで一日を簡単に 始められる体験を得られた
なぜ、私は普段使いで開発のモチベを取 り戻したのか • 技術的にすごい必要はない • 自分以外のユーザー獲得を考えなくていい。 競合サービスとの差を悩まない • 自分が作ったものを自分で使うことに価値 がある。競合サービスではなく自分で作る 大義名分 • 当事者性。自分が使いそのツールの快・不 快を体験すること。これが開発の燃料にな る
おわり