Refactoring English:3ヶ月目
原文は Michael Lynch により に公開されました。 このブログを購読する
一言でまとめると
初めてKickstarterで資金調達に挑戦しました
ハイライト
- 初めてのKickstarterプロジェクトを立ち上げましたが、Kickstarterは驚くほど手軽でした。
- Kickstarterの目標達成に向けてまずまず順調ですが、残り3分の2を集めるには工夫が必要です。
- 4コアARM CPU/24GBメモリのクラウドサーバーで動かす、面白いサービスのアイデアを募集しています。
目標の自己評価
毎月月初に、その月に達成したいことを宣言しています。ここでは、その目標に対してどれだけ達成できたかを振り返ります。
『Refactoring English』のブログ執筆の章を完成させる
- 結果:ブログの章の代わりにコミットメッセージの章に集中することにし、期限通りに完成させました。
- 評価:A
ブログの章を書き進めている途中で、コミットメッセージについて書けることに気づきました。Hacker Newsや/r/programming、Lobstersといった開発者向けのソーシャルメディアでシェアするのに適した章になると考えたのです。
残念ながら、その記事はHacker Newsではまったく注目されず、/r/programmingやLobstersでもあまり反応がありませんでした。がっかりしましたが、こうなる可能性もあるとは思っていました。
『Refactoring English』の予約販売を開始する
- 結果:Kickstarterで予約販売を開始しました
- 評価:A
Kickstarter:嬉しい誤算
『Refactoring English』の予約販売はKickstarterで行うことにしました。Kickstarterを使うのは初めてで、面倒なことになるだろうと覚悟していました。
これまで「クリエイター向けプラットフォーム」でよく経験してきたのは、プロジェクトの成功を支援してくれるどころか、アップセルで搾り取ろうとしてくるパターンでした。
嬉しいことに、初めてのKickstarterプロジェクトの立ち上げは驚くほどスムーズでした。一度も課金を求められることはありませんでした。クリエイターからアップセルで搾り取るのではなく、プロジェクトが資金を集めるのを手伝うことで自らも収益を得るという形で、インセンティブがうまく設計されていると感じました。
書類の記入、銀行情報の確認、公開用のテキストや動画、画像の作成まで含めて、Kickstarterでの作業にかかった時間は合計で6〜8時間ほどでした。
このプロジェクトにはKickstarterのモデルが合っていると感じています。通常の予約販売にしていたら、3ヶ月経っても十分な顧客が集まらなかった場合に気まずい立場に立たされることになります。3ヶ月分の作業をしたにもかかわらず、全員に返金しなければならなくなるからです。Kickstarterでは、支援者に対して「その過程にお金を払っているのだ」と明確に伝えている点が気に入っています。クリエイターは最善を尽くして届けるべきですが、うまくいかない可能性もあることを支援者が受け入れているのです。
目標金額を設定してオール・オア・ナッシングにできる点も気に入っています。目標を5,000ドルに設定したのは、野心的でありながら達成可能で、かつ出版後にさらに1万〜2万ドルを稼げる希望が持てる金額だと感じたからです。もし目標に届かず1円も得られなくても、がっかりはしますが、このアイデアに対して明確な「ノー」を突きつけられたのだと納得できます。
Kickstarterのスパムを除けば…
Kickstarterの唯一の欠点はスパムです。大量のスパマーがKickstarterを監視しているようで、キャンペーンの成功を手助けするという胡散臭い営業メールが1日に3通ほど届きます。彼らはまず興味を持った顧客のふりをして(しかも下手な演技で)話しかけてきて、やがて「手伝ってくれる友人」にお金を払うよう誘導してくるのです。

スパマーはまず、プロダクトに興味があるふりをして何気ないメッセージを送ってきます。

……そして、有料でKickstarterの宣伝サービスを提供する「友人」の話へと会話をすり替えます。
資金調達:今のところの状況
本日時点で、Kickstarterプロジェクトへの支援総額は1,585ドルで、目標の31%に達しています。

私のKickstarterプロジェクトの資金調達期間の24%が経過した時点で、目標金額の31%に到達しました。
プロジェクトは金曜日に開始し、月末に終了するので、資金調達期間25日間のうち6日目(24%経過)にあたります。
期間の24%で目標の31%というと順調に聞こえますが、問題はすでに手持ちの最強のカードを切ってしまったことです。Kickstarterについては、本のメーリングリストやSNS、そしてこのブログ下部の小さな自己宣伝枠ですでに告知しました。
では、他に何ができるでしょうか?
残りの手札は2つあると考えています。
1つ目はHacker Newsのフロントページに載ることです。普段は難しいことですが、私はその道の専門家を自称している立場です。月末までに少なくとも1回、できれば2〜3回は載せられる自信があります。「バント」のような投稿アイデアがいくつかあります。1位を取るようなホームラン級の投稿にはなりませんが、5時間ほどで書いて、Hacker Newsの10〜20位あたりを狙えるはずです。
2つ目は、対外的な発信に力を入れている企業に連絡を取り、プロジェクトのスポンサーにならないか打診することです。企業スポンサーがついた本など見たことがないので、もしかすると悪いアイデアかもしれませんが、うまくいく可能性もあると思っています。
サイドプロジェクト:趣味のクラウドサーバーで何を動かすべきか?
最近、4コアARM CPU/24GB RAMのOracle Cloudサーバーを無料で手に入れました。問題は、このなかなか高性能なサーバーが約99%もアイドル状態だということです。

かわいそうなサーバーはすっかり暇を持て余しています。
今のところ、インストールしたのは以下のものです。
- Woodpecker CI。Codebergでホストしているプロジェクトに役立っています。というのも、まだ商用のCIがCodebergに対応していないからです
- 検閲の回避を支援するためのSnowflake proxy
サーバーで動かす面白いもののアイデアを募集しています。条件は以下の通りです。
- 時間があるときに運用するのが楽しいサービスであること。ただし、時間を強制されるような義務にはしたくありません。
- フォーラムやチャットルームのような、モデレーションに時間を取られるものはやりたくありません。
- 自分が共感する活動を支援するボランティア・コンピューティングでもかまいません。
- ArchiveTeam WarriorでウェブサイトをInternet Archiveにアーカイブしようと思いましたが、ARMには対応していないとのことでした。
- ボランティア・コンピューティングであれば、SETI@homeに計算資源を提供したときに、ただ実行画面を眺めているだけでも楽しかったように、運用者自身が楽しめるものがいいと思っています。
- オープンソースであること。
- Oracle側にサーバーを消されても誰にも影響が出ないこと。
- つまり、私のサーバーにデータを預けている誰かがデータを失うような事態は避けたいということです。
- 暗号通貨のマイニングはしたくありません。
endlessh-goは私が求めているものの良い例で、導入する予定です。
サーバーで動かす面白いプロジェクトのアイデアがあれば、コメントかメールで教えてください。
面白かったリンク
- 「Writing commit messages」 by Simon Tatham
- 自分の記事を書く前に、コミットメッセージの作法について多くのブログ投稿を読みましたが、これが一番良いと思いました。
- 正直に言うと、他の記事はすべて出来が悪く、Tathamの記事だけが良かったと言う方が正確です。
- 他の記事はどれも、どうでもいいスタイルの話(例:「タイトルは必ず命令形でなければならない」)に終始するか、理由も説明せずに決まりを押し付けてくるものばかりでした。
- URLやサイトのデザインから、最初は大学生が書いたのかと思い、コミットメッセージについてこれほど深い知見を持っていることに驚きました。調べてみると、著者はPuTTY SSHクライアントの作者で、ただ友人のサーバーに何でもホストするのが好きなだけだとわかりました。
- 自分の記事を書く前に、コミットメッセージの作法について多くのブログ投稿を読みましたが、これが一番良いと思いました。
- 「Programming without Pointers」 by Andrew Kelley
- Zigの創設者であるAndrew Kelleyは、「programming without pointers(ポインタを使わないプログラミング)」と呼ぶスタイルを編み出すことで、プログラミングスキルの停滞を抜け出したと語っています。
- Kelleyのスタイルは、アプリの状態を一つのstructで表現し、その中にアプリが必要とする様々なデータ型を格納しますが、どの型もポインタを持つことはできません。トップレベルのstructは配列やハッシュマップを持つことはできますが、それらが格納するオブジェクトはポインタを持てません。
- 彼のgroovebasinプロジェクトのこの例がその一例です。
- 文字列の格納を例に挙げています。文字列の配列を格納することはできません。なぜなら、それはポインタのポインタになってしまうからです。代わりに、すべての文字列を一つの配列に集約する独自の構造を作り、その配列へのインデックスのリストを維持するのです。
- この手法の利点:
- 状態のシリアライズとデシリアライズが極めて簡単になります。シリアライズはstructのバイト列をそのままファイルやネットワークソケットにダンプするだけです。デシリアライズはファイル全体を読み込んで元のstructにマッピングし直すだけです。
- 異なる環境間で状態を共有するのが簡単になります(例:ZigのバックエンドとWASMのフロントエンド)。
- メモリ管理もシンプルになります。トップレベルのstructの各フィールドごとにメモリを解放すればよく、リストを反復したりツリー構造をたどったりして子オブジェクトのメモリを解放する必要がありません。
- この手法は、インデックスが本質的にコンパイラのサポートなしのポインタのように感じられるため、驚きがあります。もしこれをどこかの誰かが提案したのなら、私は一笑に付すでしょう。ただ、Andrew Kelleyは聡明な人物だと思っているので、試してみたいと思っています。
- 「Reviving an Old Kindle Paperwhite 7th Gen」 by Hemant Kumar
- eBayで30ドルの古い電子書籍リーダーを買って自作のダッシュボードを作りたいと切望していますが、何を表示すればいいのかアイデアがありません。
- 「If You Ever Stacked Cups In Gym Class, Blame My Dad」 by Kit Fox
- ある夜午前2時に目が覚めて眠れなくなり、この記事とカップスタッキングの動画を見るのに2時間ほど費やしました。
まとめ
何ができたか?
- Refactoring Englishの予約販売をKickstarterで開始しました
- 「How to Write Useful Commit Messages」を公開しました
- My Zig Configuration for VS Codeを公開し、Zig dev flakeを作成しました
- 『Never Pay The First Bill』の読書メモを公開しました
学んだこと
- Kickstarterでの資金調達は驚くほど手軽でした。
来月の目標
- Refactoring EnglishのKickstarterで5,000ドルの目標を達成する。
- Refactoring Englishのブログ執筆の章を公開する。
- 3月末までにHacker Newsのフロントページに2回載る。
お願い
- Kickstarterプロジェクトへの提案があれば、スパムボットでなければぜひメールをください。
記事をランダムに読む
コメント
ログインしてコメントする