「クリーン・アーキテクチャー」という本を読みました

言わずと知れた有名な本ですよね!

設計とアーキテクトは一緒の意味。

クリーンなアーキテクチャーを作ることが早くソフトウェアを作るために必要、という話が冒頭にあります。

いや、本当にそうなんですよね。

人数がいくらいようと、微妙な設計のソフトウェアは生産性が地に落ちてしまいます。

なので、とにかく設計が大事です。

ただ、私は経営者でもあるので、市場に投入するスピードも必要だということも理解しております…。

ここは本当にジレンマなんですが、要はバランスとしか最終的に言えません。

あまりに設計がずさんなものは、いくら早くてもリリースしないほうがいいですし、かといって設計にこだわりすぎてリリースがずっとできないというのも問題なんですよね。

リリースしてから気づくビジネスニーズというのはよくあることで、そのために設計を直さないといけない、ということもよくあることです。

多くのプログラマが間違ってとらえている話があるそうです。

「システムが動作することと、簡単に変更できることとどちらが大切か?」

多くの人が、動作すること、と答えるでしょう。

しかし、簡単に変更できることの方が重要だと筆者のボブおじさんは言います。

完璧に動作するが、変更できないシステムと、変更できるシステムだったら、後者の方にバリューがあります。

まー、そりゃそうですね。

後者は動作するようにすればいいわけですからね。

 

私も、19年近くプログラミングをしていますが、本当に設計が大事です。

これがおろそかにされていたら、プログラマーは常にバグと戦わねばならず、プログラマーの仕事のほとんどがバグと戦う仕事になってしまいます。

なので、あるプロジェクトが後半になってきたとしても、設計に問題があるとなれば、ウチではリリースを延期することもやむを得ないと私は思います。

 

さて、この本については多くの人が解説を述べていると思うので、ここで詳細を書くのはやめにして、私が特に心にとめておきたいことだけ抜粋しておきます。

①安定した抽象に依存すること

コード本体もそうだけども、画面などの変わりやすいものにテストが依存しないようにする。
テストを直すのが面倒すぎて、画面を直したくないという事態になる。
②フレームワークを選択するのは結婚、不平等な契約である。
③SOLID原則を大切にする。
特に、オブジェクト指向の一番の良いところは、SOLIDのDにあたる、依存性逆転の法則が使える、というところだという視点は目から鱗でした。
④ソフトウェアアーキテクトはプログラムを書き続けないとダメ
そうですか…。でも、これめっちゃわかります。。。
実は、私は2年前ぐらいまで、第一線でコードをあまり書いていない時期がありました。
結果、あんまりよくない事態に終わった気がします。

 

 

画像アップロード機能をリリースしました

先週金曜日、次のプレスリリースを発表しました。

スマホで写真やバーコード情報を運転日報に添付できる機能をリリース

https://www.value-press.com/pressrelease/348447

久々の大型機能のリリースです!

レシートの画像を読み取って文字にし、日報に添付する操作イメージ

ODINアプリ:レシートの画像を読み取って文字にし、日報に添付する操作イメージ

 

今回はですね、端的に言いますと、ODIN リアルタイム配送システムの運転日報に画像をつけられるようになった、ということです。

結構多い話が、

「高速代、ガソリン代を庸車に頼んでいるので、その経費精算をしたい。
エビデンスとしてレシートの写真がほしい。」

とか

「荷物を受け取る人がいることもあるし、いないこともあるので、納品した写真を撮っておきたい。」

とか

「作業したので、その写真を日報に記録したい。」

とかの場合に、写真と、その写真の位置情報があれば便利!というわけです。

画像があれば、日報の説得力がかなり増します。

多くのお客さんからご待望頂いていた機能でした。

なので、やっとリリースできたことが大変嬉しいです( ˊᵕˋ )

 

で、画像がつけられる動態管理製品は他にもあると思うんですけども、ODINはそれだけじゃないんですよ!!

AIによる画像認識で、文字が読み取れたり、バーコードがスキャンできたりするんです!

これは文字で説明するのは難しいので、動画にしました↓

 

詳しくは、プレスリリースを見て頂きたいと思います。

 

さてさて、開発ウラ話です。

今回はWeb側を設計を私が行い、実装は新進気鋭のS君+M君、Androidアプリを不肖私が実装させていただきました。(๑•̀ㅂ•́)و✧

実は、もともと画像アップロード機能というのはODIN内にあったんですが、特定のお客様だけが使っていて、それを今回他のお客様も使いやすいようにしたという流れなんです。

なので、一から開発ではないので工数はそれほどはかからない… 予想だったんですが、既存の機能は古い部分もあったので、API、アプリ関係は作り直した部分も多くなりました。

結局開発に4~5人月ぐらいはかかりました。

 

今後の展開としては、画像を配送先の軒先情報として活用できたりする予定です。

この機能にご興味ありましたら、コチラからお問い合わせください!( ˊᵕˋ )

 

 

 

停滞検知機能を強化

ODIN リアルタイム配送システムの機能強化についてお知らせです。

 

ODINには、「停滞検知」 という機能があります。

どんな機能かというと、一定時間どこかに止まっていた場合、管理者さんにお知らせが来る、という機能です。

弊社の動態管理機能で、今どこに誰がいるかはもちろんわかりますし、記録も残るので、どこにいついたかもわかるんですが、ずっとは見てられないですよね。

なので、ODIN 動態管理では、止まっていた時間・場所をピックアップして知らせたり、記録に残すことができるんです。

これ、大変人気のある機能なんですよ!

 

以前からあった機能なのですが、9月に「停滞検知」をしない時間を設定できるようにしたり、無視するステータスを設定できるようになったんです!

ですが、9月にこのアップデートをした際に、お客様から

「メールを送る先を細かく設定したい。」

というお話があり、そのためのアップデートも10月25日に行いました。

 

派手な機能強化もいいんですが、こういう細かい使い勝手が、結局長い目で見たお客様の利便性にかかわっていくんだと思います。

ココ、一生懸命やっていきたいですね。(`・ω・´)

これからも、お客様の声にお応えしていきます!

この機能に興味があればこちらのODIN 動態管理問い合わせページからどうぞ!

トラック イメージ

トラック イメージ

スマホアプリで配送ルートの配送の順番が入れ替えできるようになりました!

なんとなんと。

ODIN リアルタイム配送システムのスマホアプリ(2024/09/15時点 Android版のみ)で、配送計画の順番入れ替え機能が付きました!

パチパチパチパチ。

下記のような配送計画をドライバーさんのアプリで見る画面があるんですが、これをドラッグアンドドロップで動かしたり、消したりできるようになったんですよ( ˊᵕˋ )

動画とかないとわかりづらいとは思いますが、動画はそのうち撮ります!

配送計画入れ替えの画面

配送計画入れ替えの画面 ドラッグアンドドロップとかで入れ替えできます

 

また、マイナーな修正ではありますが、

「配送先が多い計画を見る時に、配送計画の一覧画面を開くと、一番上の配送先が一番上に表示されるのが見づらい!なんとかして!」

というお客様のご要望を頂いていたので、配送してない配送先を一番上に来るようにしました!

これも、配送先に到着したかどうかがわかるODINならではの機能だと思います。

 

しかし、こういうのはお客様の環境でお客様が使ってみて初めて得られる知見ですよね。

現場で使ってみて、初めて細かい使い勝手がわかるというか。

こういうお客様の声を大切にしております。

 


今回はですね、不詳私がこの修正をやらせていただきました!(`・ω・´)

おりしも、実はAndroidのターゲットSDKをアップデートするというタスクもやらねばならず、やることが多めではあったんですが、チームの皆さんの助けがあり、なんとかできました。( ˊᵕˋ )

ODIN リアルタイム配送システムのAndroidアプリも10年前から存在しているので、古い部分もまだあります。

古い部分はJava、新しい部分はKotlin、サーバー側の処理(大部分はS君が書いてくれましたが)はPHPとTS & JS で、5言語を同時に書いたり読んだりするのがだいぶ脳トレでしたね!(笑)

ODIN リアルタイム配送システムはお客様の使い勝手向上のため、どんどん便利になっていきます!

お問い合わせはコチラからお気軽にどうぞ!( ˊᵕˋ )

 

 

 

 

 

若手プログラマーの疑問に答えていく

実はもう16年間ぐらいプログラマーをしています。

まー、本業は社長なので、全部の時間をプログラミングに費やせるわけではないので、実際に16年間プログラミングをしている方と比べたらどうかわかりませんが。

会社に新入社員か未経験の中途さんが入ってくると、私が教えることもあります。

で、大体似たようなことを似たようなタイミングで聞かれるので、まとめてみようと思ってます。

第一弾は、

「スーパークラスかインターフェースか 」

です。

「共通する機能ってスーパークラスに実装するのと、インターフェースにするの、どっちがいいんですか?」

と聞かれることが多いんですよね。

答えはぜひ、リンク先のスライドを見てみてください。(o_ _)o))

 

ちょいちょい書いていることですが、プログラマーはエンジニアかと言ったら、ちょっと違うと思います。

 

難しいことをやろうとしたら、アーティスト的な能力の方が必要になってくるんですよ。

問題を解くのではなく、作品を作るってことなんですよね。

なので、プログラマーとしての良し悪しは、「何を作ったか」につきると思います。

採用の場面で、

「こういうことを勉強してきました」

とか

「前の職場ではこういう仕事をしてきました」

とズラーっと職歴を並べて頂けることもあるんですが、自分の代表作だと思うものを見せてもらったほうがずっと説得力があります。

 

弊社では新卒・中途のプログラマーを募集中です!

ぜひ、コチラからご応募ください。( ˊᵕˋ )

 

 

 

位置情報が取れないときに原因がわかる機能が追加!地味だけどこれは効く

アプリログ機能、という弊社のODIN リアルタイム配送システムのスマホアプリのログが管理画面で見れる機能が誕生しました!

パチパチパチパチ。

どういった機能かというと、アプリのいろんなログが管理画面で見れるという機能です。(さっきと同じこと言ってる)

うわー、地味!!

配送計画がサッと作れるようになりましたとか、行動検知ができて、ドライバーさんが運転中かどうかわかるようになりました、とかと比べてめっちゃ地味ですよね。

しかし、これは結構大切な機能でして(`・ω・´)

弊社によくあるお問い合わせが

「山田さんっていうドライバーさんの位置情報が更新されてないんですけど~」

というようなお問い合わせです。

しかし、すぐに弊社でもわかりません。

 

というのは、大体のケースで原因は

・そのドライバーさんの持っているスマホのネットワーク接続がない

・電源が切れている

・GPSの設定がオフにされている

などですが、その場に端末がないのでどうにもわからないんですよね。

これは電話をかけてきたお客様も同じです。

なので、従来はここでお手上げでした。

 

が!!!

このログ機能により!

どういう状況なのかが、瞬時にわかるようになったんですね~。(ネットワークがない、電源が切れている場合はログ自体がありませんが、そのことにより、ログが送信できない状態だとわかります。)

これにより、お客様のイライラを解消し、弊社のサポートの品質も爆上がりするんですよ(๑•̀ㅂ•́)و✧

しかも!!!!

これ、お客様にも見て頂ける画面にあるので、お客様がログを見ていろんなことがわかるんです。

見方はこちらに書いてあります。

アプリログ画面 スクショ

【アプリログ機能】ODINで位置情報を取得できない時の分析方法

実は、この機能は社内で反対する人もいました…。(>_<)

理由は

・ログを見るなんて面倒。英語のメッセージとか、絶対に読みたくないからお客様は興味がないはず!

・ライバル会社さんにいろんなことがわかってしまうのでは?

という話でした。

まー、私はユーザーだったら使ってるアプリを使い倒したいときはこういうの見ますけどね。

レアな方だとはわかってます。

しかし、私としてはお客様の満足度向上のほうが上だと思いましたので、反対の声を押し切って実装してもらいました。

今、かなり!役に立ってます。

 

こういう直接的な機能じゃない機能って結構大事だと思うんですよね。

我々の時間を増やす機能なんですよ。

我々の時間が増えれば、結局お客様の役に立つ別のことができますからね!⊂(^-^)⊃

ODIN リアルタイム配送システムへのお問い合わせはコチラからどうぞ!

 

今行こうとしている配送先が指定できる機能ができました!

これはですね、ちょこっと地味な機能ですが。

大切な機能なので、書いておきます。

弊社のODIN リアルタイム配送システムは、配送業の皆様向けに、スマホの位置情報を使ってドライバーさんが今どこにいるか、何をしているかがわかる機能がついています。

そして、それを使って後で日報を作る機能があります。

日報にドライバーさんがいろんなコメントをつけられたり、報告ができたりします。

そして、そんなのいちいちやるの面倒だよ!と思われると思うので、これGPSを使って配送先の近くにいたら、たとえばA株式会社というところへ納品したとすると

「A株式会社」

というのを自動的に判定して記録してくれるんですね~。

ですが!

お客様の業態によっては、配送先が隣接していたり、場合によっては同じビルに入っていたりすると、このGPS判定がどっちになるかわかりません。

そこで、ドライバーさんがアプリから任意に到着した場所を選択したい、というニーズがずっとありました。

で、今回実装に至ったわけです。

今行こうとしている配送先をアプリから指定することができる画面サンプル

 

昔は、これの実装について難しく考えていたんですよね。

しかし、発想の転換があって、

「ん?これなら簡単に実装できるんじゃね?」

って思いついてできました。

実際に実装してくれたのは、弊社の開発の柱、M君と若手のホープS君です。o(>▽<)o

ありがとー!!⊂(^-^)⊃

 

機能開発って、プレスリリースするようななんか派手なこともそりゃ大事なんですけど、小さな使い勝手を向上していくことも大事だなと思ってます。(`・ω・´)

現在、2024年問題に向けて、導入のお問い合わせを多く頂いております!

お問い合わせはコチラからどうぞ!

 

 

 

業界初!ドライバーが徒歩、駆け足、運転中か確認できる『行動確認機能』をリリース

すすす すごい機能ができました!!!(/・ω・)/

本日下記のプレスリリースを行いました。

業界初!ドライバーが徒歩、駆け足、運転中か確認できる『行動確認機能』をリリース

 

ドライバーが徒歩、駆け足、運転中か確認できる『行動確認機能』

 

この機能にそんなに説明はいらないかもしれないんですが、要はスマホを持っている人が

・歩いているのか

・じっとしているのか

・走っているのか

・乗車中か

が管理者側でわかる、という機能なのです。

業界初です。(弊社調べ)

 

どんな時に役立つかというと、例えば急にドライバーさんに連絡したいと思っても

「車に乗っているときは避けたいな…。」

と思いますよね?それを解消してくれます。

また、配送の業界やチラシ配布などの業界では、「小走り」を義務付けられている場合もありますね。

でも本当に「小走り」状態なのかはわかりませんよね。

それが、これからは把握できるということです。

 

経緯としては実は別の目的で始まった開発でした。
プログラム的な用語でいえば、行動認識というものにあたると思うんですが、それをスマホアプリに実装しようと思ってたんですけど、

「ん?この情報って管理側で見れたら便利では?」

ということになって、急遽できた機能です。

なので、別の目的でこれを実装しようと思っていたほんの初期は、実は私自信がスマホアプリの開発をしてました。

開発の際は会社の周りの廊下を走ったり、歩いたり、走ったりしてました(笑)

いい運動になりました( ˊᵕˋ )

 

実際の実装は開発部の柱、M君が実装してくれました!

ありがとうー!⊂(^-^)⊃

 

この機能はなかなか面白いと思います。

お客様のほうで使えるシチュエーションがいっぱいありそうです。

お問い合わせはお気軽にコチラからどうぞ!

 

【プログラマー向け】社内勉強会を行っております

Kくんの発案で、2月から、不定期に弊社の社内のプログラマーさん向けに勉強会を行っています。

講師は有志。

なんですが、弊社のデベロップメント課の皆さん(プログラマーのチーム)は大変意識が高いので(`・ω・´)

全員がやってくれました!⊂(^-^)⊃

なんとM君は2月~5月で2回もやってくれました。スバラC。

皆さん、やっぱりプログラマーになろうという人は勉強が好きなんですね( ˊᵕˋ )

学ぶことって楽しいですよね~。

私も、日々これ勉強ですし、何かを教えてもらえるってありがたいことです。感謝ですね!

勉強にプラス、社内の人たちが、

「あー、こんなこと考えてるんだ」

とか共有してくれるのは、なんか新鮮な驚きや発見があります。

 

今後も続けていきたいと思います。

弊社では、現在プログラマーと営業を募集しています!

採用情報はこちらからどうぞ!

1か月に13回もソフトウェアアップデートをしている話

弊社の開発・販売している「ODIN リアルタイム配送システム」ですが、社員さんから提案あり

「かなり頻繁にアップデートしているので、これをもっとアピールしていっては?」

ということでした。

なるほど。

それで、調べたところ弊社は2021年の3月で

1か月に13回のソフトウェアアップデート

 

をしておりました。

1週間に3回強、ですよ。

すごくないですか?

システムを作ったりメンテナンスしたりしたことのない方からすれば、何がすごいのかわからないと思いますが、これも今までの弊社スタッフの努力のたまものなのです。

アップデートすると、通常はそれがきっかけになってバグが発生することがあります。

それを防ぐために、自動テスト、アップデート時に必要な処理が自動に行われるためのCIという仕組みを作ったりしてきました。(`・ω・´)

プラス、もちろん、アップデートする人員とテストする人員がいてテスト・監視体制を強化してきたのです。

 

弊社の社内でやってますので(ごく一部分外注)、動きが早いんですよ。以前、弊社のアプリは3億円ぐらいの価値がありますよ、と下記に書きましたが

3億円のアプリ

昨今、アプリというのはメンテナンスコストがめちゃくちゃ増大しています。

3億円だったのが2020年の1月ですから、今はおそらく4億円ぐらいのアプリになってます。

開発風景

皆さんいつもお疲れ様です。m(_ _)m