ハードウェアからサーバ・アプリまでワンストップで開発

第8回 手を動かすことの意味

弊社は何を目指しているのか

弊社のブログを見ると、実にいろんなことをやっていることがわかると思います。

これは私達が「手を動かすことには意味がある」と思っているからです。

「技術閑話」としてはちょっと毛色が違うかも知れませんが、どうしてそういったことをするかという話を書いておきたいと思います。

私達のやりたいこと

私達はいろんなことを実際にしています。そして、その結果はブログのエントリにしています。

ここのブログを読めば、おそらく多くの人が「こいつらはいったい何をしたいのだ?」と思うかも知れません。「技術的エントリ」の範囲は広いですし、「アチャールの作り方」が日常話かと思ったら技術エントリだったり。

私達がやりたいことはシンプルです。「ものを作りたい」ということです。そしてそれは何が目的かと言えば、「ビジネスのため」です。

ものを作りたいので、

  • 勉強(座学)をします
  • 作ってみます
  • お金にする方法を考えます

そして、それらを実際に手を動かしてやっている。その成果の公開が、ここのエントリたちです。

もうちょっとブレークダウンしたことを書けば、私達のビジネスは

自分達の作ったものを販売すること

にあります。

そのために、

  • 販売する能力を身につける
  • 作る技術を身につける
  • 財務的に安定させる

必要があります。

販売する能力をつけたい

販売する能力を身につけるためのエクササイズの一つとして、「しまパン」の販売をしています。もちろんそれは単なるエクササイズではなくてちゃんとしたビジネスです(小さくありません)、そのため

  • 市場調査
  • 商品や仕入先の開拓
  • 在庫管理
  • ブランド維持発展

などなどがあり... ということをしなければなりません。

弊社は小さな会社ですから、これらを効率良く少人数で行わなければなりません。そのためには、IT化機械化等を行う必要があります。近頃は人工知能も使えて、いろいろ便利になりました。

我々は元がIT屋ですから、IT化というかDXは得意なはずです。よく「紺屋の白袴」という話がありますが、弊社は少人数であるがゆえに、この辺をちゃんとやって行く必要があります。むしろ、ここで作ったシステムやノウハウを顧客に提供するくらいのつもりで作っています。そういったこともあってHieronymosをコアにして、Amazon FBAにある在庫の管理と広告管理のシステムを開発したりしています。

ブランドの維持管理のためには、ちゃんと商標登録を自分達でしました。もちろん専門家に依頼するという道もあるのですが、自分達で商標登録について学べば、どう運用するか、どう維持するかということが身につきやすいだろうという考えです。また、依頼するのと自分達でするのとでは費用がまるで違うわけで、廉価に登録することができるのであれば、比較的気軽に登録してしまおうと考えることができるわけです。後で述べるJar-Gardenもその勢いで登録してあります。守るべきブランドがあるわけなので、登録しておくことは大切ですからね。

もちろん「餅は餅屋」ですから、難しい案件であれば「餅屋」に出すわけですが、その時でも自分達でやった経験を持っていれば、より解像度高く依頼できてスムーズに話が進むだろうと思います。単に知識で持っているだけじゃなくて、実際にやってみた経験を持っておくのは大事だなと思っています。

仕入れして販売しているに過ぎない「しまパン」ですが、Amazonで在庫を切らせない(切らせると表示順位が下がります)ためには需要予測をして在庫数量を維持して... と結構な手間がかかります。売れスジが在庫切れしてしまっては商機を逃すことになりますね。

また、商品にはOEMで作ってもらっているものがあります。OEM先を見つけたのはAlibabaなんですが、それも実際にAlibabaから仕入れている時に発見したものです。

値付けには結構苦労しました。最初は仕入れの安さに釣られて極端に廉価に販売していたのですが、そうするとFBA(Amazonで在庫して送ってくれるシステムです)の手数料が出なくて赤字になったりします。AmazonとAliExpressにある価格差の意味が理解できたりしました。

というように、単純に販売するだけでも結構いろんな学びがありました。

作る能力をつけたい

この画像、フリー素材じゃなくてMayumiの机の上で撮ったものらしい

我々、元々がエンジニアですから、作るということは元々得意なはずです。

ですから、同じようなものを作り続ける限り、そんなに新しいことをする必要はないと思いがちですし、実際そうしている会社も少なくないだろうと思います。

とは言え、この世界の常として技術は常に進化しています。「同じもの」を作っていても、基盤となる技術が変化して行きますから、少なくともこれに追従する必要があります。フレームワークが変わったり開発言語が変わったり。実行環境も変化して行きますね。これらに追従できないと、プロダクトがレガシー化してしまいます。

また、流行りの技術も変わって行きます。20年前の流行りはドットコムであり、10年前の流行りはIoTであり、そして今は人工知能が流行っていますね。

もちろん今でもインターネットを使ってのシステム開発や運用は廃れてはいませんし、IoTもhype cycle的には幻滅期らしいのですがむしろ定着しているとも言えます。人工知能は凄い効果があるっぽいですが、まだお手軽に使えるところには届いていません。ですから、何も流行りに追従する必要はないとも言えます。

他方、弊社のような馬力のない会社では、既に定着して評価の定まった世界ではそれほど強みが発揮できません。既に評価の定まった技術の世界では、新しい技術を駆使できることよりは、人的にも財務的にも安定した馬力のある方が期待されます。つまり「開発力」という言葉に期待されるものは、技術の置かれているフェーズによって変化するわけです。初期には「その技術を駆使できる」能力が期待され、安定期には「実用規模のシステムが作れる」能力が期待されます。弊社のような馬力のない会社が生きて行くためには、「新しい技術を駆使する能力」が必要となり、そうなると「新しい技術」をうまく使えるようになるための努力が必要になるわけです。

とは言え弊社のように物凄く尖った技術を持っているわけでもない、「せいぜい10人並の能力」しかないところがそういった市場で生きて行くためには、

合わせ技

が使えることが大切になります。つまり、単一の技術力の高さのためには絶対的な技術的優位性が必要になるのですが、複数の技術を組み合わせた高さとなると、絶対的な技術的優位性よりは組み合わせる能力の方に価値が出て決ます。あることをするのに必要な技術がAとBあった時、Aが凄く得意な会社がBが得意とは限らず、逆もそうである可能性もあり、そうなるとAもBも凄く得意じゃないけど「そこそこはできる」方が優位に立てる。そういったことはしばしばあります。弊社が目指すのは、実にその辺です。

そして、そのためには「そこそこ以上に使える技術をどれだけ持っているか」が問われることになります。合わせ技で戦うためには、「技術的手駒」を多数持つことが必要になるわけです。弊社が様々なことに手を出すのは、実にこの「技術的手駒」を増やすためでもあります。まぁ好きだからでもありますけど。

技術的手駒も脈絡なく手を出すわけではありません。基本的には「地続き」なものをやって行きます。今までやって来たことの延長にあるものを、もう少し先までやってみるわけです。そうやっていると、最初は「点」だったものがつながって「線」になって行きます。そうして一続きになると「フルスタック化」ができます。

フルスタック化ができると、まるっと自分達で出来るようになります。たとえば、Jar-Gardenのような商品は、機構(筐体)、電子回路、ファームウェア、ウェブサービス等から成るわけですが、これらは全部自分達の技術でやったものです。つまり、IoTの商品の開発がまるっと自分達で出来るわけです。何ならレーザーカッターやCNCも自作です。まぁキットなんですけど。もちろんそれを動かすためのファームをいじったりもやっています。そもそも、Jar-Gardenの理屈の大事な部分は、電子技術ともITとも関係ないところだったりします。

ここまででなくても、弊社が作って公開しているウェブサイトはサーバハードからネットインフラCMSまで全部自作ですし、サイトデザインも自力です。IT業界で言うところのフルスタックなわけです。

全部見通せると、受託案件の商談でも全部見通した話ができます。極端に高度な専門性を要求されるレベルでなければワンストップで打ち合せできますし、高度な専門性を要求されるレベルになれば、その専門家と高いレベルでやりとりできます。つまり、効率良く仕事が進められるわけです。

そもそも弊社はIT屋と言うよりはシステム屋で、その「システム」の構成要素になるものは「もの凄く詳しい」必要はあまりない(それが必要な時は専門家を呼べばいい)ですが、「そこそこ以上」に理解していないと見積り書くことも容易じゃないですからね。

財務的に安定させたい

出来てないから苦労しているわけですけどw

「IT」の適用分野が広くなってしまった結果、かつて「OA」と呼ばれた「業務効率化」のためのIT化だけではなく、それ以外への適用も増えて来ました。そうなると、単に「パソコンで何とかする」以外の世界でもITが必要となりますし、そもそも「パソコンで何とかする」世界も広くなっています。そうなると、何かのシステムを開発する時には、様々な技術が求められるようになります。

たとえば今から「電子カルテ」を開発するのであれば、「音声認識」や「画像理解」が出来ることが求められるでしょう。LLMも必要になるかも知れません。またいろんな診療科に対応するためにはローコードノーコード的なアプローチも必要になります。

Epicとか凄いですね

そうなると、そういった分野に対する知識が求められるでしょうし、「現在使える」となると「理想の姿」とのギャップがあるかも知れません。そうなると、そのギャップをどうやって埋めるかということが考えられないといけません。当然ながら、従来から言われている「業務知識」の他に、そういった新しい技術が入った世界での業務はどうあるべきかとか、そういった方向から提案が出来ないと困るでしょう。

となると、そういったものを見通せる能力が求められますし、その前提として「とりあえず全部の技術はそれなりのレベル以上で理解している」ことが求められます。前節で言っている「合わせ技」が必要になるわけですし、それであれば弊社の活躍の場もあるということです(弊社に電子カルテが作れるという話ではありませんが)。

弊社のような零細企業が下請けでない仕事を得るためには、他社が真似しづらい特色のある提案ができることが必要であり、そのためには技術的手駒を増やすことが重要になるわけです。「今どきの新しいもの」はハードウェアやメカが絡むものが少なくありません。ドローンやロボット、IoTの諸々。ソフトウェアだけで勝負すると、勝負できるフィールドを拡げられません。そういったものも含めて「何でもできます」と言えるのは心強いと思いますし、普通のソフト専業の会社には出来ないことです。そういったことであれば、独自性が出しやすいということです。

また、財務的に強くない環境で独自商品を開発する場合、開発費を低く抑えたくなります。その時に「少なくとも試作レベルであれば自力でできる」ということは意味があります。試作開発のレベルはコストもかかればリスクもあります。すぐに「自社開発商品が商売になる」ことは難しくても、「そういった開発を気軽にできる」ということはチャレンジの機会を増やすことにつながりますから、「下手な鉄砲」戦略が取りやすくなります。

これは実はハードウェア絡みのことだけではありません。「しまパン」のところで在庫管理システムの話を書きましたが、これは実は当初はNocoBaseで作っていました。日本語対応とか作ったのもその過程です。そこそこいい感じのところまで出来て喜んでいたのですが、弊社にとって大事なところの対応がイマイチだったので、Node.jsで作り直したという経緯があります。そういった開発事情はさておき、こうやって手軽にそこそこのものが作れるという「技術的手駒」を持っているのは、チャレンジの機会を増やしてくれますね。

手を動かすということ

今は何でもネットに情報がありますから、いわゆるノウハウに含まれることも文書化されてネットに落ちていたりします。ですから、何も自分達で何から何までする必要性は下がったと言えなくもありません。

それでもやはり私達は自分の手を動かし自分の手を汚すことを怠りません。それは

必要だから

です。

手を動かすと得られること

実際のJar-Garden

自分で手を動かすと、本当に手を動かした人にしか出来ない経験ができます。つまり、生きた経験です。

内容はごくごくつまらないことであったり、教科書に出ているようなことかも知れませんが、それを実際に経験できます。「教科書に書かれていたアレはこーゆー意味なのか」という発見ができます。人間は悲しいかな経験からしか学べないようなので、いくら座学で学んだものであっても経験しないと身にはなってくれません。まぁそうやって試行錯誤することは、物づくり好きには楽しいってこともあるのですけどね。実際にやったことのある人にとっては「あるある」であっても、座学しかしてない人にはわからないことは沢山あります。あげくに「結果論だ」とか言われてしまう。いや、結果を知っていれば知らない人にとっての結果論も「既に常識」ですってば。

また、これに付随して実際に手を動かすと教科書に書いてないことを学ぶことができます。一言で「教科書に書いてないこと」と言っても多様なのですが、そのことを身につけていないと実務は出来ないわけです。もちろんたいていのことは「一つの教科書には書いてないけど別の教科書には出ている」のですが、十分なカバー率となるまで教科書を読まなければならないですし、これは本質的には悪魔の証明に等しい問題を持っていることでもあるので、過剰に教科書を読むよりは実際にやってしまうなりシミュレーションするなりの方が早かったりします。

また、自分で手を動かして作るものが、最初から完全なものになることは凡そありません。たいていは失敗をします。その失敗は当然分析されて原因を探り... として再トライするわけですが、その過程で得るものは貴重です。と言いますか、私は

能力とはクリアした失敗の数

くらいに思っています。手を動かせば失敗をする。それでしか得られない養分があります。

また、言うまでもないことですが、自分で自分の手を動かすことはタダでもできます。もちろん会社でやるわけですからコストを計算しなければならず、実際に「タダ」というわけには行きません。そのための設備も必要です。しかし、試作段階から一々他人に頼むことを思えば圧倒的に低コストでできます。PDCAのサイクルが速く回せるということも併せれば、多少の設備の費用を考えても十分安くできます。逆に設備等の費用の方が高くつくものは頼んでしまえばいいだけなので、「費用の最適化ができる」という言い方の方が良いかも知れません。

このことは、試してみることへのハードルを下げますし、try and errorの試行回数を増やせます。try and errorにはコストがかかりますが、ここのコストが下げられることで「馬力」に対する依存度が下げられます。要するに「試作がやりやすい」わけです。

つまり、自分達の手を動かすことによって、

  • 貴重な経験ができる
  • 能力を高められる
  • 試作がやりやすい

わけです。

得られたことをどう使うか

そして、そうやって得たものは、自分達の経験値として積み上げて行くだけではなく、次の工程に活かすことができます。

やるべきことに高度なことが要求されるようになったり、規模が大きなことをしなければならなくなったりすれば、より専門性の高い人達にお願いしなければなりません。ハードウェアであれば工場を動かすことが、ソフトウェアであればプロダクションコードを作ることが必要になります。試作品を頑張っていっぱい作っても商品にはならないのです。

Jar-Gardenの例で言えば、我々の能力では規模の大きな量産ができません。金属加工も木工も、我々の持っている設備では試作はできても量産はできません。プリント基板についても「これが完全である」とか言うほどの自信はありません。ですから、試作を超えた規模の量を作ることになれば、必然的に外部の業者に委託する必要があります。

Jar-Gardenの内部

その時に、自分達で作った経験を持っていれば、その経験を土台にした打ち合せなり発注なりができます。試作と量産ではやれることに違いがあったりしますが、妥協点を探るためには自分達で作った経験を持っている方がスムーズです。同じことは回路や基板設計にも言えるでしょう。「自分達でやった試作の経験」は「他人に頼む量産」の時に活かすことができます。過度に自分達の経験を主張しても「半可通は黙れ」と言われるだけでしょうけど、

話の通じやすさ

は大事なことです。自分達が手を動かしたという事実は、「次の段階」をスムーズに進める元にもなるわけです。また、「失敗の経験」は話を盛り上げるネタにもなります。実際にやったことある同士にしか通じない世界があります。そしてそれでしか得られない信用もあります。

多くの場合、試作で作ったものは製品にするためのステップが必要になります。その時に実際に試作をした経験を持っていれば、製品化のための知見として活かすことができるわけです。量産化のために妥協した部分を試作品に適用して確認してみる必要もあるかも知れません。自分達で試作していれば、それは容易にできる可能性があります。

再びJar-Gardenの例で言えば、どんな木材が使えて、どの木材にはどんな留意点があって、その木材はどんな経年変化をするか。加工する刃物の持ちはどうか、失敗率はどうか、加工精度はどこまで出せるか... 大量の経験や蓄積があって、それらを量産する人のノウハウと組み合わせて、スムーズに商品化するわけです。その過程で「素敵な材料だけど量産には向かない」という判断になった木材もあります。どれだけ「餅は餅屋」と言っても商品を作るにあたっては限界があるわけで、そこを補うのが我々自身が手を動かして得られたことになるわけです。

まとめ

このように、弊社は広い範囲の技術の習得の必要を感じていて、それを効率的に習得する手段が、実際に自分達の手を動かして試してみるということにあると考えています。

また、広い範囲の技術の習得も、単なる手当たり次第というわけではなく方向性を持っていること、そしてそれは「合わせ技」のためだということもご理解いただけたかと思います。なので、闇雲に何でもやっているわけではありません。

そしてこれらのことは程度の違いこそあれ、「新しいものを作って商売したい」と思っている人達にとっては必要なことではないかと思います。実際に

自分で手を動かさないと得られない養分がある

のだと思っています。

最近のエントリー

Hieronymusのインボイス番号対応について

会計システム「Hieronymus」の現状

OrangePi5にZabbixをインストールする

レビュー等の依頼について

オープンソースのノートアプリ「SiYuan」 - CasaOS AppStoreレビュー

お気に入りの色さがし1

創立記念日

現在の営業品目(2)

現在の営業品目(1)

SPDX License Listをデータ化した

Orange Pi5でC3TR-Adapterを試す

CasaOS上で会計システム「Hieronymus」を動かす

会計システム「Hieronymus」v1.0.0 リリースしました

CasaOSでファイル同期アプリSyncthingをセットアップする

第11回 Freshmeat

オープンソースノーコード「Activepieces」でワークフローを作る

RaspberryPiにパーソナルクラウドOS「CasaOS」を導入する

sequelize-cliでdb:migrateすると「SyntaxError: Unexpected token ':'」が出る

LED行燈の試作(2)

CMSの社内向けサービスのリニューアル