Ruby Business Users Conference 2015 開催報告

2015年2月25日、東京品川にてRuby Business Users Conference 2015を開催致しました。

今回「Rubyをビジネスに活用するユーザーが集うイベント」の第一回というかたちで、講演者を公募し開催するという初めての取り組みでしたが、当日は約120名の方々にご参加いただき、スタートアップ企業、受託開発、教育など、Rubyのビジネス活用の取り組みについていろいろな立場からの講演に耳を傾けました。  

zentai

 基調講演  まつもとゆきひろ

matz

「ソフトウェアビジネスの話をしよう」

日本でソフトウェアビジネスというものが始まって50年弱くらいになる。ある統計によると、日本のソフトウェア産業のうちの7割〜9割が受託開発というかたち、つまり「自分のところのビジネスをIT化して効率化したいけれども、誰でもソフトウェアを作れるわけではないので、そのソフトウェアをどこかの企業にお願いして開発してもらう」ということをずっとやってきていた。昔はコンピュータというのは非常に高価なものであったし、それを手に入れることによって処理できるデータ量を考えると、手で帳簿を書いて処理するのに比べて圧倒的に効率的だったため、コンピュータを導入することそのものにアドバンテージがあった。

しかし現代はどうか? 周囲を見回してみるとコンピュータはどこにでもある。コンピュータをただ導入しているだけでは差別化にならない。コンピュータ化するだけで効率化できたのはもう過去の話で、ありとあらゆる企業においてコンピュータは何らかのかたちで使われている。そのように状況が変化してしまっているときに、ソフトウェア産業はどうなるのか? 

“2020年には全ての企業がIT企業になる”

Matzは米ガートナーの“2020年には全ての企業はIT企業になる”というレポートを踏まえ、ITをただ導入するだけではなく、ITを「駆使する」企業しか生き残れないという状況になっていくだろうと言います。例えば、林業であればいつ出荷することが利益を最大化するかということのシミュレーションであるかもしれないし、農業であればいつ肥料を撒いてといった計画や出荷・流通をITによって最適化することが他との差別化につながるかもしれない。そういった変化の只中にある現代において、今までと同様のソフトウェア開発でよいのか?とMatzは問います。

ソフトウェア開発業において開発されているソフトのかなりの割合が、実は既にあるソフトと同じものを作っているということが結構ある。しかし、冷静に考えてみて多くの人が気がつきはじめていると思う。「私たちは今うちの会社のこの仕事をソフトウェア開発企業にお願いしているけれども、これと同じソフトは実はうちの同業のB社も、あるいは全然違う業種のC社も持っていて、ほぼ同じものを使っているのに、なぜわざわざ新しく作らなければならないのか?」「なぜわざわざ新しく作るために高いお金を払わなければならないのか?」 そうすると、普通のソフトウェア開発、どこかで見たようなソフトウェア開発をする余地はこれからどんどん減っていくだろう。

どんなソフトウェアが、どのようなソフトウェア開発が望まれるか?

Matzはこうした変化が今後徹底化されていくと、ソフトウェア開発というのは二極分化していくのではないかと言います。一つは、「そうは言ってもA社が使っているソフトと同じサービスをうちに持ってきたときにうちと微妙に差があるので少し直したい」というところのカスタマイズ。もう一つは、2020年に全ての企業がIT企業になったときのためのコア・コンピュータンス「私の企業はこのITによって他と差別化するんだ」というものを作るソフトウェア開発。大きくこの二つに分かれるだろうと言います。

コア・コンピュータンスとなるようなソフトウェアを開発するにはどうすればよいのか? Matzはそういったソフトウェアを開発するには、今までのようなソフトウェア開発では難しいと指摘します。例えば自分が運送業社の社長だとして、自分のところの従業員の給与計算ソフトを使うというのであればそれは自社の戦略そのものとはあまり関係ないが、「私のところの運送を効率化するためにいかにスケジューリングするか」という自社の戦略そのものに関わる技術というのはコア・コンピュータンスなので、それは他のところに任せられない。経営というものはだいたい未来予測ができないもので「これがきっとうまくいくに違いない」といって経営方針を立てるがだいたい外れる。その都度、方向転換し、調整していく、というのが経営のやり方。ソフトウェア開発がコア・コンピュータンスとして経営の一部になるということは、未来はわからないけれども、とりあえずこれでやってみよう、これが未来への道だと決心してやって、だけどしばらくやっているとうまくいかないかもしれないので、そうしたら方向転換をし、微調整をしよう、そうしていくしかない。つまり「未来予測ができない」ということを素直に認めた上でやっていくしかない。そういった姿勢が開発において求められるようになってくる。

そうなったときに重要なのは、生産性(迅速な開発)、それから方向転換に伴うソフトウェア修正の容易さである。そういうことを意識した開発のことを「アジャイル」ということがあるが、Rubyはそういったアジャイル開発に向いている。Rubyで開発する場合には、ソフトウェアを書く記述の本質にフォーカスすることができるので、同じことをするのに他のプログラミング言語に比べて全体的にソフトウェアの規模をコンパクトに記述することができる。ソフトウェアにおいて重要なのは、コードがどうとかライブラリがどうこうということではなくて、「何をどういうふうにするか」という設計の部分、そこにフォーカスすることができること。また、Rubyは例えばメタプログラミングといったプログラミング的に高度な機能を持っているので、ソフトウェアの抽象化が簡単でフレームワークを提供しやすいという側面もあり、それによってRuby on Railsなどその他たくさんのライブラリやフレームワークが提供されている。こういうものを利用することによって、自分はその部分については考えなくてもよく、本質にフォーカスすることができる。それによって、他社よりも早くサービスを提供することができ、他社よりも早く方向転換ができる、あるいは現状に合わせて微調整ができる、というのがRubyの強み。

プログラミング言語のなかでのRubyのポジショニング

実行速度の面では、JavaやC++で同じものを開発した場合、やはりJavaやC++のほうが速い。Rubyはそこで競争しない。「Rubyを使ってサービスを提供しました。そのサービスがビジネス的に成功してたくさんのトラフィックを集めるようになり、たくさんのユーザーやデータが集まるようになりました。同じデータセンターのマシンのノードの数でJavaだったらもっとたくさんのデータトラフィックを判断できるかもしれない…」そこまでビジネスが成功して、ビジネスの方向性が定まったら、そこで改めてそれをJavaでつくりなおしても、割に合う。でも方向性がまだわからないときに、Rubyのような素早く方向転換できる言語を選ぶことは非常に重要。

例えばTwitterが実際にそうしている。Twitterは一番最初に始まったときに「140文字しか書けないブログって何それ?」とみんな思った。しかし何年か経つと「これはもしかしたら大したことかも」と思うようになり、その間はずっとRubyで動いていた。しかし何十億人ものユーザーがいて、一日何十億というトラフィックが来たときに、Rubyだとデータセンターのコンピュータの数が多すぎるということになり、彼らはコアの部分、メッセージを取引する部分をJavaで置き換えた。そのときにはTwitterは何者で、どんなサービスを提供することがTwitterという企業にとってのコア・コンピュータンスかということがもう明白にわかっており、ビジネス的にも成功していたので、Javaで書き直すのは問題がなかった。Rubyで開発して、方向性が決まったら、そこでスケールアップまたはスケールアウトすることによって対処することができるし、それが限界にきたときには改めてRubyから他の言語にいっても全然問題がない。

さらに言うとCookpadはすべてRubyでできている。世界最大級のレシピサイトのトラフィックを難なくこなすことができるRubyでダメだというようなサービスを皆さんが作ることができたら、それはみなさんの大成功なので、おめでとうございます、じゃあJavaでもGoでも好きな言語にいってください、ということになる。でも、最初の一歩を踏むときに、Rubyはみなさんのお役に立てますということを確実に約束できる。「それこそがRubyのポジショニング」だとMatzは言います。

まだまだ広がりつづけるRubyの世界

「ただそうは言いつつも…」とMatzは話を続けます。Rubyでできる範囲が広ければ広いほうが良いので、過去、例えばRubyのバージョン1.9ではヴァーチャルマシンを導入してパフォーマンスを場合によっては何倍にも高速にした。2.0ではGCを改善してWeb環境でのパフォーマンスを改善した。2.1ではメモリー消費量を減らすと同時に世代別GCというものを導入してGCに掛かるコストを削減した。ベンチマークを取れば、バージョンが進むほどRubyのパフォーマンスは上がっている。さらにJRubyなどのような別の実装が、CRubyと切磋琢磨してRuby全体の裾野を広げてくれている。RubyはWebで使われることが多いが、科学技術分野に適用されるためのSciRubyであるとか、組込みのために使われているmRubyであるとか、そのようなより広い範囲にRubyを使っていただけるような技術的進歩も次々と進んでいる。Rubyは最初テキスト処理をするスクリプト言語といわれているものから始まったが、そのあとWebの領域で大成功した。今では、ChefやPuppetのようなインフラ管理のようなところでも広く使われてる。さらに自動販売機や人工衛星を入れようという話も既にあがっている。また、科学技術計算にRubyを、という話も出ている。場合によっては、スーパーコンピュータのプログラムのコントロールにRubyを、という話もある。

たんにWebのプログラミング言語ということを超えて、あらゆる領域に、Rubyの良さ、簡潔で、素早く開発できて、生産性が高くて、一番大切な設計の本質にフォーカスすることで状況が変化したときにそれに対応してプログラムを書きかえる、プログラムの進化を加速することができるという特徴が活用されている。Rubyというのは、ただたんにRuby on Railsを使ってWebアプリケーションを開発するだけでも便利なプログラミング言語ではあるが、さらにその限界は広く、その限界までしっかり活用していただくことによって、ソフトウェア開発者としての差別化の秘密兵器になるのではないかと思っている。

 講演  九岡佑介(株式会社クラウドワークス)
     「Rubyと、世界中のRubyistと、一緒に育つ」

kuoka

Rubyに助けられたビジネスで、働き方が変わる

2011年の創業から3年でのマザーズ上場が昨年末に話題となったクラウドワークス、創業時のメンバーがサービスを開発するのにRubyを採用した理由は、スタートアップ向きの高い生産性、ライブラリの豊富さ、メタプログラミングの容易さ、だったそうです。九岡さんは「多様性のあるスタッフが同じ目標に向かって動いていくためには、ビジネスとエンジニアリングの共通言語としてのUX(ユーザーの体験)が必要であり、それを形にするのが人とRubyである」と言います。開発スタイルの多様性に対応するための取り組み、エンジニアの採用・育成の取り組み、利用しているOSS・サービスなどのお話を通して、クラウドワークスの「『働く』を通して人々に笑顔を」というビジョンの実現・ビジネスの加速が、Rubyの進化といかにシンクロしているかがよくわかるご講演でした。

講演スライド

 講演  伊藤浩一(株式会社永和システムマネジメント)
     「Ruby x Agile に至る受託開発10年のいま」

itoh

Rubyはアジャイルだったか?「YES!」

現在Rubyとアジャイルを軸にした受託開発のプロジェクトリーダーを務めておられる伊藤さんのご講演は、10年前に「Rubyはアジャイルか?」と言われていた時代のお話から始まり、この10年で受託開発を支える要素(プロジェクト、人、技術)がいかに変化してきたかについてご講演いただきました。ご講演の途中で「開発がアジャイルであるということは、協調性を重んじる環境で、フィードバックに基づいた調整を行い続けることである」という定義が出てきましたが、まさにその定義の内実を言語(環境)からのフィードバック、人からのフィードバックなどの具体的なお話を通して再確認することができたのではないかと思います。歴史背景と具体的な事例に基づいた非常に濃密なご講演でした。

講演スライド

 講演  小芝敏明(ピクシブ株式会社)
     「日本最大級の地域Ruby会議『東京Ruby会議10』開催から得た大規模技術カンファレンス開催の勘所」

koshiba

○○○だけあればカンファレンスを大規模に開催できる

2013年に開催され3日間のべ1000人近い規模となる大規模カンファレンスとなった「東京Ruby会議10」の実行委員長を務められた小芝さん、開催のモチベーション、開催の具体的な段取り、不安・心配への対策、アクシデントへの対処など、カンファレンス開催に向けての主催者にしか語れない具体的なプロセスをお話いただきました。Rubyの理解、タスク管理、スケジュール管理、予算管理などなど、開催で大事なことはいくらでも浮かびそうですが、小芝さん曰く、開催する上で最も大事なこと、それは「実行委員長の想い」なのだそうです。それを明確に示す開催趣意書を書くためにはどうすればよいか?といったお話も主催者ならではの非常に具体的なご講演で、これから何かしらのイベントを開催しようと思っている方も学ぶところが多かったのではないでしょうか。

講演スライド

 LT  吉政忠志(株式会社トランスネット)
     「インテグレーターから見たRuby市場の今後 ~Ruby事例、体制強化、業界貢献~」

yoshimasa

市場データをもとに、Rubyの仕事を探すよりもRubyのエンジニアを探すほうがたいへんになっている状況、Rubyの市場隆盛に備えてトランスネットが行っている取り組みをご紹介いただきました。

講演スライド

 LT  菊本久寿(株式会社StartupTechnology)
     「新しい働き方を提案するRuby on Rails専門クラウドソーシングStarupLabo」

kikumoto

従来の開発の進め方の問題点を踏まえて、成功するための開発の再定義として「コミュニティとして開発を進める」という新しい働き方をご提案いただきました。

 LT  安川要平(ヤスラボ)
     「Railsガイドの継続的翻訳活動を支える仕組みと成果」

yasukawa

Railsガイドを支えている「継続的に翻訳する仕組み(Continuous Translation)」についてご紹介いただきました。

講演スライド

 LT  高橋健一(株式会社GMOペパボ)
     「現実世界のJSON Hyper-Schema」

takahashi

JSON Hyper-Schemaの解説と、JSON Hyper-Schemaでペパボがどういうことをやっているかについてご紹介いただきました。

講演スライド

 講演  武田貴文(日立SC株式会社)
     「非RubyプロダクトにおけるテストツールとしてのRuby利用」

takeda

Rubyの持つプログラミングの楽しさ

非RubyプロダクトのWindows上での開発において、GUIを操作するオープンソース(VMWare QAチームのCobra WinLDTP)を使ってRubyでGUIを操作してテストを自動化し、開発を支援したという事例についてのご講演でした。「Rubyの使い方としてはめずらしい使い方だと思うが、こういうツールによってWindowsの開発環境の中にもRubyを滑り込ませることができ、仕事をもっと楽に、楽しくすることができる」と笑顔で語る武田さん。武田さんが所属されているチームではRubyを使える人は武田さんしかおられないそうですが、今回の事例のようなRubyの活用を通して、「Rubyの持つプログラミングの楽しさがメンバーに伝わったのではないかと思っている」とのことでした。

 講演  吉田裕美(EY-Office)
     「Ruby、Ruby on Rails教育のコツ教えます」

yoshida

エンジニアを自社で育てよう

日本でもスタートアップ企業が増えているがRubyエンジニアが不足している現状を踏まえて、「エンジニアを自社で育てよう」というご提案についてご講演いただきました。吉田さんは、教育システムが確立できれば中途採用や人材派遣など不確定な要素に関係なく成長できるという利点を挙げられ、「教育業者と社内教育の両方を行うとより効果がある」と言います。具体的にはどういった教育がよいか?といったことで、学習者に実際に「体験」しながら学んでもらうための具体的な教育方法についてもたくさんの示唆に富んだお話をいただきました。

 講演  飯尾淳(中央大学文学部社会情報学専攻 教授)
     「文系ITエンジニア育成教育におけるRubyの活用」

iio

これからのIT産業で求められるIT人材とは?

ITユーザーがほんとうに多岐にわたる現代において、ベンダー主導のシステム開発からユーザー主導のシステム開発に移ってきている。社会情報学で「社会の中でどういうふうに情報を活用していくべきか?」が重要だとされているように、IT産業では顧客のビジネスをいかにうまくまわしていくかということにシステムを活用できなければならない。そういった背景を踏まえた上で、「システムをしっかり理解し、使いこなせる人材」を育てなければならない。そこで飯尾さんが大学で行っておられる演習実施上の課題や教育上の工夫について、学部生への授業内容から大学院での事例まで具体的にご紹介いただきました。

講演スライド

 講演  大越賢治(株式会社ウィルド)
     「ワークライフバランス × Ruby」

ohkoshi

Rubyを使うようになり生産性とワークライフバランスを両立した仕事ができるようになった

200X年に社員大量退職危機にあったウィルド、そのときに大越さんが目をつけたのが「ワークライフバランス」だそうです。会社としてスキルセットの統一を検討しなければならなかったときにRubyを採用し、そこからRuby開発の割合を増やすとともに徐々にワークライフバランスが社内に根付かせていきました。「Ruby、Rails、Gemはワークライフバランス的な3つの風土を持っている」と大越さんは言います。ワークライフバランスを導入する上で失敗したこと、その改善方法と成果、具体的な面白い取り組み(クイズピンポン会議)などのお話を通して、ワークライフバランスを成立させるためのスキルの獲得にRubyがどのように役立ったかを語っていただきました。