2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
リンクをコピー
記事をブックマーク
石黒卓弥氏(以下、石黒):「開発チーム、一言で言うとどんなチームですか?」という質問なんですが、では順番で10X石川さんからお願いしてよろしいですか?
石川洋資氏(以下、石川):うちのチームは一言で言うと、仕事がめちゃくちゃ進むチームです(笑)。どういうことかと言うと、メンバーにはけっこう自立してどんどん仕事を前に進めてほしいというのは徹底して伝えていて。その状況の中で、問題ってすごくたくさん出てくると思うのですが、問題をある程度言語化しておくと勝手にみんな仕事を進めてくれるなっていう感じで、仕事がたくさん進むチームです。
石黒:いいですね。仕事がたくさん進むチーム(笑)。じゃあLayerX榎本さん、お願いします。
榎本悠介氏(以下、榎本):ごはんがススムくんみたいな感じですね(笑)。一言で言うとアニマルです。みんなすごく好奇心が旺盛というか。
かなりドメイン知識が求められるんですよね。証券の例をひとつとっても、僕はなにひとつ証券のこととかわからなかったんですけど、とりあえずゼロから勉強するしかないっていう感じで。言われずともどんどん本を買って勉強して、なんならヒアリングを勝手に設定して、どんどん学ぶし教え合うし、突破していくみたいな。
そういうかなり突破力のあるチームだなと思います。なので、すごく技術的にこうっていうよりか、事業を作っていくのを楽しみながらどんどん進められるチームだと思います。
石黒:仕事が進むチームとアニマルなチームということですね。では2つ目いきましょう。ポンポンいきますね。今日はもちろん、BizDevの方もいらっしゃいますが、ディベロッパーのみなさんがほとんどで、やっぱり開発系の質問が多かったんですが。
会社紹介の中でも石川さんから回答がありましたけれども、「開発環境や言語選定の特徴があれば、考え方を含めお聞きしたいです」という質問です。Dartを使用することについてのコメントが3名くらいからあって、こちらもピックアップしていますので、これも10X石川さんから回答をお願いします。
石川:まず技術の選び方ですが、基本的には開発が生産的に進められるとか、システムが安定するとか自分たちが得たいメリットを得られるかどうかを中心に考えています。
10Xが現在開発しているStailer(ステイラー)の場合はクライアントもサーバーもDartなんですけど、これにはそこそこ事情がありまして。まずもともと前プロダクトのタベリーは、モバイルのほうはNativeで、iOSはSwiftで、AndroidはKotlinで書いていたんですね。サーバーサイドはGoを使っていました。そこからStailerにいくときに、両方Dartになったんですけど。
それにはそれなりに意図があります。まず背景をちょっと共有しますと、うちのチームの場合、僕もソフトウェアエンジニアに入れるとすると7人のチームで今開発を回しています。もう少し前は6人だったんですが……。そういう少ない人数で開発していく中で、役割を分けないのは、僕らが取っている戦略のひとつです。
前のタベリーの状態だと、僕もiOSを書くしAndroidも書くしサーバーも書くという状態でした。そういうスキルセットのメンバーが全員だったんですね。全員、iOSも書けるしAndroidも書けるしサーバーも書けるっていう状態になっていて。
そういう状況においてどういうタスクの割り方をするかと言うと、ある1人がiOSをやって、もう1人がAndroidやって、もう1人がサーバーをやるというのは、まったく非効率なので、基本的に1つの機能に関わるものは全部1人でやるっていうスタンスを取っていました。
そういう状況においては、iOSとAndroidが分かれているのは普通に不便なことなんです。もしそれぞれのプラットフォームに1人ずつアサインできるのであれば、それはそれで別々の言語で書かれていてもぜんぜんいいと思うのですが。
うちの場合は少人数でなおかつ複数の役割を1人でやるというスタンスを取っていたので、これはクロスプラットフォームにいったほうがいいだろうということで、まずFlutterを採用しています。FlutterなのかReact Nativeなのかは、また議論があるポイントだと思うんですけれども、我々の場合はFlutterを選びました。
もう1つ、サーバーですね。サーバーでDartを使っている会社を僕はまだ見たことないんですが(笑)、我々は採用しました。どういう理由で採用したかと言うと、サーバーはGoでいいじゃんって思うかもしれないですけど、我々はまずサーバーの言語をGo以外にするというところからスタートしています。
Goはいろいろな場所で活躍していますし、なんでもGoでいいじゃんって思うかもしれないですが、アプリケーションのビジネスロジックを表現するにあたっては、言語仕様が足りないという判断を我々はしました。
それはいろいろなところにあるんですけど、代表的なところだとnullabilityとか、mutabilityとか、そういうところが表現できないのは、ビジネスロジックを表現する言語としては少し不足があると思いました。
それがビジネスロジックではなくて、もっと別のところとか、もっと低いレイヤーのところとかだったら十分というか。実際にすごい実績もありますし、フィットしていると思うんですけど、アプリケーションを記述する言語としては、必ずしもそれがベストではないなという判断で、Goをやめるというところからスタートしました。
じゃあGoをやめて何やるの? というのはいろいろ選択肢があって。SwiftとかKotlinとか。僕はSwiftの本とか出しているんですけど(笑)、Swiftは言語としてはすごくいいですし、Kotlinも同じくらいよい言語だと思っています。
でもそういう中で、Goのことを振り返ってみると、Goってすごく開発環境が自由で、安定していて、スケールしてもデメリットを受けにくい言語なんですね。なんでかと言うと、ツールチェーンがすごくしっかりしているからです。
サーバーサイドの言語を選ぶうえで、IntelliJを選ばなきゃいけないとか、Xcodeを選ばなきゃいけないというのは、僕は受け入れるべきではないなと判断して、SwiftとかKotlinは外しました。同じ理由でScalaとかも外しましたね。大きい規模になったときに、コンパイルの速度で活動ができなくなるのは、我々としてはちょっと受け入れたくないな、という判断をした感じですね。
そうなってくると、残るのはだいたいTypeScriptとかだと思うんですけど、この言語を選ぶころには、すでにFlutterの採用は決めていました。Flutterのツールチェーンがどういう動きをしているのかはよくわかっていて、Dartも実はいけるなということに、途中で気づいたんです。
Dartを選んだというのは、ある意味Flutterに引きずられてDartを選んだところもあると思います。TypeScriptでやっていても、たぶんデメリットはなかったんじゃないかなとは思うんですが、今となっては、クライアントとサーバーで同じ言語の資産を使えるのは実際メリットがあるなと思っています。
もちろん同じ感覚で書けるようなものではないのですが、例えばリンターが同じとか、そういう言語のプラクティスを引き継げるっていうのは明確なメリットとしてあると思います。まあそんなわけで、ちょっと言語の話になると長くなっちゃう(笑)。
石黒:そうですね。話が急に(笑)。ゾーンに入った感じですかね。
石川:ははは(笑)。
石黒:ありがとうございます。さらにディープな話を聞きましょう。LayerXの榎本さんもお願いします。
榎本:同じ量をしゃべると時間がなくなっちゃうので、さらっと(笑)。この言語じゃないとダメだとか、この言語大好きだっていうよりは、普通に要件を達成できること、採用戦略上とかで弱みにならないような言語というのが基本方針であります。
ただちょっとおもしろいところを言うと、ブロックチェーンを扱っている会社なので、ブロックチェーン側のクライアント・ライブラリの事情とかに引きずられてきたんですよね。Ethereumっていうチェーンを、エンタープライズ側でもQuorumという、それをベースにしたチェーンをけっこう使うことが多いんですけれども、それをまとめるクライアントライブラリがJavaScriptベースのしかなかったりして。
なので、僕は別にTypeScriptがすごく好きとかではないんですけれども、その時点でサーバーサイドはTypeScriptにしておくのが、まあ普通に考えて自然だよねみたいになって。その延長で、けっこうTypeScriptの世界観になっていくみたいなのがわりと今までですね。
ただEthereumベースではないものについては、普通にGolangを使ったりしています。最近R&DチームでAnonifyというオリジナルのプロダクトをリリースしました。ブロックチェーンでけっこう問題であるプライバシーを解決したモジュールなんですが。
それについてはフルスクラッチで、Rustで書いていますね。メモリ管理がしやすいみたいなところで、ブロックチェーン自体をRustで作るムーブメントがあって、R&DチームはRustで作っていることが多いです。
なので事業チームはTypeScript、少しGo。R&DチームはRustみたいな使い分けが主になっています。
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