2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
リンクをコピー
記事をブックマーク
まつもとゆきひろ氏(以下、まつもと):それでは発表をさせてください。「成功するソフトウェアの作り方」と題しまして、Rubyのまつもとが発表します。先ほど「Heroku」の発表がありましたが、私は元Herokuなので、すごく懐かしく聞いていました(笑)。
(スライドを示して)こんなアイコンでふだん活動しています。
英語圏ではMatzという名前を使っています。Rubyを作った人として知られていて、おそらくはRubyのおかげで日本人プログラマーとしては一番有名だろうと思います。「優秀だろう」と言いたいところなんですけれども、そうも言えないところは残念です(笑)。知名度だけは高いと言えます。
1993年にRubyを作り始めましたので、2023年で実に30年。「そんなに時間が経ったのか」という感じではあるんですけれども。考えてみると、ソフトウェアプロダクトって寿命が長くないことがわりと多くてですね。30年も続いているソフトウェアって、あまりないんですよね。
そういう意味でいうと、貴重な成功例だと言うこともできるんじゃないかなと思います。30年間生き延びたソフトウェアプロダクトとして、ある意味成功したほうと言ってもいいんじゃないかなと思います。
その30年の経験は、全部なにもかもうまくいったわけではなくて、「思うようにならんな」と思ったこともたくさんあるんですけれども、そういうのも踏まえて、自分の経験から「成功するソフトウェアとは何ぞや?」みたいな話をできたらいいなというふうに思っています。
まず「成功とは何ぞや?」ということを定義したいんですけれども。ビジネスでソフトウェアを作っている時の成功というのは、「お金を生み出すソフトウェア」と言いたいんですけど、難しくてですね。
例えば私のやっているオープンソースソフトウェアは、いくら広まってもお金はぜんぜん入ってこないんですよね(笑)。売上が立っていないので。
私自身、ビジネス経験がすごくあるわけではないので、「お金を生み出すソフトウェア」としての(意味での)「成功するソフトウェア」の話で、説得力のある話はしづらいんですね。
それを考えると、「お金を生み出す」というのは「ビジネス的に成功する」みたいな、営業などのいろいろな要素が含まれてくるので今回はちょっと避けて、別の定義を使ってみようと思います。
(今回は)「広く、長く」というキーワードで定義できるような成功するソフトウェアを考えています。どういうことかというと、1人だけが使っているソフトウェアを作っても、(それが)成功したとはなかなか言い難いので。たくさんの人たちにリーチして、たくさんの人たちに使ってもらえる、あるいはたくさんの人たちに喜んでもらえるようなソフトウェアは「成功したソフトウェア」と言ってもいいだろうというふうに思います。
それから、パッと出てきて、1年間だけ話題になったんだけど、その次の年とか、2年、3年経つうちに誰も使わなくなって、「あぁ、そんなものもあったね」って言われるようなソフトウェアも意外と多くて(笑)。そうすると、リーチする範囲はともかくとして、時間的要素みたいなものもあるんじゃないかなと。
だから、縦軸として「どのぐらい広く使われたか」と、横軸として「時間としてどのぐらいの寿命を持ったか」ということで、両方が大きくて、トータルの面積が広いようなソフトウェアを、この講演の中では「成功するソフトウェア」と定義して考えてみようと思います。
私自身はですね、エンジニア出身というか、今でもエンジニアのつもりなんですが。実際“生涯プログラマー”を目指していて。私はもう50代、2023年で58歳になるんですけど(笑)。そうすると、私の同期とか同世代の人たちとかは、なんか「上がり」というか、「いやぁ、昔はコードをばりばり書いたけど、最近ソフトウェア開発をしていなくて」とか「プログラミングから離れて久しくて」みたいな人が多いんですよね。
すごく悔しくてですね(笑)。私自身は、プログラミングという活動から絶対に離れないようにしようと思っていて、今でも「GitHub」でmatzっていうアカウントで活動しています。
GitHubって知っていますか。活動すると緑の点がついて、いっぱいコミットすると緑が濃くなるんですね。なので、できるだけ毎日緑になるようにということを目標にして、「1日1コミットはしよう」みたいなことを考えて今でもがんばって活動しています。もう2年以上かな。毎日1コミットがんばっていますけれども(笑)。
ソフトウェア開発の気持ちがわからなくなってしまうとマネージャーみたいな立場になって話しがちなんですが、同士である、ソフトウェアを直接開発する人の立場になって物を考えたいと思っているところもあります。
ソフトウェア開発者として、私は若い頃ずっと「良いものを作ればソフトウェアっていうのは広まる、ひいては成功する」と考えていたんですね。
大学卒業して、ソフトウェア会社に就職してプログラマーとして働いていて、ソフトウェアプロダクトを作っている時もずっと「良いものを作れば広まる、いろいろな人たちに見つけてもらって、いろいろ人に使ってもらえて」というふうに考えていたんですね。
実際に自分で「これこそが私の理想の言語だ」みたいな(ことを思える)Rubyというものを作って、それが長い目で見るといろいろな人に使われたので。一番人気っていうわけにはなかなかいかない。PythonとかRustとかに人気や評判とかでは勝てないんですけど(笑)。
そうは言っても、いろいろな人、おそらくは100万人以上の人たちが日々使うようなプログラミング言語まで成長したという意味では、プログラミングデザイナー、プログラミング開発者としては、自分の作ったプロダクトは成功したというふうに言ってもいいと思うので。
「良いものを作れば広まる」ということは長らく間違っていないと思っていたんです。
しかし30年経っていろいろな経験をした後で振り返ってみると、「良いものを作れば広まる」っていうのは、まったくの嘘だというわけではないんだけれども、「完全にこれが真実だ」というわけでもないなと思いました。
どういうことかというと、最初に「良いものを作れば広まる」の前提になる「良いもの」というところ。ここの「良い」っていうのは未定義なんですね。
例えば、「プログラミング言語として良いプログラミング言語」というふうに言った時に、例えば「Rubyが良いプログラミング言語かどうか」というのと「Rustが良いプログラミング言語か」っていう時に、同じ指標で測ることは難しいですよね。「Rustのある機能がRubyにはないからRubyは駄目だ」とか、その逆みたいなことはあまりないんですね。
RustはRustで良いところがあるし、RubyはRubyでいいところがある。英語の慣用句として「アップルとオレンジを比べる」みたいな表現がありますけれども、同じ指標で比べてもしょうがないところがあるんですよね。
つまり、いいかどうかは1次元ではないので、直接比較することはできないんですね。私が今働いているこのソフトウェアがいいかどうかっていうことは、ほかのなにかと比べるのではなくて、その言語なり、プロダクトなりがどういう軸で良いかについて考えないといけないんです。
それは「誰にとって良いものなのか」ということとか、あるいはプログラミング言語の話なので、「どんなプログラミング言語が良いプログラミング言語なのか」とか、そういう感じで“良い”を定義しないと話にならないんですよね。
「なにが良いか」を定義するということは、つまり「私たちは世の中にこういうプロダクトがあったほうが、こういうサービスがあったほうがよいと思うんです」ということを定義するかたちになって。それこそビジョンとして世に示すべきものだと思うんですね。
それを考えると、ビジョンを示しているかどうかというのと、「良いものを作る」の「良い」は、非常に強く結びついているんだと思います。
Rubyの場合は、自分がどんな言語が欲しいのかを考えた上で、その理想みたいなものを詰め込んで、いろいろな言語の機能を持ってきた上でRubyという一貫したフォーマットというか形式とポリシーに合っているかどうか、あるいは合っていなかったら合わせるような変更をした上で組み込んできて、理想を追求したところに良さを示してきました。
こういう「理想の追求」みたいなものが、私がRubyを通じて世に問うた「良い言語」というものだったんですけども、それがある程度共感を得たからこそ、たくさんの人たちが「Ruby、いいよね」と言ってくれて、Rubyを使ってくれたということだと思うんですね。
ということは、“良い”を定義するためには、説得力のあるビジョンを持つ必要があって、「これこれこういうようなもの」を“良い”として世に問う。「その背景にあるビジョンはこういうもので、こういうビジョンに従ってデザインされた言語だからこそ良いものです」というふうなことを言うということですね。
そのビジョンによって、コミュニティに対しての求心力、「そういうビジョンがあるならそれのために集まろう」とか、オープンソースソフトウェアの場合、Rubyはオープンソフトウェアなので「開発に参加しよう」みたいなことになるわけですね。
30年前のRubyは今のクオリティから考えると驚くほど低かったわけなんですけれども、そういう人たちがどんどん集まって、私自身だったりコミュニティの人たちだったりが力を合わせて進歩させてきて、今のクオリティと今の機能のレベルまで到達したわけなんです。
そういうのも、ビジョンを提示した、ビジョンに共感してくれた方が集まってということだと思うんですね。
そういうビジョンがあるからこそ、「そのソフトウェアをどんどん作っていこう」というモチベーションも上がってきたと思います。
なので、ビジョンというのは、ソフトウェアのあり方を導き出すために非常に必要なことなんですね。それも、すごく深く考えないといけないんですよ。
(スライドを示して)このおじさんはヘンリー・フォードさんっていう人なんですけども、ヘンリー・フォードさんの頃は自動車が発明されたばっかりで、世の中の人たちは「自動車が本当に世の中を変えるテクノロジーかどうか」ということに対して、あまり信じていなかったんですね。
当時は道路は舗装されていないし貧弱だし、ガソリン自動車もだいぶ貧弱で燃費も悪いという、今思えばですねだいぶ欠けていたものだったので、これが世の中を変えるソリューションになるかはあまり信じていない人が多かったんですね。
そういう状況でヘンリー・フォードさんが「もし私が人々に対して『どんなものが欲しいの?』と聞いたらほとんどの人は、急いで移動する時は馬を使う時代だったので、『速い馬が欲しい』というふうに言うだろう」というふうに(言いました)。
でもヘンリー・フォードさんは「それがソリューションではない」と。自動車こそが世の中を変えるソリューションだと信じて、人々が表面的に欲しいものじゃないものに対して……。まぁ、ユーザーに直接聞くと、情報的にろくな答えが返ってこないんですよね(笑)。ユーザーは「こんなものが欲しい」と言うんですけど、だいたいの場合それってろくなもんじゃないんですよね。
ユーザーは自覚していないけど、本当はあったら便利なものを提示するのがビジョンなんですよね。馬全盛期の時に自動車を提供するようなものがビジョンであるというわけですね。
そういう意味では、「馬が欲しい」と言ったら「馬を用意します」ではなくて、本質を見抜いて備える必要がある。だから、表面的に良いだけでは十分ではなくて、それ以上のことをしないといけません。
(次回に続く)
関連タグ:
2024.12.20
日本の約10倍がん患者が殺到し、病院はキャパオーバー ジャパンハートが描く医療の未来と、カンボジアに新病院を作る理由
2024.12.19
12万通りの「資格の組み合わせ」の中で厳選された60の項目 532の資格を持つ林雄次氏の新刊『資格のかけ算』の見所
2024.12.16
32歳で成績最下位から1年でトップ営業になれた理由 売るテクニックよりも大事な「あり方」
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
PR | 2024.12.20
モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.18
「社長以外みんな儲かる給与設計」にした理由 経営者たちが語る、優秀な人材集め・会社を発展させるためのヒント
2024.12.17
面接で「後輩を指導できなさそう」と思われる人の伝え方 歳を重ねるほど重視される経験の「ノウハウ化」
2024.12.13
ファシリテーターは「しゃべらないほうがいい」理由 入山章栄氏が語る、心理的安全性の高い場を作るポイント
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
Climbers Startup JAPAN EXPO 2024 - 秋 -
2024.11.20 - 2024.11.21
『主体的なキャリア形成』を考える~資格のかけ算について〜
2024.12.07 - 2024.12.07
Startup CTO of the year 2024
2024.11.19 - 2024.11.19
社員の力を引き出す経営戦略〜ひとり一人が自ら成長する組織づくり〜
2024.11.20 - 2024.11.20
「確率思考」で未来を見通す 事業を成功に導く意思決定 ~エビデンス・ベースド・マーケティング思考の調査分析で事業に有効な予測手法とは~
2024.11.05 - 2024.11.05