********************************************************************** SWEST/DAS合同基調講演 テーマ: 世界に通用する技術者になるためには 日時: 2012/8/31 13:20 ~ 14:40 講師: まつもと ゆきひろ (株式会社ネットワーク応用研究所) 参加人数:約300名 ********************************************************************** ・mruby:組み込みを名目をしたruby ・SWESTなので、mrubyの紹介をするのかと思ったら、  世界に通用する技術者になるためにはというテーマなんですね 自己紹介 ・まつもとゆきひろ、英語ではMatz   - 松本は日本で10番目に多い苗字   - ひらがなで書いているのは、ほかの人と差別化するため   - しかし、最近ひらがなの人も多く差別化できてない   - ギタリストにも同名の人がいます   - Matzはスウェーデンにある苗字らしい(偶然) ・20数年間、商業プログラマ ・オープンソースエバンジェリスト ・1993年からRuby開発 ・世界にまたがるRubyのコミュニティを15年主導 ・世界で最も知られた日本人プログラマ ・ネットの支配者100人に選ばれた ・自分自身ではハッカーと自覚   - もちろん、悪党ではない   - 「マタギの人が持ってる鉈で切り出す」のがハッカーの原意 私のハック ・cmail   - Emacsのメールリーダ   - 私の最初のオープンソースソフトウェア   - 別の人から受け継いだものを、原型を留めないほどに改造   - 読むメールが100~200、来るメール(スパムを含めて)が1000 ・morq   - Emacsのメールリーダ   - cmailのバックエンドをRubyで書き直したもの Ruby紹介 ・1993から開発 ・Perlの代替になるものを作りたいと思い作りはじめた ・中学時代にプログラムを始める   - 高校時代にプログラミング言語に関心を持ち始める    - 何をプログラムするかよりも、どのプログラミング言語を使い、どんなプログラ ミング言語をデザインするかを考えるのが好きだった   - 自分がよく使うジャンルがPerlだった ・スクリプティング言語   - スクリプティング言語にオブジェクト志向を導入するのは当時あまり現実的でなかった   - スクリプティング言語のジャンルにオブジェクトは必要ないとも言われた   - 十数年経った現在ではほぼオブジェクト指向が入ってる   - 当時の判断は間違ってなかったなと   - スプリクト言語の対象となる領域がテキスト解析だけでなくなってきた   - 先見の明だったのではないかなと 軽量言語 ・言語そのものが軽量 ・人間にとって軽い言語   - 少ない人月、安いコストで開発したいというニーズ   - プログラミング言語によって改善するアプローチが流行っている Ruby on Rails ・Rubyを有名にした ・つらくないWeb開発 がキャッチフレーズ ・Webアプリケーションは共通の構造を持つ   - データのアクセス・編集など   - WEPアプリケーションの生産性を高める   - 共通部分を枠組みとして提供すれば、生産性が高まるのでは ・PerlやJavaでWebアプリケーションフレームがすでに存在していた   - Ruby on Railsの前に、RubyでもWebアプリケーションフレームワークが存在していた   - Webアプリケーションフレームワークとしては後発 ・生産性が高く、気分よくWebアプリケーションの開発ができた ・2004年くらいにRuby on Railsでビデオがアップロードされた   - 当時はまだYoutubeが出ていない   - ブログのシステムをゼロから作る動画    - データベースの定義もないところから、ブログの投稿・参照するところまで15分で作成    - これが大きな話題になり広まった ・「Javaより10倍ぐらい生産性が高い気がする」とブログに書き、コメントがすごく伸びる(2005年) ・Ruby on Railsの製作者:David Heinemeier Hansson(通称:DHH)   - 炎上マーケティング ・生産性は測定しにくい   - Javaよりは生産性が高い気がする、という人が多く人気が高まる ・Ruby on Railsを完成させるにはRubyを使わないといけない   - Rubyが人気言語に ・Rubyそのものをよくすることに関心がある   - マーケティングには興味はなかった   - Ruby on Railsでマーケットが広まった ・人気言語ランキング(www.tiobe.com)   - rubyは約150言語中10位    - 毎月10位 ~ 12位くらいをうろうろしている   - 同系統の言語は(PHP,Python,Perl)がさらに上位    - 勝ってはいないが頑張ってる   - 150位以内にほかに日本人が作った言語がない    - 後続に期待する   - 広く使われる言語はなかなかない mruby ・mbedのm   - まつもとのmという説もある ・Luaの実装は素晴らしい   - 言語としてはレベルが低い(オブジェクト指向なし・標準のライブラリが小さい)   - Luaと同じように使えて高機能な高級言語を作りたかった ・組み込みAPI   - LuaのAPIを真似した    - LuaのAPIは定評があり、様々なアプリに組み込まれてる   - cruby(MRIとも)では言語がコアにある    - C/C++で機能が拡張し、Rubyでアプリケーションを書く   - 組み込みAPIでは、アプリがある    - その機能の一部をLuaやRubyで書く   - 主従関係の逆転に向いたAPIをcrubyが持っていなかった    - APIの模範性を捨て、mrubyではLua風APIを提供した ・移植性   - mrubyではコアだけ提供するのでほかの部分は追加してくださいというスタンス   - コア部はANSI C   - 移植性の高いCコードを書いている ・構成可能性   - 組み込まれるアプリに対して最適なオプションで組み込むことができる   - コンパイル・リンク時に設定をすることで可能    - Integerのサイズやfloatを単精度にするか倍精度にするか    - mrubyのコンパイラを外す設定    - 必要のないクラスを外すなど ・ソフトリアルタイム   - 特にゲーム業界など   - ハードリアルタイムはRubyではできないので考えていない   - 人間に気付かない程度のリアルタイム性がほしい    - メニューを出すときにガベージコレクションで1秒止まらないように   - インクリメンタルGCを提供    - ガベージコレクションの時間がなるべく短くなるように ・組み込みの領域に組み込み以外の新風を導入   - 高級言語で設計開発ができる   - オープンソース   - Webテクノロジ   - 新しいトレンドとしてみることができる mrubyデメリット ・言語そのものは動的で柔らかい ・開発者の組み込みに対する文化・経験が薄い   - SWESTでいろいろ聞いてみたい *世界に通用する技術者 世界進出に必要なもの ・才能とか能力だろうか?   - 同じ人間 それほど変わりはない、それほど差はない   - 能力の差も大したことはないだろう   - 世界進出は、ものすごい才能に恵まれた特別な一部の人ができること、ではない ・努力と根性か?   - 努力と根性があったからと言って世界に進出できるわけではない ・モチベーション(動機)が必要ではないか   - 私と私の周りにいる世界に進出している人が持っているものを考えた   - モチベーションを持つ対象があるか   - 熱意を持てる対象があるか   - 継続できるか   - つまり、動機と継続 ・業(ごう)   - 業火の「業」   - 性みたいなもの   - 呪いみたいなもの   - 情熱や動機や原動力となる   - 一生懸命になりすぎて、葛藤・衝突・苦悩がある   - 変人と呼ばれてしまう    - 言語のことを30年考えるのは普通ではないのかも   - どうしてほかの人と同じことができないの?    - 小学1年生のとき当時の担任に言われた言葉    - 「大人はわかってくれない」と子供のときも大人になった今でも思っている    - 普通の人とそうでない人の違いを理解できるか   - 呪いでもあり祝福でもある ・逆に考えてみると妨げになるもの   - 壁    - 世界進出を妨げるもの   - 個々のエンジニアと話すときに、そのエンジニアの持っている能力・才能・やって きたこと・実績などを比べるとき、日本人のエンジニアの方が劣っているという ことはない    - むしろ日本人の方が真面目に技術に取り組み、自分の得意な分野についての知識 が深く、優れた人の方が多い気がする    - 優れていても壁に囲まれているエンジニアが多いのではないか   - その壁は分厚く大きいものかもしれないし、紙のようなものかもしれない ・心理的障壁   - 周りとの関わりの中で作られる圧力    - 同調圧力    - 空気(KY)     - 周りの期待を読み取り、雰囲気に従う・感じ取らなければならない    - 私は読めないタイプ   - 暗黙の期待に応えるのが、すでに壁になってしまっているのではないか   - 言葉にされない    - そうしなければならない、とはだれも言わない    - 従わなければいけないような気がする    - しかし、存在しない(幻想ではないか)   - 日本では個性・独自性・新規性・ユニークな存在でありなさいとはよく言われる    - 一方で同調性を求められる    - 同調性を捨てることで、心理的障壁を乗り越えられるのではないか   - 幻想の持つ力は大きいので、感じ取れる人は従ってしまいがち   - 私のように空気を感じ取れない人はそれはそれで辛い    - うまく立ち回る必要がある   - 「へびのように賢く、はとのように素直であれ」(聖書)    - 心理的障壁を蛇のように跳ね返し、トラブルのないところでははとのように素直 に社会的圧力を受け入れる振りをすればいいんじゃないかなと   - ひとりの力・現実的な時間では、社会は変わらない   - むしろ、社会に立ち向かうよりは、自分がうまく立ち回ることを考える   - 幸いなことに今は、ひとりで社会に立ち向かう必要はない    - 昔は同胞の氏を探し出すのは難しかった    - 今はインターネットを通じて、同じことを感じる人と出会うことができる   - 若くても実力の高い人が直接会うことができる機会やイベントがある    - 20年前、30年前にはなかった   - ネットを通じて同じ思いを持った人とつながりを持てる時代の若者に嫉妬する   - ひとりでないことによって社会的圧力・心理的障壁を超えることができるのではないか   - 私もRubyのコミュニティに集まる、Rubyに関心のある人と話すことで、ひとりでは なく、みんなで考えることができるようになった    - コミュニティの力で、集まった力で乗り越えることができる ・言葉の壁   - 英語とか言語で苦労する    - 英語とギャップの大きい言語を使っている人はみんな苦労している    - 高校までの科目で確実に役立つことが保証されてる科目は英語だけ     - 役に立てる機会がたくさんある     - 唯一利益に直結する科目   - 日本は英語がなくても生きていけるラッキーな国   - インドの言語は英語と構造が違う    - 植民地支配によって苦労して英語を使えるようになった   - 日本は日本語だけで、大抵のことは済んでしまう    - コンピュータサイエンスの勉強も日本語でできる    - 英語以外で学位が取れるラッキーな国    - オライリーの本などのメジャーな本は翻訳されている    - 英語を話す真の動機がない、英語がなくても生きていける 変わりつつある状況 ・日本に閉じた技術者でいいのかという閉塞感 ・日本マーケットの縮小 ・グローバリゼーションの波に乗らなくていいのか ・直面する重大な選択   - 衰退する状況に固執するのか   - 日本から出ていくのか   - 日本を超えてグローバルな活動をするのか ・ガラパゴス   - 孤立した環境の象徴   - しかし、蟲毒として最後に残ったものになるのかもしれない ・多様性   - コストが掛かり効率が悪いが、多様性のほうが大事   - みんな同じことをするのは効率はいいが、環境が変化したときに一気に絶滅する可能性がある   - いろんな方向を見る人がいるのが望ましい   - ひとりひとり別のことをするほうが良い ・壁には両面がある   - 壁の外側にも人がいる   - 日本の外の人も壁を感じてしまうことが多い   - 日本は楽しいもので溢れていると思われている   - 日本は注目されている、関心を持たれている   - 関心に対して情報を提供することによってチャンスを持つことができるのでは ・多様性は素晴らしく、画一的な文化は最低   - 皆と同じでない人を排除してしまう   - 環境の変化に弱い   - 違いを生むことによって価値を生む ・ベルリンの壁はいつまでもあるものだと思っていた   - あっという間に壁がなくなった    - 今でもいろいろあるが、ドイツは一つのドイツとして発展している   - 乗り越えられない壁だと思っていたのは幻想だった ・日本は言語などの壁で守られている・外に出ていけないと思っている   - 何かのきっかけであっという間に崩れてしまうかもしれない ・壁を破るのは「ハック」である   - 心理的障壁は本当はないものをあると思ってしまう   - 自分の心をハックすれば敗れる ・壁を破るのに必要なもの   - やるき   - 時間   - ほんのちょっとの英語   - 伝えたい「なにか」 ・やるき   - モチベーションは譲渡不可   - 他の人から貰っても、いろんなものを乗り越えることはできない   - 最初の動機付けは自分で見出さないといけない   - 最初に必要なもの ・時間   - 時間の使い方で優先順位がわかる   - モチベーションがあれば時間はいくらでも作れる    - モンスターハンター・ポケットモンスターに何十時間も使える    - 無駄ではなかったが、もし有効に使えたなら偉大なことを成し遂げられたかもしれない ・ほんのちょっとの英語   - 読めない言語で書かれた面白そうなドキュメント(ロシア語)    - しかし、私には読めない    - 同じ思いを日本人以外の人にさせてはいけない    - 同じプログラマーとしての仲間意識として   - 日本語のRubyのドキュメントを半年ぐらい掛けて細々と英語に直した    - しばらくしてから、外人からメールが来た    - とりあえず意味は分かるかもしれないが、結構間違っている英語   - 日本語は読めないが、ぐちゃぐちゃな英語だと読める人がいる    - 不完全であっても0よりはまし   - 真の共通語は、きれいな英語ではなく下手な英語   - グローバルなセッションでは、皆が話せそうな言語は英語ぐらいしかない   - ギリシャ語で話しかけられてもわからないが、下手な英語同士だと何とか通じる ・英語の学び方   - 真の目的をもつ    - 英語のための英語ではなく、技術について伝えたいから学ぶ   - 間違ってもいい   - 出来ることならば長い期間一定期間(例えば一週間)話し続ける機会があるといい    - 自分の脳が諦めて、日本語でなく英語で話そう、となる ・伝えたい「なにか」を持つ   - 伝えることが大事なのでは   - たとえ稚拙でも、自分の中で咀嚼したものを出す   - ものすごい技術者かどうかよりも、アウトプットをしているかということが大事    - ブログ・オープンソース・github   - 誰でもできるはずだが、意外とやる人は多くない    - 心理的障壁を持つ人が多い   - 他の人と違ったことができる大きなチャンス   - 自分の持っているものをアウトプットする ・壁を破るのに必要なもの   - やるき   - 時間   - ほんのちょっとの英語   - 伝えたい「なにか」をアウトプット ○質疑応答 <質問者1:S氏> 海外と協力して開発することが多くなっており、海外の技術者と関わることも多い 独自性について、エンジニアとしての心構えを教えてほしい >職業プログラマよりもOSSプログラマとしての経歴が長い  会社で活動すると、結果も会社の名前で発表を出さないといけない  個人個人が前面に立つような生き方のほうが技術者として幸せに近いのではという思いがある  エンジニアとして今後生き延びる戦略でもある  日本は今まで組織に依存するようなエンジニアの生き方をしてきたので、発想の転換が 必要かもしれないが、一人のエンジニアとして世界に名前が知られるほうが、エンジニア の幸せ、未来のエンジニアの多様性につながるのでは <質問者2:K氏> 今日のプレゼンは、まつもとさんの主観的な内に秘めてるものについての話でしたが、こ こまで来るのにターニングポイントになった出会い・きっかけ・これで世界に行けたな、 というのがあれば >Rubyは非常に運が良かった  公開したすぐ後に日本人のエンジニアのコミュニティが始まった  ドキュメントを英語にしたときに、Andrew HuntとDavid Thomas(「達人プログラマ」の 著者)がRubyの本を英語で出してくれた(2000年)   - 日本以外におけるRubyの知名度が高まった  David Heinemeier HanssonがWebアプリケーションフレームワークを書いてくれた   - PHPプログラマで学生だったころの彼に会った   - Rubyに移ってWebアプリケーションフレームワークを作って、Rubyの世界を変えてくれた  なかなか言語を移る機会はない  たまたま新しい言語に移ろうかと思ったタイミングでRubyが出てきた  それがRubyの運の良さだったのではないか 以上。