コントリビュートで沢山の人が救われる。mattn氏が語る、好循環を実現するアウトプット活動の仕組み

2024年8月6日

mattn

大学卒業後、ソフトウェアハウスやSIerなどでソフトウェア開発に携わる。vi派生のテキストエディタVimの日本語化やプラグイン、Go言語などでOSS(オープンソースソフトウェア)の開発・コミュニティ運営に参加し、2019年からGoogle Developers Expert。2021〜2023年 GitHub Stars。著書に『みんなのGo言語』(2016年、2019年に改訂2版、技術評論社、共著)、『Go 言語プログラミングエッセンス』(2023年、技術評論社、単著)がある。関西在住。

X:@mattn_jp

GitHub

前回はアウトプットのためのお題選びに際して、巷のエンジニアがよく選びがちな TODO アプリについてお話させていただきました。

いったん TODO アプリを開発するという方法をひとつ確立してしまえば、今後 UI ライブラリや ORM などデータベースライブラリ、HTTP クライアントなどを見付けた際に、いちからお題を検討することなく開発を始められなおかつTODO アプリの特性上、見けたライブラリ等を試すのにおおよそ必要な最低限の機能を実装できるというメリットがあることについても解説させていただきました。

今回は連載最終回。実際にやったことをブログに書いてアピールする方法についてです

一見、単なるまとめ作業のように見えるのですが、この最終工程にはとても大きな意味があり、今後の自らの開発体験をうまく運営していくことできるようになります。

アウトプットの定義をおさらい

狭義では、本などで知識を得る事を「インプット」、そしてブログを書くことが「アウトプット」などと表現されますが、本来「アウトプット」とはより総合的な活動を指しています。事前に情報収集を行い、テーマを決定し、必要であれば知識を習得、実際に成果物を作成して、その結果を SNS やブログとして残す、という一連の流れを総合的に「アウトプット活動」と呼びます

ですので「最近アウトプットできていない」という言葉には、こういった一連の「アウトプット活動」ができていないという意味が込められています。

ただ、本記事では、この一連の「アウトプット活動」の中の最終工程である、「何かの成果物をつくり出した際にそれを紹介すること」を「アウトプット」と称して解説していきたいと思います。

アウトプットのモチベーション

アウトプットにつながるモチベーションはいろいろありますそれを紹介すると良いでしょう。その際に気を付けなければならないのが、それをるに至ったモチベーションを紹介する事です。

  • ・探していたら良さそうなライブラリがあった
  • ・探していたけど良さそうな物が見つからなかったのでつくった
  • ・新しいプログラミング言語を見つけたので習得の為に勉強した
  • ・使っていたライブラリにバグを見つけたので直した

いずれも素晴らしい活動なので、アウトプットの際は紹介すると良いでしょう。

アウトプットの方法:新しい成果物を生み出す

例えば前回でご紹介した「新しいライブラリを見つけたので TODO アプリをつくって試してみた」というメソッドあれば、それを伝えるべきです。

新しいライブラリを探しているような人達は、おそらく過去に一度他のライブラリを使っていた人達です。以前使っていたライブラリと比べて今回使ったライブラリはどうだったのか、どのようなメリットがあり、またどのようなデメリットがありそうか、という点が述べられていると良いと思います。

以下のような情報公開がこれに相当します。
例:Go と prisma と lit-html と ky で作るモダンな TODO アプリ

このような情報を公開することで、今後そのライブラリを試したい人、以前まで使っていたライブラリを使っていた人、双方にメッセージを送る事ができます。

「私も今度これ試してみようかな」「同じライブラリで困っていた」などといった感想をもってくれるかもしれません。

▲「OSSを探す」というアクションを起点にできる3種類のアウトプットをまとめたフロー図

アウトプットの方法:改善提案を送る

次に良いライブラリを見けて使ってみたはいいけど、TODO アプリをつくるまでに至らなかったパターンです。

まったく使い物にならないケースもありますし、あとちょっと改善すればとても良いのにと思うケースもあります。後者であればパッチを書くこともできます。

パッチといっても小難しいイメージがありますが、実際はそんなことはありません。

  • ・変数名の typo があったので修正した
  • ・ドキュメントに不備があったので修正した
  • ・特定の条件でバグがあったので直した

このように自分でできることをするだけです。みなさんが修正したことによる恩恵はみなさんひとりだけの物ではありません。そのソフトウェアを使う全員に恩恵があります。これが OSS の良い所です。もしかしたら「私には直せないけど、画面に表示されているメッセージの誤記が以前から気になって仕方なかった。ありがとう」と思っている人もいるかもしれません。

OSS にパッチを送る活動は、一見すると地味ではありますが、効果はその数倍あります。OSS を使っているユーザは全世界に沢山いますが、OSS の修正履歴を日々確認しているユーザは稀です。貴方が改善した内容が取り入れられたことを知る人は殆どいません。

ぜひブログや SNS 等を通じて多くの人に知らせてあげて下さい。

以前、「そのソフトウェアを試したけれどバグがあったから使うのをやめたという人たちその声が届けば、またユーザ数が増えるかもしれません。

開発者のみなさんであれば、OSS を業務で使っているかもしれません。開発しているシステムが利用するライブラリは、可能な限り長期間、安定していてしいものです。ただ残念ながら OSS はユーザが居なくなると開発が継続されなくなります。OSS は、ユーザ数が安定しているからこそ、開発が継続され、第三者からのパッチが送られてくる、という上手い循環によって成り立っています。

▲OSSが成長する好循環

みなさんが愛しているソフトウェアが今後、可能な限り廃れないようにするためには、ユーザを増やすことが大事です。そしてユーザを増やすためにはソフトウェアの品質を高めることが大事です。そのためにユーザーとしてできることは、パッチを送ることです。誤記やバグを見つけたら、なるべくパッチを送る、パッチを書くのが難しいならせめて作者に伝える、という行動を起こすのが大事だと思っています。

宣伝は大事

「じゃ私が開発したソフトウェアのユーザが少ないのは私のソフトウェアの品質が悪いということ?」と感じてしまうかもしれません。

品質が悪いわけではありません。単純に「誰の目にもまってない」からなのです。本来あぶり出されるべきバグもまだ見つかっていないのです。誰かの目にまらないと、まず評価もされません。いくら良いソフトウェアを開発しても誰かに評価されないとユーザ数は増えません。そのためには宣伝が必要になります。

そのソフトウェアがいかに素晴らしいのか、安定しているのか、そういった内容をみんなに見える形にすることが大事なのです。

そのための SNS であり、そのためのブログなのです。よく宣伝に関してあまり良いイメージを持っていない人がいます。宣伝により得たユーザー数が実力ではないと思う人達のことです。

前述の様に、みなさんが開発したソフトウェアのユーザ数が少ないのは、誰もまだ評価していないからなのです既にユーザ数の多いソフトウェアを開発されておられるみなさまことではありません)。

宣伝が上手くいかず諦めてしまう人達もいます。そういった人達はおおよそ間違った宣伝方法をしてしまっています。

宣伝する場所が間違っている

とりあえず X/Twitter で宣伝しておけば、興味ある人が拾ってくれるはず。そんな風に思ってないでしょうか。宣伝は、その情報を欲している人達がいる場所で行わないと効果がないのです。

一部のインプレッションのあるユーザはそれでも構いません。しかしまだ誰にも注目されていないユーザが、なるべく多くの人達に見て貰うには、コツが必要です。

皆さんは Reddit (レディット)をご存知でしょうか。Reddit は英語圏で活発なソーシャルニュースサイトです。各カテゴリが Sub Reddit (サブレディット)という単位のコミュニティを構成しています。例えば Vim に関する Sub Reddit は https://reddit.com/r/vim ですし、Go 言語に関する Sub Reddit は https://reddit.com/r/golang です。

この Sub Reddit を見ているユーザは、Vim や Go に興味がある人達だという事です。Vim や Go に興味があり X/Twitter にいる人達は、X/Twitter で話題になった物しか見ません。一方で Sub Reddit では Vim や Go に興味のあるユーザは必ず1回はリンクをクリックしてくれます。なぜなら、Vim や Go の話題を見るために Sub Reddit に来ているからです。

Sub Reddit で宣伝する場合、多くは外国人ユーザーからの反応があります。ですので GitHub リポジトリに置く README.md は英語で書くべきです。おそらく issue も英語で問い合わせが来ます。

アウトプット活動は誰のため?

さて、これまで「アウトプット活動」についてお話してきました。「アウトプット活動」とは纏めると以下のような活動であることを念頭に置いてください。

  • ・お題を探す活動をすること
  • ・お題を選定しテーマを決めること
  • ・SNS やブログで成果を残すこと

これらの活動に意味はあるのでしょうか。そしてこれは誰のためにやっているのでしょうか。

活動そのものは、実施しているみなさんのスキルアップのためですが、活動により副次効果が生まれます。

みなさんが自分のためと思ってやっていたアウトプット活動により、ほかの誰かが知識を得て、または励まされ、同様のアウトプット活動を始めるといったケースもあります。

筆者もこれまで「mattn さんのアレを見て私もやってみた」といった意見を沢山頂きました。みなさんが僕の記事に感化されると同時に、それで起こした行動によりまた僕が感化されているのです。

そしてもしアウトプットとして何かの成果物があるのならば、それはとても素晴らしいことです。ご自分だけでなくみなさんのコントリビュートによって沢山の人が救われます。僕はこの仕組みがとても好きです。今もなお OSS 活動やアウトプット活動を続けている理由のひとつがこれなのです

おわりに

計4回にわたり、アウトプット活動にまつわる筆者の体験談やセオリー等をお話させて頂きました。みなさんの今後のアウトプット活動に少しでもお役に立てられるなら嬉しい限りです。アウトプット活動には年齢制限もなければ、置かれている立場により制約される物もありません。楽しそうと感じたなら誰もが始めることができるのです。

そして本連載の中で何度も繰り返しお伝えしてきましたが、これはあくまで筆者が見けた筆者なりのアウトプット手法です。みなさんにはみなさんなりのベストな方法があるはずです。ぜひみなさんなりのアウトプット手法を見けて、よりよいアウトプットライフをお過ごしください。

関連記事

人気記事

  • コピーしました

RSS
RSS