ロボット開発とWeb開発で感じた違い

IVRy Advent Calendar 2021 【7日目】
今日はエンジニアの小瀬が担当して書きます!
割と大きいテーマになってて自分で苦しんでるんですが、今回はゆるっと思ったことを書いていこうかなと思います!(ハードル下げ)


自己紹介

始めまして。電話自動応答サービスIVRyを開発しているエンジニアの小瀬です。IVRyは立ち上げから携わっています。


僕は元々、LOVOTというロボットの開発をしていました。シリーズA前から、発表、発売、発売後、と約5年間ロボットと向き合っていました。

そんな僕がWeb開発をやってみて感じたことを言語化してまとめていこうかなと思います! 

プロダクト作成の違い

IVRyの場合、着想からプロトタイプ作成まで1日で作成できました。(最初はweb画面なかったけど)
サーバーもAWSなどのクラウドサービスを使えば一瞬で環境が用意できます。
その後、初クライアントがつくまでに1ヶ月経ってなかったと思います。このスピード感、せっかちでガシガシ作っていきたいタイプの僕はめっちゃ好きです。
一方ロボット開発の場合、筐体の作成から、電気回路、ファームウェア、OSレイヤー、そしてソフトウェア開発、となるので、まあ一人では開発できません。それぞれの専門の人と、3Dプリンタやその他もろもろの加工作業ができる環境を用意して、やっと始められます。かなりお金も時間もかかります。
ただ、中にはこれらを家で一人で開発してる超人な人も何人かいました笑

メンバーの違い

1番違いを感じたのは、Webサービスは長年培ってきた共通の型があるんだなということです。なので職種も割とわかりやすく区切られている印象で、代表的なのは、デザイナ、フロントエンド、バックエンド、インフラ、といった感じ。型がある分、フリーランスにもなりやすい構造だなと思いました。

ロボットは、作るものによって必要となる人がかなり変わると思います。ざっくり分けると、ハードウェアの開発、ファームの開発、ソフトの開発です。それぞれの分野にまたいろんな人が必要です。決まった型みたいなのはなくて、それぞれ得意なことを持ち寄ってきてみんなでアイデアを出しながら型を決めていく感じすね。

適性の違い

両者で活躍できる人が違うか?は、Noな気がしてます。あの人、ロボットは作れてもwebは作れないな、みたいな人はいかなと思います。
ただ下の項目に書きますが、何を楽しいと思うか、は違うのかなと思います。
色んな人がいて、色んな活躍してるよねっていうのはどっちも同じですね!

楽しさの違い


web 開発の面白いところは、アップデートや機能追加が活発にできることとです。ロボットの場合は筐体が決まってから、例えば新しいセンサーを追加しようとか、CPUを変えようとか、って言うことはかなり難しいですが、webの場合は拡張が自由なのでずっとアップデートできます。
あとwebの場合は仕様検討から実装までが早いので、プロダクトのことを考えて作業をする人にとってはとても楽しいです。
逆に切られた要件をこなしてる人は、web開発は途中で飽きるんじゃ無いかなと思います。

一方、ロボットの場合は圧倒的ロマンに溢れています。苦労して苦労して作ったものが物理的に動くのは本当に嬉しいです。効率よく仕事こなして稼ぐぜ!っていうのではなく、少年の心で開発に取り組む人が多かったように思いますし、そう言う人が長く続いている気がします。

難易度の違い

ロボットの難しさはまず開発そのものです。要件を決めたとしても実現までに持っていくのが大変です。幅広い知識も設備も必要なのでかなり敷居が高いです。

一方、webの難しさは開発よりも、レッドオーシャンの中での差別化かなと感じてます。極論、httpで見れるもの全てがライバルです。無数にあるプロダクトの中で、面白いものを作らなきゃいけません。その点、ロボットは独自プラットフォームなのでそもそも被りはないですし、そもそも開発している数も多く無いです。
あと、webサービスはプロダクトが成長すると到底追いつけないレベルまで構築されてしまうので、個人レベルでは太刀打ちできなくなります。
webって敷居が低いのに、敷居が高いなって感じます。

開発言語とフレームワークの違い

ロボットの場合は、どこかしらにコンパイル言語が必須です。主にC言語とか。
LOVOTみたいにリッチなCPUが入っているとpythonでも動きます。なのでLOVOTはAIエンジニアとかが簡単に実装できるプラットフォームになっていました。フレームワーク?的なものに、ROS(Robot OS)っていうものがあります。ROSについては下記を。(LOVOTでは最終的には使ってませんが)

一方web の場合は扱う人が多いので、その共通言語になっているフレームワークの進化はすごいなと感じました。
例えば僕が扱っている ruby on rails は、コマンド一つでもうwebページが見れるような状態になっています。最初これのせいで、どういう仕組みで動いているのか全くわかりませんでした笑

開発フローの違い


ロボットの場合、開発レイヤーが広いので、人数が最小限チームだとどうしても属人性が高くなってしまいます。
一方、webの開発は共通技術が多いので、属人性は低いです。今後社員が増えたら、チームでタスクをとって全員でこなすみたいなスクラム開発をやってみたいなと思ってます。

あと、ロボットの場合低レイヤーだと1スプリントで成果を出すのが難しいので、ウォーターフォールっぽくしないと仕方ない面も多くあります。

QAの違い

webの場合、CI/CD だけでかなり完成度が高いテストを作ることができますが、ロボットの場合はCI/CD だけでなく、どうしても人間による実機で確認が必須です。この作業がとにかく大変です….(感謝)
ただ、IVRyの場合は電話が絡むため、テストだけでの担保は難しく、実際に電話をかけてQAする必要があります。この作業も大変です….(感謝)
たまに通信障害とかも発生するし、色んなタイプの電話回線や電話機が存在しているので、IVRyに関してはエラー特定が難しい場面が多々あります。

考え方の違い

ロボットの場合、センサーなどの制約条件からアイデアを出すことが多いですが、webの場合は広い海原のなかからアイデアを出さなければならないです。いずれにせよ、勉強は必須ですね。笑

ツールを決めるのも、webだと料金や機能を比較して決めて、合わなかったらやめるだけですが、
ロボットの場合、例えばセンサーを決めるのは、お金と性能とサイズと電力とさらに調達の兼ね合いもあるし、本当に難しいです。一度決めたら腹を決めてそのセンサーを使いこなすように頑張ります。
僕は、細かいことは置いといて、Try And Error(Error多め)する 派なので、webはそう言う意味だと助かります笑
あと大体のwebサービスは、お金や個人情報が絡むし、IVRyの場合は電話も絡むので、その点ローンチのプレッシャーは大きいです。ここはError 多め許されないので、慎重に頑張っています。笑

まとめ

アドベントカレンダーかかなきゃ!っていうことでざっと書いてみましたが、書き始めると筆が止まりませんでした笑
僕はどっちの方が良いとか思ってなくて、優劣が無いように書いたつもりです。どっちの世界にもすごい人がいてどちらも奥が深い世界です。
多分これ以外にももっと違いがあると思うのですが、今日はこの辺で!

この記事が気に入ったらサポートをしてみませんか?