エコモットのエンジニアによる

IoT・AI技術や働き方についてのブログ

道路をお手軽診断!Miruroadでひび割れ損傷箇所を「診る」!

製品・サービス

こんにちは! デバイスソフトウエア開発部の平尾です。 皆様は道路の「ひび割れ」について、じっくりと考えたことはあるでしょうか? 歩いているときや車で走行しているとき必ず目にするものではありますが、あまり気に留めずに通り過ぎてしまう方が多いのではないでしょうか。私も「Miruroad(ミルロード)」の開発に携わるまでは、その深刻さをあまり気に留めていませんでした。 実は、ひび割れは単なる「見た目の劣化」ではありません。放置すると、以下のような事態に陥ってしまうのです。 →ひび割れが発生 → 雨水が浸入し路盤以下の層が損傷 → 表面だけを修繕(表層等切削オーバーレイ)しても早期劣化 → 路盤からの打換え措置が必要(費用増大) このように、ひび割れは早期発見と適切な診断が不可欠ですが、広大な道路網を全量目視で点検するには膨大なコストと人員を要します。 そこで誕生したのが、走行しながら容易にひび割れ箇所を特定できる道路劣化AI 監視ソリューション『Miruroad(ミルロード)』です。 「Miruroad(ミルロード)」の概要については下記の記事でも紹介しているので、合わせてご確認ください! 日々の走行を価値ある道路データに!エッジAIで道路を可視化するMiruroad 走行するだけでAIが「道路の穴」を自動マッピング!Miruroadのポットホール検知機能とは? 本記事では、Miruroadの「ひび割れ診断機能」についてご紹介させていただきます。 続きを読む

IoCとは何か? 〜「作る」だけでなく「呼ぶ」「片付ける」も〜

Tech blog

SpringBoot

(前回記事「なぜSpring BootはDI(依存性の注入)を使うのか?」の続きです)

前回は、密結合・疎結合の違いから始まり、DI(依存性注入)がなぜ必要なのか、そしてSpringのDIコンテナ(IoCコンテナ)がどのように依存関係を自動で解決してくれるのかを解説しました。

今回は、その「DIコンテナ」のさらに奥にある設計思想――IoC(Inversion of Control/制御の逆転)について、できるだけやさしく見ていきます。

実は、DIはIoCを実現するための手段のひとつです。ざっくり言うと、DIは「必要な部品を外から渡す仕組み」、IoCは「オブジェクトの生成やフレームワークからの呼び出しの主導権をフレームワークに渡す考え方」です。SpringのDIコンテナは「IoCコンテナ」とも呼ばれます。

ただし、IoCが逆転させるのは「オブジェクトの作り方」だけではありません。 コンテナが管理するBeanでは、生成・初期化・破棄をフレームワークに任せられます。また、イベントやWebリクエスト、スケジュール実行などのフレームワークの入口では、処理を呼び出すタイミングもフレームワークが管理します。

続きを読む

VitestとSupertestによるExpress APIテストの実践

Tech blog

みなさん、こんにちは!クラウドソリューション開発部の寺谷です。
7月に入り、北海道もいよいよ夏本番という気温になってきましたね。暑い日に飲む冷たい炭酸水は最高ですが、お腹を壊さないように体調管理には気をつけていきます!

Vitestというと、ViteやReactと一緒に使うフロントエンド向けの印象が強いかもしれません。ですが、今回触ってみて「バックエンドのAPIテストでもかなり使いやすい」と感じました。

この記事では、カレンダーアプリのバックエンドAPIを例に、VitestとSupertestを使ってExpress APIのテストを書いた話を紹介します。
続きを読む

海洋シミュレーションとニューラルオペレーター:物理モデルの代わりではなく、高速な代理モデルとして

Tech blog

こんにちは。AX研究室の Robert Hubacz です。
AIによる海洋モデリングを表した概念図。中央に「AI」と書かれた光る脳が置かれ、背景に日本海、バルト海、北大西洋の海域が描かれている。海面上のメッシュやデータ点は、海洋シミュレーションや予測に使われるデータを表している。なお、本記事で扱う4つ目の事例(ダウンスケーリング)は、ヨーロッパ周辺海域のCopernicusデータを対象としている。
海の状態を予測する技術は、航海や沿岸防災、嵐のリスク評価、さらには気候変動の分析まで、幅広い現場で必要とされています。こうした予測を長く担ってきたのが、従来型の数値海洋モデルです。数値モデルではまず、対象とする海域を格子で区切り、細かなセルの集まりとして扱います。そのうえで、各セルの内部で水の流れや海面の高さ、水温がどう移り変わっていくかを、時間ステップごとに順番に計算していきます。

この計算は非常に重く、専用の計算機を使っても数時間かかることが珍しくありません。しかも海の将来の状態は、風や気圧、初期状態など多くの条件に左右されます。そのため、条件を少しずつ変えながら、同じような計算を何度も繰り返さなければなりません。気象シナリオや初期条件を変えるたびに、シミュレーションを走らせ直すわけです。

そこで役立つのが「代理モデル(サロゲートモデル、surrogate model)」です。代理モデルは数値シミュレーションを置き換えるものではなく、予測を素早く出すために使われます。

仕組みはこうです。まず、過去のシミュレーション結果を教材にして学習します。「ある条件のもとで海流や海面水位、水温がどう変化したか」という例を大量に与えると、モデルはそこに潜む規則性を少しずつつかみ、似た条件での推移を推定できるようになります。

学習そのものには時間がかかることもあります。ただ、いったん学習を終えてしまえば、新しい条件に対する予測は、数値シミュレーションを一から回すよりもはるかに速く得られます。

ここ2年ほどの間に、フーリエ・ニューラル・オペレーター(Fourier Neural Operator, FNO)を使った代理モデルを海洋モデリングに応用する研究が、相次いで発表されました。本記事ではそのうち4つを紹介します。日本海の短期予測、海面水位を予測する OceanNet、時間の扱いを工夫した派生型 FNOtD、そして粗いデータから高解像度の海流マップを復元するダウンスケーリングモデルです。海洋分野の機械学習を網羅的にレビューするものではありません。FNO に絞ったのは、このモデル系統について、現実の海洋タスクへの応用を示す具体的な研究がまとまって出てきているからです。
続きを読む

「特化」と「洗練」の違いについて

Tech blog

皆さんこんにちは。
エコモットの板橋です。
弊社は、自社サービスを運営しており、継続的な機能の改善や強化に取り組んでいます。
そんな中で「サービスを今後どの様に発展させていくか」だったり「価値を高めていくか」といった事をよく考えます。
今回は、そういった場面で役立つ2つの考え方(概念)について書いていきたいと思います。
なお、”概念”と記載した通り、考え方はもちろん、場合によっては私の主観が含まれる内容です。
皆さんも、想像しながら読んでいただき、皆さんなりの受け止めや考えを整理してみると良いと思います。

続きを読む

PostgreSQL拡張機能「TimescaleDB」を使ってみた(導入編)

Tech blog

こんにちは。SJC共同開発推進室の菊池です。
弊社はIoT関連の開発を多く手がけていることもあり、センサーから上がってくる大量の時系列データを保存するケースが多々あります。

今回、その保存先としてPostgreSQLを利用しようと考えており、大量の時系列データを効率よく管理できる方法を探していたところ、
「TimescaleDB」という拡張機能があることを知りましたのでご紹介します。

続きを読む

トレーサビリティを導入して実践した話

Tech blog

みなさまこんにちは。
エコモットの板橋です。
前回は「1文節1仕様を導入してみた」について記載しました。
これは主に、要件定義や設計書に記載する内容について、可能な限り曖昧な記述を排除するための対策として導入した手法でした。
今回は、トレーサビリティに関して書いていきたいと思います。
今まで書いてきた記事の中でも、少し匂わせぶりに書いてきましたが、それは「とっておき」だからではなく、どのように書いたら分かりやすいかなぁ、、、と悩んでいました(苦笑)
では、今回も文章量多めですが、進めていきましょう。

続きを読む

異業種転職半年のリアルなギャップと実務紹介【元看護師→IT企業】

その他

こんにちは。 デバイスソフトウエア開発部の伊與です。 私は異業種転職でエコモットに入社し、はや半年以上過ぎました。 今回は、私が実際に異業種転職してみて感じた現状や、前職とのギャップについてお伝えします。 特に、以下のような方々のちょっとした一歩や助けになれば幸いです。
  • 異業種への転職に悩んでいる方
  • エコモットでの仕事に興味がある方
  • 医療職(看護師)から新しいキャリアを目指したい方
続きを読む

同志技術者よ、技術書を読め

Tech blog

こんにちは!クラウドソリューション開発部の西谷です。今回は、ネット情報全盛期の今だからこそ、なぜ「本」がいいのか、そして私が実践している技術書の選び方をまとめようと思います! 続きを読む