スマホで荷積み・荷下ろしを記録する機能ができました!

またまた… ODIN リアルタイム配送システムにすごい機能ができてしまった…!!

【業界初】当日の荷物の内容と場所を“見える化”!スマホで荷積み荷下ろし機能

荷積み機能と荷下ろし機能はスマホで荷積み、荷下ろしが記録できる機能です。

え?それで何が嬉しいんですか??

という声が聞こえてきそうです。

これはですねー、元々はあるスーパーさんにこういう機能があったらいいなといわれたのです。

スーパーさんって荷物がどれぐらいあるか、市場に行かないとわからないんですよね。

青果を運んでいる業種ではよくあることです。

で、ドライバーさんが何をいつどれぐらい運んだのかを日報として記録するんですが、それが手書きなんですね。

で、荷主さんに運んだ荷物の量で請求をするんですが、その際にその手書きの日報から事務員の方がExcelに転記するわけです。

手書きは読むほうも字が汚くて見えないとか、どこかに行ってしまうとかで管理が大変です。

それで、これをODINのスマホアプリでできないか、というご相談があり、作ったわけです。

 

他にもいろいろな業種の方から同じような機能はご要望頂いてました。

産廃業、回収業、貴重品を輸送する会社さんなどからです。

貴重品の輸送に関しては、今もう荷積みが終わったのか、運ばれているのか、荷下ろしされているのか、どこにあるのかがわかりたいということです。

荷物追跡マップ 荷物が地図上でどこにあるかわかる

荷物追跡マップ 荷物が地図上でどこにあるかわかる

また誤配を防ぐ機能もついてます。

誤配って大きな問題で、運送・配送では絶対について回る問題なんですが、誤配の何が問題かというと、それが紛失につながったり、再配送になって人件費がかかるということが挙げられます。

運送会社さんによっては、誤配1件につき、いくら支払うという契約をされている場合もあるようです。

誤配防止機能

誤配防止機能

機能についての詳細は、下記のページにもあります。

・荷積み・荷下ろし

・荷物追跡マップ

今回、大変だった点は、アプリなんですが、項目をフレキシブルにしたいというお客さんの要望に応えるために、

画面をどうにでもできる

ようにしたんですよ。プログラム書く人だったら、この大変さをおわかりいただけるだろうか。

項目、項目の順番、どのように表示するか(選択式、自由入力、自由入力+選択)を、全部お客さんが選んで好きに表示できるようにしたんですよ!!

荷積み 荷物記録機能 スマホ画面スクショ

荷積み 荷物記録機能 スマホ画面スクショ

上記の荷物の入力画面を、下記のようにシンプルにもできます。

荷積み記録機能 荷物入力 シンプル版のスマホスクショ

荷積み記録機能 荷物入力 シンプル版のスマホスクショ

入力画面は、他にもオートコンプリートという機能をつけまして、これもかなりイケてる!!

————————————————————————————————————–

さて、今回は追加した機能でできることが多すぎてプレスリリースに何を書くべきかめちゃくちゃ迷ったぐらいです。

ここ3年ぐらいで一番大きなバージョンアップとなりました。

オーディーンにとってのターニングポイントになりそうな機能です。

開発期間、半年超、変更したソースコードは○万行を超えています。

 

ホントに大変でした。

ただ、うちのプログラマーさん達が優秀だからできたわけで。

若手のホープs君、まだ勉強中ながら熱意をもって開発してくれたs君のおかげです!

ありがとうー!!

不肖私も、設計をしAndroidアプリを作り、とかなりこれにかかりきりでした。設計は、一部S君に任せた部分もあります。

早く、多くのお客様の役に立ったらいいなと思います( ˊᵕˋ )

ご興味あれば、ぜひコチラからお問い合わせください!

PHPカンファレンス2025の感想

昨日、PHPカンファレンス2025に行ってきました!

感想を書いておきます!

今回は6月にあるというのをすっかり失念していたので、危うくいかないところでした。
また、仕事が最近重めのプロジェクトがやっと終わったところで、プログラミング大好き人間の私でも
「週末ぐらいはプログラミングと離れていたい…」
と思っていたところだったので、ちょっと参加に迷いましたが、いつもなんだかんだ行ってよかった!となるので、重い腰を上げていきました!

結果、やっぱり行って200%よかった!です!


拝見したトークについて書いておきます。

皆さんがスライドを上げていてくれるので、とても便利で助かります!

①MySQL5.6から8.4へ 戦いの記録

私は最近はDBのことは任せているので、他の担当者の参考になるかな?という目線で聞いていました。
実際の体験記はやっぱり価値があります!
ゼロ日付気を付けないとですね…。

②PHP 8.4の新機能「プロパティフック」から学ぶオブジェクト指向設計とリスコフの置換原則

プロパティフックという機能ができるのは知らなかったので、勉強になりました!
後、スピーカーの方が
「リスコフの置換原則の『共変・反変』という言葉が僕は大嫌いなんですよ!」
と言われていたの、100%同意(笑)です。⊂(^-^)⊃

そう、『共変・反変』って何なん?と私も常々思います。
難しいし、日本語でも意味がわからないし。はんぺん?はんへん?

リスコフの置換原則を巡っては、私もこれがなんか難しく伝えられすぎているのでは?と思うことがあります。
いつかスライドのネタにしようかな。

③AIプログラマーDevinはPHPerの夢を見るか?

今はやっぱりAIでコード書けるの、どこまで行けるかは皆さんが気になるネタだと思います。
Devinはどうなのかな?と気になっていたので、聞いてみました。

「リーダブルコードを読ませて、これに沿ってリファクタして」
と言ってみて、
・何を学んだか、何に苦労したか
・指示の出し方は適当だったか
・自分で自分をほめてあげたいところ
・後輩に伝えたいこと
・挑戦したいこと
を聞く、というのは私の発想にはなかったので、面白かったです!

本当に、人間の新人プログラマーみたいな答えが返ってくるんですね(笑)

タイトルは有名なSF小説ですが、SFの世界になったな… と改めて思わせられました。

④設計やレビューに悩んでいるPHPerに贈る、クリーンなオブジェクト設計の指針たち
https://speakerdeck.com/panda_program/how-to-write-clean-objects

立ち見が多く、人気のあるお題なのかな?と思いました。
プログラマー同士会話するときの前提を合わせておくってだいじですね。
オブジェクト設計スタイルガイド、早速購入しました!!


で、オフライン参加の目的としては、やはり飲み会も大きな比重を占めております!
リアルにいろんな方の顔を見て本音が聞けるのは大きい!
プログラミングの話題だけでなくって、会社の話、転職の話、採用の話など、聞きたい話題がいっぱいです。

もちろんね、こういう知らない人だらけのパーティー、苦手!って人多いと思います。
私も苦手です。
でも思い切って話しかける!を毎年がんばってやっております。

今回の感想は、
「女性が増えた!」
ってことですかね。
PHP界隈は女性のPHPerさんがSNSとかで盛り上げてくれているからでしょうか?
嬉しいことです。

じゃんけん大会で名古屋のPHPカンファレンスのTシャツももらえました!
名古屋出身なので、これは嬉しい!

めちゃくちゃ大きいサイズでもらいました。XXXLとかかな?

 


さてさて、末尾ではありますが、弊社はプログラマーの勉強会参加も奨励しております!
休日に参加したら、その分「勤務」扱いになり、代休とお給料が出ます。(事前申請と許可は必要)

ぜひぜひ、話を聞くだけでも結構なので、弊社にご興味ありましたらご連絡ください!
採用情報はこちら↓
https://onlineconsultant.jp/recruitment/

 

クラス設計の手順

 クラス設計の手順

というスライドを作成しました。

<対象>
・プログラミングを始めて3年以上
・オブジェクト指向でプログラミングをしている
・クラス設計などを担当するようになったが、設計とはどうすればよいのかわからない
・なんだか設計が後一歩と感じる

クラス設計に関して、どういう設計がよいなどの論は多くあるが、どうやったら設計ができるのかという論はあまりないので作成しました。

良かったら読んで感想を教えて頂けると嬉しいです。

前回はこちら↓

どうして僕の作ったクラスが手続き型と言われなきゃいけないんですか(プログラミング)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

 

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

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

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

 

 

ドライバーさんのスキルや担当に合わせて最短の配送ルートを組む機能が誕生!

またまた、ODIN リアルタイム配送システムにすごい機能が爆誕してしまいました…!

ドライバーさんのスキルや担当に合わせて最短の配送ルートを組む機能です。

運送会社、配送会社さんで何人かドライバーさんがいると、よく聞く話が

「このドライバーさんはこのエリア担当」

「このドライバーさんはあそこは出禁になっている」

などという話です。

それを考慮して、配車担当さんがドライバーさんがいつ、どの順番で配送先を回るかという配送計画を作るんですが、これは大変なことなんですよね。

配送先が20とか少なければいいんですが、それが数がもっと多い場合、その最短ルートを計算するのは人間にも難しいし、コンピューターにさえ難しいとされています。

その配車を組むときにミスがあったりすると、配送先やドライバーさんから配車担当さんが怒られてしまう…。

配車担当さんのストレスの原因だったわけです。

でも、もうそのストレスとはおさらばです!!

ODIN 配送計画が解決しますからね!!٩( ‘ω’ )

 

スキル考慮機能 イメージ

スキル考慮機能 イメージ

 

そして、今回さらに新しい機能も生まれたんですが、その名も「搭乗」機能。

俺はガンダムで行く!!

ドライバ―さんと車両の組み合わせを、配送計画にあらかじめ設定してルートを組む機能なんです!

今回、開発は設計を私が担当し、実際の実装は新進気鋭のS君、ちょっと難しいUI部分は若手のホープ、S君が(どっちもイニシャル一緒)担当してくれました!

ありがとう!!

 

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

コードの動作を口で説明してもらう

私はうちのプログラマーさんに

「このメソッド(or クラス)が何をしているか、口で説明して」

と言う時があります。

多分、言われた方は

「え、なんで?後藤さんはコード見てもわからないからかな?」

「面倒だな…。」

と思うかと思います。(笑)

 

しかし、これは意図があってやっていることです。

どういう意図かというと、

そのコードがどういう意味なのか、その人がコードと違う形で出力する必要があるから

です。

大体、「口で説明して」と言って、スパッと帰ってこない場合は、そのコードがよくないケースが多いです。

そういうコードは

・やってることが多すぎる

・書いた本人も実行 or デバッグしないと結果がわからない

というコードなんですよ。

当たり前なんですよね、作った人が何をしようかわかってないのであれば、微妙なものができてしまうのは。

 

書く、言う、図にする。

これらは考えを人に伝えるために重要です。

そして、人というのは他人だけではなくて、自分も含まれます。

人に悩みを聞いてもらって、すっきりした経験がある方は多いと思います。

問題が明らかになるからだと言われていますよね。

プログラミングも一緒です。

プログラムを書いたことがない人にはわかりづらいかと思いますが、プログラミングって抽象的なモヤモヤっとしたことばっかりなんですよ!!

抽象的なモヤモヤっとしたことをいかにわかりやすくするか、というのがプログラマーの仕事なので、口で言うのは、自分で問題を整理する、そのプロセスです。

逆に、私もプログラミングの設計などで悩んでいる時に、スタッフの方に聞いてもらって解決することも多いです。

 

特にAI時代において、小難しいコードを書くこと、小難しいコードを読むことはAIを使えば誰でもできるスキルになっています。

しかし、モヤモヤしたこと、抽象的なことを整理することは、今のところ人間の方ができます。

なので、そのスキルを磨いたほうがよさそうです。

書いたり、話したりしていきましょう!

コーヒーでも飲みながら

 

PHPカンファレンスに行ってきた なんと参加10年目

PHPカンファレンス2024に行ってきました!

12月22日って… 厳しくない?M1もあるし!と思ってましたが、行きました。(`・ω・´)

PHPカンファレンス2024 看板

昼過ぎから行きました!(本当は12時45分の成瀬さんの講演から聞きたかったのですが、前日飲みすぎて起きたらお昼でした(泣))

①APIデバッグとリバースエンジニアリング

https://speakerdeck.com/nagix/apidebatugutoribasuenziniaringu-7ebf6dc3-989c-46a2-9269-7b157195d94e

聞いてよかった!

Postmanの人が話すPostmanの話。

Postmanって本当にすごいツールで、かなりお世話になってます。

Postmanの中の人たちに足を向けて寝られないよ…(ノω・、)

Postmanのことについて聞くたびに、

「エッ そんな機能あったの??すごー!!」

って驚くんですけど、この日もそうでした。

下記の部分にマウス当てると、色々なことを教えてくれる。

Postmanスクショ

ここを触ろうという発想すらなかったw

 

Postmanにconsoleという機能がありコンソールにログが出せる!

左下のここ!見たこともなかった!(ジョックロック風に)

 

Postmanがネットワーク接続とかできないとき、これで調べられる!

 

PostmanでクライアントアプリとAPIのリクエストを検査したり、トラフィックをキャプチャもできる!

(使う日が来るかもしれない)

 

②AlgoliaからOpenSearchに乗り換えてみた

https://drive.google.com/file/d/1sh9EE0kNmfcp_rotMq-RYiTYPYicE05-/view

ウチも検索の問題はあるので職務に直結するので大変ためになりました。講演者さんの実体験に基づくお話なのがよかったです。

・もともとはAlgoliaというツールを使っていたが、半角カナやへーべーなどが検索できないし、高額

・MySQLのFULL TEXT INDEXこれはかなりCPUを食うらしい。。。CPU100%になってしまったらしいです。

・AwsのOpenSearchへ乗り換えをし、コストダウン(4分の1になった)検索機能が向上

 

③責務を分離するための例外設計 – PHPカンファレンス 2024

https://speakerdeck.com/kajitack/ze-wu-wofen-li-surutamenoli-wai-she-ji-phpkanhuarensu-2024

この時間これしかやってなかったんですよね(笑)。でもためになりました。┌o ペコッ

例外って大事だよね~

・問題がある場合は早く例外を投げるべし

・入力値のチェックはバリデーションで行い、IDが想定外の場合、バリデーション実装のミスなので、LogicExceptionを投げるべし

そうすることによって、クラスの中の問題なのか、クラス外の問題なのかが切り分けられる、という意味なのかな、タイトルはそういう意図なのかな、と思いました。

 

<ライトニングトーク>

ライトニングトークはどれも素晴らしかったですが、印象に残ったものを残しておきます。

④var_dumpとvar_exportの理解から始めるPHPのソースコードリーディング

PHPのソースコードを読んでみようという話

https://speakerdeck.com/myblackcat7112/var-dumptovar-exportnoli-jie-karashi-meruphpnoso-sukodorideingu

⑤Xdebug ProfileによるCIパフォーマンス改善のためのボトルネック解析

Xdebug Profileを活用して、PHPUnitが呼び出すコード内のパフォーマンスを阻害するメソッドを特定する方法。

そう。PHPUnitを回すのにかなりの時間がかかっていませんか?ウチもやらないと…。

⑥Opcodeを読んでいたら何故かphp-srcを読んでいた話

https://speakerdeck.com/murashotaro/opcodewodu-ndeitarahe-gu-kaphp-srcwodu-ndeitahua

PHPのソースコードを読むのは大変だったら、Opcode(中間コード:オペコード)を読んでみるのがオススメ。

 

夜は懇親会でした!!

会社の子も参加してくれましたし、いつも楽しい会で、いろんな方とざっくばらんにお話できて楽しかったです( ˊᵕˋ )

なんとじゃんけん大会で勝ちまして、PHP Conference Tシャツを頂きました(^^)v

さて、タイトルにある参加10年目なんですが、このブログによると、なんと私はほぼ毎年PHPカンファレンスに行っている!!( ゚Д゚)

初出は2014年のこの記事なんですよ。

PHP Conferenceに行ってきました!

読みますと、HHVMの話を、Facebookの開発者、Paul Tarjan氏が話したセッションを聞いたという記憶がよみがえってきます。

PHPカンファレンスってすごいなー、わざわざ外国からすごい人が登壇するんだなー、というめちゃくちゃ良いイメージから私のPHPカンファレンスは始まったのです。

2018年が下記↓ このころは、ソシャゲの会社がスポンサーなイメージ強かったですね。

PHPカンファレンスで勉強になったこと 

それにしても毎年言ってますけど、PHPカンファレンスって参加費無料ですごい勉強になるし、すごいモチベーションアップになるので、このまま続いていってほしいですね。

 

10年経っても、PHPという言語のポジションってあんまし変わってないですね。

個人的な感想ですが、PHPのポジションって、やっていてかっこいい言語じゃない、というとらえ方がどうも一般的な気がします。

いわゆるつよエンジニアを目指すみたいな界隈の人が

「やってるのが恥ずかしい」

「片手間にやれば十分な言語」

という感じみたいに言うのがちょっと残念ですね。

簡単で機能が少ないので、こういうことを言われるのかもしれません。

 

しかし、大AI時代になりましたので、もしかしたらこの辺が変わっていくかもしれませんね。

 

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

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

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

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

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

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

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

 

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

結構多い話が、

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

とか

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

とか

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

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

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

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

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

 

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

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

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

 

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

 

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

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

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

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

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

 

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

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

 

 

 

どうして僕の作ったクラスが手続き型と言われなきゃいけないんですか(プログラミング)

若手プログラマーの疑問に答えていくシリーズ第2弾を書きました!

よかったら読んでみてください。⊂(^-^)⊃

対象者は下記のような方です。

-プログラミングを始めて2,3年以上
-オブジェクト指向でプログラミングをしている
-オブジェクト指向のプログラミングを理解はできるし、自分で書いているが、うまく書けているか自信がない

 

 

前回はこちら↓

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

停滞検知機能を強化

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

 

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

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

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

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

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

 

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

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

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

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

 

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

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

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

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

トラック イメージ

トラック イメージ