Refactoring English:3か月目
ひとことで言うと
Kickstarterで初めて資金を集めた
ハイライト
- 初めてKickstarterプロジェクトを立ち上げ、Kickstarterは驚くほど苦労が少ないことがわかりました。
- Kickstarterの目標額は何とか達成できそうですが、残り3分の2を集めるには工夫が必要です。
- 4x ARM CPU/24 GBのクラウドサーバーで動かす、楽しいサービスのアイデアを募集しています。
目標の達成度
毎月の初めに、その月に達成したいことを宣言しています。目標に対してどこまでできたかを振り返ります。
Refactoring Englishのブログ執筆に関する章を完成させる
- 結果:代わりにコミットメッセージの章に集中することにし、予定どおり完成させました。
- 評価:A
ブログに関する章を書いている途中で、コミットメッセージについて書けることに気づきました。Hacker Newsや/r/programming、Lobstersのような開発者向けソーシャルネットワークで共有するには、こちらのほうがよい章になりそうでした。
残念ながら、この記事はHacker Newsでは完全に外し、/r/programmingやLobstersでもあまり広がりませんでした。がっかりはしましたが、そうなる可能性があることはわかっていました。
Refactoring Englishの予約販売を始める
- 結果:Kickstarterで予約販売を開始しました。
- 評価:A
Kickstarter:うれしい驚き
Refactoring Englishの予約販売をKickstarterで行うことにしました。Kickstarterを使うのは初めてだったので、ひどい体験になる覚悟をしていました。
私が「クリエイタープラットフォーム」を使うときにありがちな経験は、プロジェクトを助けるよりも、アップセルで私からできるだけお金を搾り取ろうとしてくるというものです。
初めてKickstarterでプロジェクトを立ち上げましたが、驚くほど苦労が少なかったと報告できます。何かにお金を払うよう求められることは一度もありませんでした。Kickstarterは、アップセルでプロジェクトの作り手から搾り取るのではなく、プロジェクトが資金を集めるのを助けることで利益を得られるよう、インセンティブをうまく設計しています。
結局のところ、必要な書類をすべて記入し、銀行口座の情報を確認し、一般公開用の文章、動画、画像を作成するために、Kickstarterでの作業に6〜8時間かかりました。
このプロジェクトにはKickstarterの仕組みが合っていると思います。通常の予約販売をしていたら、3か月たっても顧客が十分に集まらない場合、気まずい立場になっていたでしょう。3か月分の作業をしたあとでも、全員に返金しなければなりません。Kickstarterが、支援者に対して「この取り組みの過程にお金を払う」のだと明確に伝えている点を評価しています。作り手は成果を届けるために最大限努力すべきですが、支援者は、物事がうまくいかない可能性も受け入れます。
目標額を設定し、達成できなければ全額不成立にできる点も気に入っています。目標額は5,000ドルにしました。野心的ですが達成可能だと感じましたし、本を出版したあとにさらに1万〜2万ドルを得られるかもしれない、と期待できる程度には高い金額です。目標に届かず、何も得られなかったらがっかりするでしょう。でも、このアイデアについて具体的な「ノー」を受け取れたのだと思えば、慰めにはなります。
Kickstarterのスパム業者を除けば……
Kickstarterの唯一の欠点はスパムです。Kickstarterを監視しているスパム業者が大量にいるに違いありません。キャンペーンの成功を手助けするという、いかにも怪しい方法を持ちかけるメールが、1日に3通ほど新しく届きます。最初は、興味を持った顧客を下手に装って会話を始め、そこから私が料金を払って助けてもらうべき「友人」の話へと誘導していきます。

スパム業者は、商品のことを無害そうに、興味があるふりをしたメッセージから始めます。

……そして会話を、有料でKickstarterの宣伝をしてくれる「友人」の話へと移していきます。
資金集め:ここまでの状況
本日時点で、私のKickstarterプロジェクトには1,585ドルの支援が集まっており、目標額の31%に達しています。

私のKickstarterプロジェクトは資金募集期間の24%を終えた時点で、収益目標の31%に達しました。
金曜日にプロジェクトを開始し、月末に終了するので、資金募集期間25日のうち6日目にあたります(24%完了)。
期間の24%しか経過していないのに目標の31%に達しているのは順調に聞こえます。しかし問題は、すでに手持ちの最高のカードを切ってしまったことです。本のメーリングリスト、ソーシャルメディア、このブログの下部にある小さな自己広告でKickstarterを告知しました。
では、ほかに何ができるでしょうか。
残っているカードは2枚思いつきます。
1枚目は、Hacker Newsのトップページに載ることです。普通は難しいことですが、私はその専門家のはずです。少なくとも1回、できれば月末までに2〜3回は載せられる自信があります。記事のアイデアはいくつかあります。いわば「バント」のような記事です。1位に到達するホームラン記事にはならないでしょうが、5時間ちょっとで書けて、Hacker Newsの10〜20位あたりに入る可能性はあります。
2つ目のアイデアは、社外向けの文章発信に多額の投資をしている企業に連絡し、プロジェクトのスポンサーに関心がないか尋ねることです。企業スポンサーがついた本は見たことがないので、悪いアイデアかもしれません。でも、うまくいく可能性はありそうです。
サイドプロジェクト:趣味のクラウドサーバーで何を動かすべきか?
最近、無料の4x ARM CPU/24 GB RAMのOracle Cloudサーバーを手に入れました。問題は、このかなり優秀なサーバーが、ほぼ99%アイドル状態だということです。

かわいそうなサーバーは、あまりにも退屈しています。
これまでにインストールしたのは次のものです。
- Woodpecker CI。Codebergでホストしているプロジェクトに便利です。Codebergをサポートしている商用CIはまだないからです。
- 検閲を回避する人々を助けるためのSnowflakeプロキシ
このサーバーで動かせそうな、楽しいもののアイデアを募集しています。条件は次のとおりです。
- 時間があるときに運用を楽しめるサービスであってほしい一方、時間を要求する義務にはなってほしくありません。
- フォーラムやチャットルームのようなものをモデレーションするために時間を使いたくはありません。
- 自分が支持したい活動を支援するボランティアコンピューティングでも構いません。
- Internet Archiveにウェブサイトを保存するArchiveTeam Warriorを動かしたかったのですが、ARMには対応していません。
- ボランティアコンピューティングなら、プロジェクトに計算資源を提供したときにSETI@homeが動く様子を眺めるだけでも楽しかったように、運用する側も楽しめるものがいいです。
- オープンソースであってほしいです。
- Oracleにサーバーを消去されても、誰にも影響が出ないものがいいです。
- つまり、私のサーバーに保存しているデータを誰かが失うようなものは避けたいです。
- 暗号資産のマイニングはしたくありません。
endlessh-goは、私が探しているもののよい例です。これを追加する予定です。
このサーバーで動かすと楽しそうなプロジェクトのアイデアがあれば、コメントで教えるか、メールをください。
興味深かったリンク
- Simon Tathamによる「コミットメッセージを書く」
- 自分の記事を書く前に、コミットメッセージのプラクティスについて書かれたブログ記事をたくさん読みました。その中でこれがいちばんよいと思いました。
- 実際には、ほかの記事はすべてひどく、Tathamの記事だけがよかった、と言ったほうが正確です。
- ほかの記事はどれも、重要ではないスタイル上の考慮事項(たとえば「タイトルは必ず命令形にする」)に注目するか、理由を説明せずに規則を押しつけています。
- URLとサイトのデザインから、著者は大学生だと思っていたので、コミットメッセージについてこれほど多くの知恵を持っていることに驚きました。さらに調べてみると、著者はPuTTY SSHクライアントの作者であり、友人のサーバーですべてをホストするのが好きなだけだとわかりました。
- 自分の記事を書く前に、コミットメッセージのプラクティスについて書かれたブログ記事をたくさん読みました。その中でこれがいちばんよいと思いました。
- Andrew Kelleyによる「ポインターなしのプログラミング」
- Zigの創設者であるAndrew Kelleyは、「ポインターなしのプログラミング」と呼ぶスタイルを作ることで、プログラミングスキルが伸び悩む段階から抜け出したと語っています。
- Kelleyのスタイルでは、アプリケーションの状態を、必要なさまざまなデータ型を含む単一の構造体で表現します。ただし、どの型もポインターを含むことはできません。最上位の構造体には配列やハッシュマップを含められますが、そこに格納するオブジェクトにはポインターを持たせられません。
- 彼のgroovebasinプロジェクトがこの例です。
- 文字列の格納を例に挙げています。文字列の配列は、ポインターへのポインターになってしまうため格納できません。そこで、すべての文字列を1つの配列にまとめるカスタム構造体を作り、その配列へのインデックスのリストを管理します。
- この手法の利点:
- 状態のシリアライズとデシリアライズが非常に簡単です。シリアライズは、構造体のバイト列をファイルやネットワークソケットに書き出すだけです。デシリアライズは、ファイル全体を読み込んで元の構造体に対応付けるだけです。
- 環境をまたいだ状態の共有が簡単になります(たとえば、ZigのバックエンドとWASMのフロントエンドの間)。
- メモリ管理も簡単になります。最上位の構造体の各フィールドごとにメモリを解放できるからです。子オブジェクトのメモリを解放するために、リストをたどったり、ツリー構造を巡回したりする必要がありません。
- この手法には驚かされました。というのも、コンパイラーのサポートがないだけで、インデックスは本質的にポインターのように感じられるからです。もし見知らぬ人からこの提案を聞いたら退けていたでしょう。でもAndrew Kelleyは賢いと思っているので、試してみたくなります。
- Hemant Kumarによる「古い第7世代Kindle Paperwhiteを復活させる」
- eBayで古い電子書籍リーダーを30ドルで買って、自分のダッシュボードを作りたいと強く思っています。でも、何を表示するかのアイデアがありません。
- Kit Foxによる「体育の授業でカップを積んだことがあるなら、私の父を恨んでくれ」
- ある晩、午前2時に目が覚めて眠れなくなり、この記事を読んだり、カップ積みの動画を見たりして2時間ほど過ごしました。
まとめ
できたこと
- KickstarterでRefactoring Englishの予約販売を開始
- 「役に立つコミットメッセージの書き方」を公開
- VS Code用のZig設定を公開し、Zig開発用flakeを作成
- Never Pay The First Billについてのメモを公開
学んだこと
- Kickstarterでの資金集めは、驚くほど苦労が少ない。
来月の目標
- Refactoring EnglishでKickstarterの目標額5,000ドルを達成する。
- Refactoring Englishのブログに関する章を公開する。
- 3月末までにHacker Newsのトップページに2回載る。
助けてほしいこと
- Kickstarterプロジェクトについて提案があり、スパムボットでないなら、メールをください。
記事をランダムに読む