クリアコードの理念は、フリーソフトウェアとビジネスの両立です。
クリアコードは2015年7月1日から10期目に入っています。クリアコードが設立当初から大事にしていることの1つにフリーソフトウェア(ユーザーが自由に使えるソフトウェア)があります。ただし、それを大事にするにあたって「継続できること」という制約をつけています。言い方を変えると、「お金を稼ぐ」ということです。フリーソフトウェアを大事にしているという響きだけ聞くと、お金度外視でひたすらフリーソフトウェアを大事にしているイメージを持つかもしれません。しかし、お金を稼がないと継続できないので会社は潰れます。それでは大事にすることができなくなります。
ということで、クリアコードはどうやってフリーソフトウェアを大事にすることとお金を稼ぐことを両立させようとしているかを整理します。
お金を稼ぐ方法
クリアコードが使っているお金を稼ぐ方法は次の通りです。
-
導入支援
-
カスタマイズ
-
サポート
-
受託開発
それぞれ簡単に説明します。
導入支援
導入支援とはフリーソフトウェアのインストール・設定を支援することの対価としてお金をもらう方法です。
Mozilla製品(FirefoxとThunderbird)でよくある方法です。他のフリーソフトウェアの導入支援をすることもありますが、Mozilla製品が一番多いです。
この方法は大まかにいうと次のような流れになります。
-
依頼者が実現したいことをよく聞く
-
聞いた内容を理解し整理する
-
どのようにしたら実現できるかを検討する
-
実現方法を提案する
-
導入する
導入支援の依頼者は対象ソフトウェア周辺に関する知識が不足しているためクリアコードに依頼します。そのため、クリアコードは自分たちが持っている知識を活かして、適切な実現方法を提案し、実際に依頼者が実現したい状態を達成することが大事になります。知識があっても、依頼者が実現したい状態と違う状態を達成してしまっては適切な支援ができたとは言えません。そのため、依頼者が実現したい内容を理解することは非常に重要です。
この流れの中でフリーソフトウェアを大事にする方法は次の通りです。できるだけこれらを実現するように依頼者と調整しながら進めます。
-
調査や実際の作業で得た知見を誰でも利用できる情報として公開
-
開発したツールをフリーソフトウェアとして公開
- 例:↑のリンクに書いています。
-
他の導入支援のために利用した・開発したフリーソフトウェアを利用
-
導入支援中に見つけた問題を報告・修正
フリーソフトウェアを大事にするということは「開発に参加する・寄付する」というイメージがあるかもしれません。しかし、それら以外にも、関連情報を公開したり、ソフトウェアを広めたり、困っているユーザーを助けることなども大事にすることです。そうすることで開発者たちの作業が減ることにつながるからです。
そのため、これらはどれもフリーソフトウェアを大事にすることにつながります。
フリーソフトウェアを大事にするとき、依頼者のことを忘れてはいけません。クリアコードがフリーソフトウェアを大事にする行動をすると、依頼者にとってもよい状態になることを大事にします。そうしないと、依頼者の満足度が下がって継続して一緒に仕事をできないからです。仕事にならないとお金を稼げません。
ここに挙げた方法では次のような観点で依頼者にとってもよい状態になると説明して理解を求めます。
-
調査や実際の作業で得た知見を誰でも利用できる情報として公開
- 他の導入支援のときにすでに公開していた情報を更新することができ、依頼者は更新された情報を無償で利用できます。(たとえば、Firefox/Thunderbirdのバージョンアップがあった場合など。)
-
開発したツールをフリーソフトウェアとして公開
- 他の導入支援のときにも利用できるようになり、その際に機能追加・問題修正した場合は依頼者は無償でその恩恵を受けられます。(たとえば、Firefox/Thunderbirdのバージョンアップに追従する作業など。)
-
他の導入支援のために利用した・開発したフリーソフトウェアを利用
- 作業時間を短縮でき、費用を少なくできます。
-
導入支援中に見つけた問題を報告・修正
- クリアコードが独自で調査・修正してパッチをメンテナンスするよりも、メンテナンスコストが下がるので、長い期間でみると費用を少なくできます。(導入して終わりではないので、長い期間をみるのは妥当なことです。)
カスタマイズ
カスタマイズとはフリーソフトウェアの設定変更、本体変更、既存のプラグインの変更、プラグインの新規作成などの作業の対価としてお金をもらう方法です。他のお金を稼ぐ方法である、導入支援、サポート、受託開発の一環として実施することが多いです。
依頼者固有の内容については公開しませんが、一般的に使えそうな知識やプログラムは、依頼者に説明して理解を得た上でできるだけ公開します。このときの方針は前述の導入支援のときと同様です。つまり、「クリアコードはこういうポリシーなのでこうしていいですよね?」ではなく、「依頼者にとってもメリットがあることなのでこうしていいですか?」というところを大事にするということです。
サポート
サポートとは運用中に発生した問題の調査、開発時の技術的問題の解決支援などの対価としてお金をもらう方法です。Webで検索すると「OSSサポートサービス」を提供している会社がいくつか見つかりますが、それらと同様のお金の稼ぎ方です。
Mozilla製品は導入支援後にそのままサポートを提供するケースが多いです。受託開発でシステムを構築した場合はそのシステムのサポートを提供することがあります。
一般ユーザーから直接問い合わせる形でのサポート(ヘルプデスクと呼ぶのでしょうか)は提供しておらず、情報システム部門の方経由、SIerさん経由、既存のサポートサービスのエスカレーション先としてサポートを提供します。
サポートは基本的にリモートから提供しています。つまり、直接依頼者のところにいって調べることはせず、情報を提供してもらい、それらを使って問題を解決します。ただし、「行ったほうが早い」ときは行きます。
リモートでのサポート提供ではどういった情報を提供してもらいたいかを適切に伝えることが重要になります。そうしないと闇雲に時間が過ぎていくからです。そうなると問題が発生している期間が長くなりますし、依頼者の負担も増えます。結果として、依頼者の満足度が下がり、サポートサービスの利用を打ち切るでしょう。
リモートで調査するというのはフリーソフトウェアの開発では普通のことなので、フリーソフトウェア開発で培った知見を活かします。どういう知見かというと、どういうときにこのケースが発生する可能性があり、それを確かめるためにはどういう情報を知ればよいか、また、その情報をいかに少ない負担で取得してもらうか、というのを考えるということです。そのために、状況を整理する、ソースから問題が発生する可能性のあるケースを洗い出す技術などが必要になります。具体例としていくつか過去の記事を挙げます。
-
デバッグで大事なこと: 必要な部分だけに集中:エラーメッセージをヒントにするやり方
-
デバッグ力: よく知らないプログラムの直し方:なにを試せばなにがかわるかを考えながら調べる方法
-
問題の原因調査のためのログ収集のセオリー:ログを調査に有効活用するときのポイント
サポートのときのフリーソフトウェアを大事にする方法は導入支援と同じですが、「導入支援中に見つけた問題を報告・修正」が多くなります。多くの場合、なにか問題があって問い合わせがきています。そのため、それを開発元に報告する機会も多くなる、ということです。
受託開発
受託開発は依頼者が欲しいソフトウェアを開発する対価としてお金をもらう方法です。契約方法は次のどちらかのパターンが多いです。
-
最初は請負契約で、お互いに信頼できることを確認できていて準委任契約の方が向いていそうな内容(たとえば、作業開始時にすべての作業内容が決まらないとき)なら準委任契約にする
-
準委任契約が向いていそうな内容のときは最初から準委任契約にする
開発するソフトウェアは、すべてがフリーソフトウェアの場合もありますし、一部だけフリーソフトウェアの場合もありますし、すべてがプロプライエタリなソフトウェアの場合もあります。仕事を受けるときはフリーソフトウェアになる度合いが大きい仕事を優先します。
開発するソフトウェアがすべてプロプライエタリなソフトウェアの場合でも、フリーソフトウェアを活用します。たとえば、RubyでWebアプリケーションを開発する場合は、Ruby、Ruby on Rails、Sinatraなどのフリーソフトウェアを活用しますし、GNU/Linux上でマルチメディアを再生するアプリケーションを開発する場合はGStreamerを活用します。これはフリーソフトウェアを大事にするクリアコードとしての最低限譲れないラインです。
なお、単に活用するだけでなく、問題点や改良点が見つかった場合は開発元に報告する、知見を公開するなどでよりフリーソフトウェアを大事にする活動につなげようとします。
ただし、このときもクリアコードの都合だけを考えないことが大事なポイントです。依頼者にとってもメリットがある形、少なくともデメリットがない形での実現を目指します。
最低限のラインは依頼者が満足することです。たとえば、依頼者と約束した機能を約束した妥当な期間内に実現していること、依頼者に素早く適切な回答を返し続けることで良好な関係を築いていること、などが満足につながります。もし、前に汚いコードで作ってしまった・本来必要ない作業も(気づかずに)実施しているなどの理由で、機能の実現にかかる時間が「長い印象」を与えることが続けば依頼者の満足度は下がっていくでしょう。(妥当な理由を依頼者が理解できるように説明できれば「長い印象」はもたれないでしょう。)
依頼者にとってのメリットが見いだせない場合(たとえば、それをやっていると時間が無くなって欲しいものが実現できない場合)は、業務の空き時間や趣味のフリーソフトウェア開発のときに開発元に報告します。
業務の空き時間を作るためには効率よく仕事をします。空き時間ができたクリアコードのメンバーは空き時間がない他のメンバーが溜めている問題を代わりに開発元に報告します。
クリアコードのメンバーはもともと好きでフリーソフトウェアの開発をしてきた人たちです。そんな人たちが、クリアコードに入ったから趣味のフリーソフトウェア開発をやめた、となるのはクリアコードとしてはうれしくありません。好きでフリーソフトウェアの開発をしていた人が減るからです。
クリアコードがフリーソフトウェアを大事にする方法として、メンバーが趣味に使える時間を増やすという方法があります。クリアコードは基本的に残業をしない働き方にしています。また、1年ほど前から有給休暇の有効期限切れ日数が0になるような取り組みを進めていて、今ではほとんどのメンバーが有効期限が切れる前に使い切っています。業務時間の一部を好きなように使ってよいという会社もありますが、クリアコードは休みの日を増やし、メンバーがフリーソフトウェアの開発に使える時間を増やすことでフリーソフトウェアを大事にしています。
まとめ
クリアコードがどうやってフリーソフトウェアを大事にすることとお金を稼ぐことを両立させようとしているかを整理しました。
クリアコードは、依頼者のことを大事にし、これからも継続してフリーソフトウェアを大事にしていきます。