Text
Page: 1
株式会社クリアコード
須藤功平
関西Ruby会議2017
2017-05-27
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 2
テーマ
コミュニティー
と
ビジネス
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 3
実行委員長曰く
コミュニティーとビジネスは
いい関係でまわると思うんで
そのための情報を共有する場
になるといいな
実行委員長
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 4
内容
✓ 一本のストーリーではなく
テーマに関する話の詰め合わせ
✓ 聞く人それぞれへの期待:
✓ 参考になる何かが見つかるといいな
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 5
題材
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 6
クリアコード
✓ 設立11年目の会社
✓ 業務:受託開発と技術サポート
✓ 小さな会社:9人 (募集してはいる)
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 7
大事にしていること
フリーソフトウェアの推進
(Rubyも多くのgemもフリーソフトウェア)
と
稼ぐこと
の
両立
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 8
推進するだけだとダメ
✓ 稼がないと継続できない
✓ そうなると推進し続けられない
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 9
稼ぐだけだとダメ
✓ クリアコードをやっている
意味がない
✓ 他の開発会社でいいよね
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 10
両立の実現に向けて
✓ クリアコードが活用するもの
✓ フリーソフトウェア開発で学んだ事
理念:https://www.clear-code.com/philosophy/
✓ コミュニティーで学んだことを
ビジネスに活かしている
関西Ruby会議2017のテーマにあっていそう!
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 11
学んだこと1
問題は
upstreamで直す
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 12
考えてみよう
使用ライブラリーに問題発見!
(たとえばRailsとかActiveなんとかとか)
あなたならどうする!?
1. 手元で回避
2. 別のライブラリーを探す
3. そのライブラリーを直す
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 13
クリアコードのスタイル
3. そのライブラリーを直す
(そうじゃないときもあるけど基本的にはそう)
✓ 自コードのメンテ性アップ
✓ 回避コードの独自メンテが不要
✓ 回避コードの共有が不要
(使っているプロジェクト全部で回避が必要)
✓ 他の人も困らなくなる
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 14
フリーソフトウェア開発の世
界
✓ そのライブラリーを直すのは
当たり前
✓ フリーソフトウェアが大事にしてい
ることの1つは「直せること」!
✓ クリアコードはここで学んだ
ことを実践しているだけ
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 15
コミュニティーとビジネス
✓ ビジネスでの知見を
コミュニティーへ
✓ ユースケースを元に改良・修正
✓ なぜやるの?
✓ クリアコードのポリシーだし!
✓ 「メンテしやすい」は普通に
ビジネス的に割に合う
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 16
クリアコードでの実例
Rubyにメモリーリークあり
✓ Ruby製のデーモンで問題に
✓ 調査→パッチ作成→Rubyを修正
✓ 定期的に再起動という回避策も
あるだろうけど、本家で修正
これで社員がコミット権をもらっていた
技術的な詳細:デバッグ力: よく知らないプログラムの直し方
http://www.clear-code.com/blog/2011/12/6.html
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 17
学んだこと2
開発を
続けられる
コードを書く
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 18
考えてみよう
ファーストリリース完了!
その後は?
1. 納品して終わり
2. 運用チームにバトンタッチ
3. 継続的に開発
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 19
クリアコードのスタイル
3. 継続的に開発
✓ フリーソフトウェア開発では
リリースを重ねつつ改良が普通
(Rubyも20年以上も改良を続けている)
✓ 最初から完璧な状態はわからない
✓ 使ってフィードバックを得て
よりよい状態を探していく
✓ よい状態の維持にも継続は必要
(よい状態は時間が経つと変わる)
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 20
継続的に開発とビジネス
✓ 長期間一緒にやれる仕事を優先
✓ ビジネス的にもよい:
✓ 安定収入
✓ 知識が増えてよりうまく開発できる
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 21
うまく開発
開発効率が
上がる
だけじゃない!
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 22
クリアコードのうまく開発
✓ よりよい提案をできる
✓ お客さんもうれしいし
クリアコードもうれしい、そんな案
✓ お客さんのうれしい
✓ よりよい成果(儲かるとか)
✓ クリアコードのうれしい
✓ フリーソフトウェアの推進
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 23
クリアコードと提案
✓ 既存の実現方法は
フリーソフトウェアの推進が
弱いことが多い
✓ それはしょうがない
✓ 推進も加えるところが
クリアコードの存在意義
✓ 両立する提案に必要なもの
✓ お客さんの目的の理解
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 24
フリーソフトウェア開発の世
界
✓ ユーザーがパッチ提供
✓ 開発者:目的(ユースケース)確認
(Rubyへの機能提案時もユースケースは?と聞かれる)
✓ 開発者:提供されたパッチ以外の
方法での実現もありえる
✓ ユーザーとプロジェクトで
メリットの両立を目指す
✓ クリアコードも同様にしているだけ
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 25
クリアコードでの実例
Groongaサポート
(Groonga:フリーソフトウェアな全文検索エンジン)
(商用パッケージに組み込み)
✓ 改良はGroongaへマージを提案
✓ お客さん専用ブランチは作らない
✓ mrubyのバグはmruby修正を提案
(Groongaはmrubyを組み込んでいる)
✓ 独自パッチを抱えない
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 26
Groongaサポートと提案
✓ 変更はupstreamへ
✓ →成果がフリーソフトウェアに
(クリアコードのメリット)
✓ メンテナンスコストが下がる
(クリアコードのメリット)
✓ →サポート費用を抑えられる
(お客さんのメリット)
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 27
学んだこと3
相手が
想像しなくても
わかるように
説明する
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 28
学んだこと4
楽しく開発する
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 29
学んだこと5
非難するよりも
手を動かす
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 30
学んだこと6
回避策よりも
根本解決
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 31
主な業務内容
✓ 受託開発
✓ FLOSSサポート
歴史的な経緯でFLOSSのまま
昔は「フリーソフトウェア」か「OSS」かで迷っていた
✓ OSS開発支援
サービス名ではフリーソフトウェアではなくOSSにしている
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 32
受託開発
✓ 優先度
a. フリーソフトウェアを
直接的に推進できる仕事
例:成果をフリーソフトウェアにできる仕事
事例:SMSさんの基盤ソフトウェア開発
b. フリーソフトウェアを
間接的に推進できる仕事
例:利用フリーソフトウェアの改良も含む仕事
事例:Groongaクライアント用gem各種を使う仕事
c. いずれ推進につながりそうな仕事
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 33
FLOSSサポート
導入支援と
障害調査
よくあるやつ
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 34
導入支援
✓ 事例:Firefox/Thunderbirdの
企業導入 (Ruby関係ないけど…)
✓ インストーラー作成キット開発
https://github.com/clear-code/fx-meta-installer
✓ アドオン開発 (機能制限・一括設定)
https://github.com/clear-code/
✓ ↑はフリーソフトウェアとして公開
✓ ノウハウはFAQとして公開
https://github.com/mozilla-japan/enterprise/blob/
master/FAQ.md
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 35
障害調査
✓ "ソースがあればなんとかなる"
✓ フリーソフトウェアが大事にしてい
ることの1つは「調べられること」!
✓ 調査対象のバグとわかったら
upstreamにフィードバック
✓ フリーソフトウェアの推進
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 36
OSS開発支援
✓ お客さんのOSSの開発に参加
✓ 事例:
Treasure DataさんのFluentd関連
✓ お客さんのOSS開発を支援
✓ 事例:SpeeeさんのWebapp Revieee
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 37
お客さんのOSSの開発に参加
ダイレクトに大事なことを両立
クリアコードの大事なこと:
✓ フリーソフトウェアの推進
✓ 稼ぐこと
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 38
どうして仕事になるか
✓ OSSで稼いでいる企業が増えた
✓ ちゃんとOSSを開発できることを
OSSを開発することで示せている
✓ OSSの開発が営業活動になっている
✓ コミュニティー活動がビジネスへ
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 39
お客さんのOSS開発を支援
ダイレクトに大事なことを両立
クリアコードの大事なこと:
✓ フリーソフトウェアの推進
✓ 稼ぐこと
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 40
どうして仕事になるか
✓ OSSの活用が当たり前になった
✓ OSSのエコシステムに参加する
メリットが認知されつつある
✓ 支援してくれそう感が出ている
✓ OSSの開発や発表などが営業活動
✓ コミュニティー活動がビジネスへ
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 41
OSSのエコシステムに参加
どういうこと
だろう?
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 42
OSSのエコシステムに参加
自分たちのソフトウェアと
OSSを同じように扱う
須藤功平
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 43
同じように扱う
✓ 問題があれば直す
✓ 気になるところがあれば共有
いつも通りでいい!
OSSは身近なもの
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 44
仕事の作り方
お客さんに
見つけてもらう
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 45
お客さん探しを頑張らない
✓ クリアコードは大衆受けする
ことをやっていない
✓ マッチするお客さんは少ない
✓ 少ないお客さんを探し回る
パワーはない
✓ そこに力を入れるよりも
得意なことを伸ばしたい
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 46
諦めることは大事
✓ クリアコードは小さな会社
✓ すべてに全力投球はできない
✓ なにを諦めるかを決断
✓ なにかに力を入れるということは
なにかを諦めるということでもある
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 47
決断
✓ 社長職の面白いところでもあり
難しいところでもある
✓ 決断する基準があると楽しめる
(自分の中で基準がはっきりしていないうちは大変だっ
た)
✓ クリアコードの基準
✓ フリーソフトウェアの推進と
✓ 稼ぐことの両立
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 48
お客さん探しと稼ぐこと
✓ 単に探す事をやめては稼げない
✓ 探さないで稼げないか考える
✓ 基本的にまずは両取りを狙う
✓ さっきは諦めるっていったけどさー
✓ 探す事は諦めるが稼ぐ事は諦めない
✓ トレードオフっぽく見えるやつでも
トレードオフじゃないかも!?
と考えてみる
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 49
推進と稼ぐことの両取り
✓ フリーソフトウェアの推進を
がんばる
✓ 開発・パッチ提供・レビュー
✓ 情報公開:ブログ・発表
✓ ↑で見つけてもらいやすくなる
✓ 見つけてもらう→仕事→稼げる!
✓ 両取り!
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 50
推進→見つけてもらった例
✓ milter manager開発・発表
(Rubyを組み込んだ迷惑メール対策ツール)
✓ →問い合わせ
✓ →大規模システムへの導入支援
(Rubyで独自メールフィルターも開発)
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 51
推進→見つけてもらう
✓ フリーソフトウェア推進自体が
営業活動
✓ 推進と稼ぐの両取りの一例
✓ コミュニティー活動が
ビジネスにつながる例
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 52
最近の推進兼営業活動
Apache Arrow
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 53
Apache Arrow
✓ データ分析システム用
次世代データフォーマット
✓ RubyもApache Arrowを扱えると
データ分析できそう!
✓ なので扱えるように開発に参加
✓ Rubyでデータ分析する仕事に
つながるといいな
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 54
おしらせ
✓ Apache Arrow勉強会開催!
✓ Apache
Arrowが早くデファクトになるとRubyでデータ分
析しやすくなる日も近づくはずなので普及活動中
✓ 明日の午前に大阪で
https://classmethod.connpass.com/
event/56478/
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 55
採用
✓ マッチする人は少なそう
(仕事と同じ傾向な気がしている)
✓ RailsでWebアプリ!とか
自社プロダクト○○を開発!とか
とは違いそう
✓ 業務内容ではなくポリシーでマッチ
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 56
採用活動
✓ フリーソフトウェアの推進
✓ 見つけてもらう
✓ 一緒にフリーソフトウェアを開発
→よさそうな人を誘う
✓ RubyKaigiにスポンサー
✓ Rubyを応援したいので始めた
✓ 採用は期待していなかった
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 57
まとめ1
コミュニティーとビジネスは
いい関係でまわると思うんで
そのための情報を共有する場
になるといいな
実行委員長
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 58
まとめ2
✓ 一本のストーリーではなく
テーマに関する話の詰め合わせ
✓ 聞く人それぞれへの期待:
✓ 参考になる何かがあったならいいな
株式会社クリアコード
Powered by Rabbit 2.2.1
Page: 59
コミュニティーとビジネス
この話をしたことが
仕事につながると
すごくキレイなのでぜひ!
株式会社クリアコード
Powered by Rabbit 2.2.1