2024年9月30日
C++ライブラリアン
C++日本語リファレンスサイトcpprefjpを運営し、C++の最新情報を日本語で発信している。株式会社Preferred Networksに所属し、スーパーコンピュータのソフトウェア開発に携わっている。
著書として、『C++テンプレートテクニック』(SBクリエイティブ)、『C++ポケットリファレンス』(技術評論社)、『プログラミングの魔導書』(ロングゲート)。
X: @cpp_akira
GitHub: faithandbrave
こんにちは。プログラミング言語C++に関する日本語情報の発信をしている高橋 晶です。
私は長年に渡って、おもにプログラミング言語C++に関する最新情報を、日本語で発信しています。プログラミングまたはソフトウェア開発の情報発信といえば、いまではさまざまなやり方があります。
これらの情報発信は多くの場合、無償のボランティア活動として行われます (本と記事寄稿を除いて)。
私自身も長年の間、完全に無報酬で情報発信を続けてきましたが、2023年からはGitHub SponsorsとOpen Collectiveを使ってスポンサーからお金をいただいています。
今回のコラムでは、情報発信でお金を得ることについての、私の取り組みを共有させていただこうと思います。
私が情報発信の「価値」に気づいたのは、プログラミングの勉強会に何回か参加したころでした。
参加費が1人1,000円の勉強会で、合計しても会場費くらいにしかならないのに、登壇する発表者の方々はすごく有用な技術を私たちに教えてくれました。そのときに私が思ったのは、「無報酬な発表者の方々にこんなに役立つ技術を教えてもらっていいのだろうか? 私はなにも返せてないのに」ということでした。
私は勉強会で得た技術で仕事をしてお給料を稼ぎ、会社はその仕事によって成長していきますが、発表者の方々は報酬を得ていないのです。そして私が次に気づいたのは、インターネット上にも技術情報は溢れていて、それらのほとんどは無料で提供され、広告もなかったということです。
それらのことに気づいてから、私は恩返しとして、私にできる範囲での情報発信をブログや勉強会での発表でやっていくことにしました。そうした善意と恩返しによって広がっていく情報が、とても美しいものだと感じたのです。
情報発信をはじめて数年が経ち、情報発信には2種類の方針があると気づきました。ひとつは、自分のためのメモ書き、もうひとつは他者のための意思をもった発信です。
自分のためのメモ書きは、たとえばQiitaやZennなどの多くの記事がそれにあたると思います。自分が得た経験と知識を、将来の自分のために残しておき、それを公開することでほかの人の役にも立てたらうれしい、といったようなものですね。
他者のための発信は、UbuntuやPythonのドキュメント翻訳だったり、RubyやMessagePackといったオープンソースプロジェクトで、個人の趣味を超えて社会的ミッションを達成するために開発をしている、といったようなものです。
私が取り組んでいる情報発信は、C++の最新情報を提供する膨大なWebサイトをつくるというもので、上記の2種類でいうと、他者のための発信になります。
その活動は「新しいことを学べて楽しかった」という個人の趣味を大きく超えています。何万人ものユーザーのために正確で役立つ最新の技術情報を届けるというのは、生活に大きな影響がでるほど大きな作業が必要になるのでとても大変です。生活に影響がでる作業が必要になるということは、ときにパートナーや友人と過ごす時間を削ることも必要になるということです。
そのような作業は、無報酬で行うべきではない、と私は思います。
仕事以外の余暇の時間をどう使うかは個人の自由ですので、趣味や旅行、パートナーや友人で過ごす時間の比重が増えると、情報発信に当てられる時間というのは少なくなります。
報酬を得ていない作業は、やるもやらないも自由ですので、本来は責任をもって作業をする必要などないのです。
それは世界的なオープンソース・ソフトウェアであっても同様です。2014年に発生した「Heartbleed (心臓からの出血)問題」では、OpenSSLの脆弱性によって世界中が困ることになりました。その後、OpenSSLは世界中が使っているセキュリティのソフトウェアであるにも関わらず、作者がじつはほとんど報酬を受け取っていなかったことが判明しました。
事件発生後、GoogleやMicrosoftなどがOpenSSLの作者に慌てて寄付金を渡しましたが、そういった社会的に役立つソフトウェアや情報が無報酬のままだと、個人の生活が優先されてしまってメンテナンスされない可能性がある、ということを世界中が痛感することになったのです。
つまり、持続的な情報発信、持続的なオープンソースの開発のためには、お金を受け取ることが大事なのです。
お金を受け取ることで、作者は報酬に報いるために責任をもって情報発信をしないといけませんし、お金を渡すスポンサーは情報発信を止めないように作者に責任を求められるようになります。
お金も払っていないし作業としての貢献もしてないのに「責任をもって作業してほしい」とは誰も求めることができませんが、お金を払えば責任をもって作業することを求めてもよいのです。
私の情報発信はおもにGitHub PagesのWebサイトで行っているため、GitHubに関連するスポンサーシップの仕組みを使用できます。
GitHub Sponsorsは、GitHubユーザーに対してGitHubユーザーがスポンサーになる仕組みです。これはStar数などの制限なく誰でも利用できます。手数料はかかりますが、日本の銀行口座を指定してかんたんにスポンサーからお金を受け取ることができます。
Open Collectiveは、指定したGitHubリポジトリがStar数300を超える場合に使用できるスポンサーシップの仕組みです。GitHubユーザーでなくても、匿名でもスポンサーとして作者にお金を払うことができるサービスとなっています。Open Collectiveは資金の透明性にも取り組んでおり、資金がいまどれくらいあるのか、どのように使われたのかを追跡できるようになっています。
会社員の方は給料以外の報酬を得ることに抵抗があるかもしれません。副業禁止の職場である場合は仕方ないかもしれませんが、そうでない場合はこれも成長だと思ってチャレンジしてみてほしいです。確定申告をサポートするサービスは近年とても充実していますので、それほどむずかしい作業は必要にはなりませんし、お金の知識や経験を積むことはその後の人生にきっと役立ちます。
私は報酬の受け取り方としては、GitHub Sponsorsを使って個人で報酬を受け取り、Open Collectiveではグループのみんなで一括して報酬を受け取っています。Open Collectiveで受け取ったスポンサーからのお金は、GitHubリポジトリでの貢献度に応じてコントリビューターの方々に分配しています。
残念ながら、簡単にお金を分配できる仕組みを見つけられませんでしたので、自分たちでつくりました。
まずは、貢献度の計算です。GitHubリポジトリでは、コントリビューターごとの貢献度として、コミット数や書いた行数くらいは取得できます。しかし、コミットには大きいコミットをする人もいれば、小さいコミットをたくさんする人もいます。1行でも難易度の高い貢献もあれば、スクリプトでの一括置換のように行数が多くても実質的な作業はそこまで大きくない場合もあります。
コントリビューターたちと議論し、コミット数や行数では納得感のある貢献度の計算ができないことがわかったため、作業ごとにポイントをつけて、1年間の全コミットを調べて手動でポイントを割り振っていくことにしました。
ポイントはたとえば、誤字の修正は1ポイント、軽微な修正は2ポイント、記事を1本書いたら20ポイント、のような感じです。誤字があることはWebサイトの価値を大きく下げる事象ではないことや、軽微な修正はlintツールなどで大量に稼げてしまうことも考慮してポイントのバランスをとっています。
そうして1年分(前年12月からその年の11月まで)の貢献ポイントを集計して、いまある資金のうち、だれに何%を支払うかの表をスクリプトで生成します。期間が11月までなのは、確定申告のために年内に分配を済ませてしまいたいからです。
貢献ポイントと報酬の表ができたら、グループのメンバーにそれを提示し、報酬の受け取りを辞退する方と、報酬を受け取る方を募ります。
グループメンバー全員の口座情報は知らないため、こちらから一方的に報酬を支払うことはできません。そのため期限内に「報酬を受け取ります」と宣言されない方には分配はしていません。
報酬を受け取る方と比率が決まったら、最後に分配です。分配はOpen Collectiveから直接グループメンバーの銀行口座かPayPalに支払うことができますが、その場合、振り込み手数料が個別にかかってしまい、アメリカから日本への送金であるために少額の場合には報酬よりも手数料の方が高くなってしまうことがあります。
そのため、一旦管理者の銀行口座に全額を振り込んだあと、日本の銀行口座から、グループメンバーの銀行口座に振り込む形式をとりました。国内同士の送金であれば振り込み手数料は安く済みます。
管理者の銀行口座は、私の個人事業主としての「屋号付き口座」というものにしてあります。任意団体(町内会のような法人格のない団体))であるため専用口座を作る選択肢もありますが、詐欺を防止するために口座開設の審査がそれなりに厳しいのと(私のグループは審査に落ちました)、個人と団体それぞれで確定申告が必要になるのがちょっと面倒に感じました。Googleフォームでグループメンバーに振り込み先を提出してもらい、あとは銀行で振り込みをして完了になります。
報酬を分配する仕組みをつくるのはそれなりに労力が必要です。
オープンソースやグループのWebサイトに貢献するモチベーションというのは人それぞれですが、報酬を受け取ることがモチベーションにつながる方を支える仕組みとして、こうした収益化に取り組んでみてはいかがでしょうか。
貢献の持続性や、新たなコントリビューターを増やすためにも、こういった取り組みは大事だと思います。また、労力は提供できないけどお金なら貢献できる、という思いでスポンサーになってくださる方もいます。お金という形で貢献したい気持ちを受け入れる仕組みとしてもスポンサーシップを検討してみてはいかがでしょうか。
このほかにもお金以外の報酬として、Webサイトのロゴを使ったステッカーも用意しました。ロゴ画像に「2023 Contributor」のように併記したステッカーをつくって配布することで、お金としての報酬を辞退された方のモチベーションにも配慮しています。
私が実際に受け取っている報酬は現在のところ、GitHub Sponsorsで月々25,000円ほどになります(Open Collectiveの方は、2023年は報酬受け取りを辞退しました)。時給換算すると割にあってはいないと思いますが、月2.5万円というのは、生活に影響がでてくる金額になります。パートナーと少しいいレストランに行くことができますし、家賃にあてるとしたら少しいい部屋に住むこともできるでしょう。そうした生活に影響がでる金額を受け取れるようになると、作業の責任感が増すのを強く感じます。
持続的な情報発信のために私が取り組んでいるお金以外のことについても話しておきましょう。
私の情報発信は、最初の数年は個人での活動がメインでした。個人でブログを書き、個人で勉強会を開催していました。
いまはGitHub Organizationの誰でも参加できるリポジトリでみんなで記事を書き、会社のメンバーに協力してもらって勉強会を開催し、数人の仲間と一緒に本を執筆しています。
こういった個人の活動からグループの活動へのシフトというのは、たとえ自分が死んだとしても情報発信が続いていってほしいという思いが根底にあります。
個人での情報発信というのは個人の体調に依存しているために、ある意味で脆弱なのです。また、後進を育てるためにも、他者との共同作業、コラボレーションというのは必要になってきます。他者といっしょに作業することで、自分も関わった人たちも成長していくことができます。
今回は、「情報発信とお金」をテーマに、無報酬で作業されていることが多い、技術情報の発信やオープンソース開発での、お金に関する考え方や取り組みを紹介させていただきました。
他者に役立つ情報発信やオープンソースの開発をされている方が、当たり前に報酬を受け取ることができる社会になっていけるといいですね。そのためには、この記事のような知見を共有し、多くの事例や仕組みを作っていくことが大事なのだと思います。また、企業の方にも情報発信やオープンソースの価値をより深く理解いただき、報酬がない活動は持続性が低いという危機感をもつとともに、報酬の支払いとそのための予算確保を推進していっていただけたら幸いです。
関連記事
人気記事