自己紹介

ソリューション開発部沖縄に所属している星川と申します。2011年に入社しまして前職の経験を活かしPHPを使ったサーバーサイドの開発をしていました。

その後、運用担当しているWebサイトのSEO担当を経て、現在は社内マーケターとして沖縄県の不動産情報を紹介するポータルサイト「グーホーム」や受付クラウドシステム「ラクネコ」のサイト分析や広告運用管理、コンテンツ管理などの業務を行っています。

プロトソリューションは親会社であるプロトコーポレーションから依頼される業務が多く、顧客を理解した付加価値の高いサービスを提供することに長けた人材が多くいます。ただ「どうすればサービスを認知してもらえるのか」「興味を持ってもらえるのか」などの考えは現場ではあまり必要とされておらず意識されていませんでした。

自社サービスのマーケティング業務をしていく中で「社内にもっとマーケティングの知識を業務に取り入れてもらいたい」「もっとマーケティングを意識して業務に取り組んでもらいたい」と思うようになり、さまざま活動してきましたのでその活動のご紹介をさせていただければと思います。

1.Web解析士の取得

サイト分析を任されるようになり会社に資格取得奨励制度があったこともあって、基礎となる知識習得を目的にWeb解析士の資格の取得を目指すことになりました。

Web解析の手法を体系的に学べるのかなと考えていましたが、資格の勉強をする中でデジタルマーケティング大枠の知識が習得でき、マーケティングの理解が深まるとともにマーケティングに対して興味を持つようになりました。

マーケティングというとプロモーションだったり広告だったり集客の部分を想像していたので、PEST分析やSTP分析、4P分析といった市場理解や顧客理解の概念が理解できたときは、今までの視野の狭さを反省するとともにモヤモヤしていた視界が開けたように感じました。

2.合同勉強会

マーケティングの重要性は理解したものの社内にマーケティングを専門としたチームが存在していなかったため、チーム構築を目的に社内で有志を集め勉強会を開催することにしました。

幸い募集をかけたところ社内の色々な部署の方から参加したいとのお声をいただきまして、沖縄県内でマーケティングを積極的に取り組んでいらっしゃる株式会社アザナ様へお声がけをさせていただき、合同でマーケティングの勉強会を開催する運びとなりました。

会場はプロトソリューションの会議室と、アザナ様が運営されているレンタルスペース「epic」の交互で実施し、いつもと違う環境、メンバーで新鮮な気持ちで取り組むことができました。

勉強会はマーケティングのフレームワークを軸にした、売れる商品とは何か、売れる仕組みは何かを理解していく座学を行いました。

その中で自ら考えアウトプットする癖を付ける必要があると考え、成功企業のマーケティングがどう行われていたのかをフレームワークに落とし込み理解を深めていきました。

カリキュラムは以下の流れで進めていきました。

1.座学によるインプット

2.成功企業のマーケティングをトレース(フレームワークの使い方理解)

3.お題となる商品のマーケティング手法をフレームワークを使って分析

4.チームごとに考えたマーケティング手法の考察を発表

全6回(約2ヶ月)の勉強会を通して参加者のマーケティング理解が深まったことはもちろん、運営した私も理解が深まり大変有意義な勉強会だったと思いました。

この勉強会で作成した資料は、プロトソリューションの新入社員向けの企業研修資料に編集し活用しようと考えています。

残念ながらちょうど進めていたタイミングで新型コロナウイルスが発生してしまいまだ実現できておりませんが、どの業務に就くことになったとしても必要な知識だと思いますので実現に向けて進めていければと考えております。

研修のデモとして、社内勉強会の実施は行いました。

3.マーケティング講師の招聘

勉強会をしてから気付いたことですが、勉強会で取り組んだ成功企業のマーケティング手法をトレースする勉強方法はすでに更にブラッシュアップした形で取り組まれている方がいました。その方は勉強会を合同で実施したアザナ様の親会社であるブランディングテクノロジー株式会社様のCMOの黒澤様だったという奇跡みたいなことが起こりました。

ちょうど社内の業務やプロジェクトにマーケティング視点を入れて事業をグロースさせられないかという取り組みをしようと考えておりましたので、社内のマーケティングの現状を認識するべく黒澤様を沖縄に招聘しワークショップを実施していただきました。

参加者の方からは大変満足したとのお声をいただき、マーケティングの重要性や取り組みの具体的な手法など理解を深める機会になったと感じました。

ワークショップ実施後、ラクネコのプロジェクトからお声がけをいただき現在の業務に繋げることができています。

4.オンラインボードゲーム

次に実施したこととして、部内の経営視点の理解促進を目的として管理者メンバー向けにオンラインで実施できるビジネスボードゲーム型の企業研修「マーケティングタウン」を行いました。

限られた資金を元手に販路を拡大し、マーケティング戦略を立ててユニコーン企業を目指すというルールですが、とても短い時間制限の中で的確な判断をし続けないといけないというのはリアルに通ずるものがあり、実際の経営の難しさを疑似体験できるいい経験になりました。

惜しくもユニコーン企業には成れませんでしたが、機会があればまたリベンジしてみたいと思っています。

また、新型コロナが収束したタイミングで県内のマーケターや管理者層に向けたイベントとして、実際に集まってマーケティングタウンを開催をしてみたいと思っています。沖縄県内のコミュニティと関わることがなかなかありませんので、その機会になればと考えています。興味ある方はぜひご参加いただければと思います。

5.社内LT

次に現在も継続して実施している活動として社内LTを毎月開催しています。コロナ禍で自粛要請が多くストレスが多い世の中になっていますが、沖縄在住の身として今まで距離的な問題で参加ができなかったセミナーが自宅で受けられるという恩恵を受けられるようになり、そこでインプットした情報を社内共有したく始めた活動となります。

毎月テーマを決めてGoogle Meetを使ってのオンライン生配信で実施しています。15時に休憩時間がありますので、そこで気分転換に聞いてもらえたらと思い15分のショート配信をしています。

おかげさまで毎回多くの方に視聴をいただき「面白かった」「参考になった」「業務に活かしてみます」など嬉しいフィードバックをいただけています。

今後も情報発信の機会と私自信のアウトプットの練習として継続していきたいと考えています。要望などあれば特定のキーワードやツール、手法についての解説もしていきたいなと考えています。

・e-Learning構築

以上がこれまで取り組んできた内容になりますが、これから実施していきたい取り組みとして社内向けのe-Learningを構築したいと考えています。

マーケティングと言っても求められているもの、受け取り方はさまざまで、マーケティング担当者になっても何を指標に進めていけばいいのか迷ってしまうことが多いと感じています。

今後マーケティングを専門とするチームを構築していくにあたり教育資料として運用できるような5分程度の動画をまとめた社内e-Learningを構築していければと考えています。また、実際に業務で困った時に参照できるツールとしても活用できればと思っています。

SEO対策やキーワード選定、広告の費用対効果など各部署のマーケティング担当でない方でも気になった時に気軽にアクセスできるツールを目指して今期構築を目指します。

・最後に

プロトソリューションは自社メディアやSaaS事業など新しい事業への挑戦をし続けています。それに伴い社内でのマーケティング人材の需要はこれからも増加していくと考えています。

小手先のテクニックだけではなく、顧客を理解して必要な人に必要なサービスを届けられるよう、社内のマーケティング文化の発展へ向けてこれからも取り組みを続けていきます。

マーケティング業務の経験があり沖縄でスキルを活かしたい方や、マーケティングに興味があって挑戦してみたい方はぜひ採用までお問合せください。一緒に沖縄発のマーケティングを盛り上げていきましょう!

ご応募はこちらから。ご連絡をお待ちしております。

Webマーケター

沖縄本社では、一緒に働くITエンジニアを募集しています

webマーケター募集中!

最後まで読んでいただきありがとうございました。

こんにちは。編集部の福田です!

今、Z世代に大人気の『Muze』というアプリをご存じですか?

なんでも、感覚的に遊べるというのがハマる理由なんだとか。

今回は、私Y世代の福田がMuzeを実際に使ってみたうえでのレビューをまとめてみました。

この記事を読めば『Muze』がどんなアプリなのかが、“感覚として” 分かる内容になっています。

是非最後まで読んでくださいね♪

参考までに
Y世代:1980年~1990年後半生まれ。デジタルネイティブ。ブランド志向。空気を読む。話好き。ムダを楽しむ。理想を求める。

Z世代:1990年後半~2012年生まれ。SNSネイティブ。本質志向。多様性を重視。接客が苦手。ムダを省く。リアルを求める。

※世代の定義については様々な議論がされているので必ずしもそうではない

Muzeを使ってみた

結論から言うと、面白い!

チャットアプリと聞いていたが、少し違う。

テキストや写真、スタンプに動画などを真っ白い画面に貼っていくんだけど、これまでのチャットアプリとは違って、対話する相手と自分とで画面が左右に分かれているわけでもなく、誰のターンといった概念もない。
お絵かきできる日記みたいな感覚で、自由度はめちゃくちゃ高いのが特徴。
これまでに、ありそうでなかった感じ。

ひと言では言い表せないので、実際のキャプチャを使って説明していきます!

さっそくMuzeを開くと、画面が真っ白!

UIは画面いっぱいに真っ白です



インターフェイスは、普段触り慣れているチャットアプリと大差はない。

まずは試しにとテキストをタップ。

フォントの種類や装飾、配色の多さに戸惑う。

カラー調整が指一本で簡単にできちゃう。

 

HelveticaやAvenir、Futuraをはじめ、全部で36種類のフォントが搭載されている ※2021年6月現在



適当に書いてみるが、いつもと様子がおかしい。

なんだなんだ!?

テキストを移動できたり、拡大できたり、普段のチャットアプリと違ってどう使えばいいのか分からない。。

指でピンチアウトして拡大、文字を押したままドラッグで移動できる



しかし私もデジタルネイティブ世代の端くれ。

3分くらいあちこち触っていると、
はいはい、感覚で分かってきましたよ。

「言葉ではなく心で理解できた!」

ここで自己紹介なんかしちゃったりして



テキストの形、大きさ、色などを自由に選べるので、適当に並べてもなんか派手さが出る。

画像も同じ様に移動や拡大といった操作が感覚でできちゃう。

なんか凄く自由過ぎて、不安になるなー。

まっ、正解はないのだろう。気にしない気にしない。

ユーザーとやりとりしてみる

1人で遊ぶのも飽きたので、他ユーザーとやりとりしてみる。

Muzeも従来のチャットアプリみたいに「友達かも?」の機能がついていて、私の電話帳にある同僚らしき人物がリストアップされる。(リストアップされるには相手にもMuzeアプリをダウンロードしている必要がある)

そして、ちょっとした遊び心なのか、左上のmuzeロゴをタップすると、ロゴの色やテクスチャが変わるようになっている。

丁度良い感じでリストされているユーザーを発見したので実験に使ってみる



友達申請をすると相手も暇だったのだろうか、即レスが返ってきた!

2人で使うとどうなるんだろう。。?

私の好奇心が湧いたと同時に相手からテキストと写真が貼られてくる。

おぉ!興奮してつい英語になってしまう。w(゜o゜)w

使い方が分からない同士でやりとりをすると、あっと言う間に真っ白なキャンバスがカオスな状態になった(笑)

もはや会話になっていないが、予測不能なやりとりが逆に新鮮でクセになりそう



相手からのコメントや写真の上に、自分が書いたテキストや写真などを上書き配置することが出来る。

キャンバスのどこに書いてもいいという自由度の高さは、逆に何についてのレスなのかが分かりにくくなるので、その辺は上書き配置でカバー。

そのほか、フリーペン機能もついているので、お絵描きしたり何かを説明するときなどに使えそう。

感覚で書けるデメリットを機能面できっちりカバーしている



ごちゃごちゃカオスな感じが、かえってアーティスティックに仕上げてくれる気がする。

やりとりしたあと、振りかえって見るのが楽しみにもなりますね♪ 1つの作品の様です。

 

まとめ

感覚でのやりとりは何も考えないで良い分、受け手の捉え方によって伝わり方が変わるので、『伝える』というコミュニケーションにおいては従来のチャットアプリのほうが使いやすいと言える。(ガチ感想)

しかし、Muzeの良さは感覚的にやりとり出来るからこそ、枠に捕らわれないクリエイティビティの高いコミュニケーションが可能になる。

今Web上では、一生かけても消費しきれないほどのコンテンツが溢れていて、有益な情報の取捨選択を瞬時に判断しながらも、いかに無駄を省き生産性を高めていけるかということが重要視されている。

動画を倍速で見たり、ながら学習ができる音声メディアといったいわゆる「時短」が注目されているのがその証拠だろう。

そんな中、MuzeがZ世代に人気なのは、前述した内容と矛盾するようだがその “分かりにくさ” “伝わりにくさ” にあると使ってみて感じた。

“伝わりにくい” から生まれる「あはは、何それ?」と言ったコミュニケーションから新しい話題が派生して、そこから面白い発見が生まれる。

なんでもかんでもWeb上で調べれば解決できる時代に生きる若い世代にとって、
何が起こるか予測できないMuzeは、“新感覚なコミュニケーション” に触れられる場所なのかも知れないですね^^

icon_福田

icon_福田

この記事を書いたひと:福田 聡樹(ふくだ さとき)

株式会社プロトソリューション Webマーケティング部所属。自社ホームページ編集長。ブログ/インタビュー/動画などのコンテンツを使って、プロトソリューションのサービスやタレント情報を発信しています。
好きなもの:爬虫類全般、本のにおい。


自己紹介

AIテクノロジー推進室仙台に所属する関内(せきうち)と申します。 現在は深層学習(ディープラーニング)を利用したプロダクトの研究開発に携わっていますが、情報セキュリティを得意としておりまして、他のチームから相談を受けることも多くあります。 今回はこの情報セキュリティについてお話ししたいと思います。

情報セキュリティに興味を持ったきっかけ

2006年、Webシステムの開発を得意とする株式会社アイソリューションズ(現・株式会社プロトソリューション仙台本社)に入社しました。 Webシステムと言っても、特定企業の閉ざされたネットワーク内で動くものも多く、そういった開発案件ではさほど高いセキュリティレベルを要求されることはありませんでした。しかし、セキュアプログラミングの思想は徐々にですが着実に広まっていました。

2008年頃、社内でB2Bのオンラインショッピングモールの開発が始まりました。外部に開かれたシステムですので、悪意を持つユーザがいることを前提とした対策をしなくてはなりません。このプロジェクトで様々な脅威とその対策を検討した経験が成長につながりました。

大規模サービスの開発運用

その後、外部に出向し、プロスポーツ向けのサービスや広告サービス、B2Cのオンラインショッピングモールの開発に携わりました。 多くの人が知っている一般ユーザ向けのサービスですので、攻撃手法と保護したい情報を充分に検討し、優先順位をつけて対策することの重要性を学びました。

情報セキュリティのスペシャリストとして

2009年、この年に経済産業省の「情報セキュリティスペシャリスト試験」が創設されました。第1回試験で合格。 ただ、このことよりもセキュリティについて教えた後輩が第2回試験で合格したことの方が嬉しかったです。

情報セキュリティスペシャリスト試験は2016年をもって廃止され、「情報処理安全確保支援士」制度へと変わりました。 毎年の更新講習が義務付けられており、3年間で約15万円の維持費がかかるものの、当社では全額会社が負担してくれています。ありがたいことです。

資格取得奨励制度
情報処理安全確保支援士

情報セキュリティへの取り組み

常に知識をアップデートする

近頃の動向を見ても、10年前は話題に上らなかった脅威が登場しています。知識のアップデートは特に重要です。
以下に例を記載します。(2021年6月時点)

・APT(Advanced Persistent Threat 持続的標的型攻撃)
・オープンソースライブラリを通じたサプライチェーン攻撃
・パスワードスプレー攻撃 (low-and-slow攻撃)
・ランサムウェア
・暗号技術の危殆化 (TLS 1.0/1.1)

どのように戦うか

セキュリティ対応は、平常時の対応とインシデント対応に分けられます。
インシデント対応である「封じ込め 根絶 復旧」をまず頭に浮かべがちですが、平常時の対応も重要です。

・準備(予防)
・検知 分析
・封じ込め 根絶 復旧
・事件後の対応

出典: NIST Special Publication 800-61 Revision 2, Computer Security Incident Handling Guide

これは消防署のお仕事とよく似ています。
消防署は、インシデント対応である消火作業だけではなく、防火・普及啓発・警報装置の義務付け・設備の査察といった平常時の対策にも力を入れています。

脆弱性情報の収集

JVN, JPCERT, IPA, US-CERTのフィードを購読し、最新の脆弱性情報を収集しています。
Twitterや、Googleアラート(検索語句を登録しておくと、そのキーワードを含む新着記事を自動で通知してくれるサービス)も便利です。
技術情報全般に言えることですが、自分からアクションを起こさなくても自動的に情報が入ってくる仕組みを構築できるとよいでしょう。

JVN iPedia
JPCERT CC
IPA
US-CERT Alerts

情報セキュリティは日陰者?

情報セキュリティは、利益につながらないように見えがちです。平穏な時は誰も気にしないものです。
また、うまくやりすぎると、何も仕事をしていないように見えてしまいます。
プロダクトをわざと燃やした方が仕事ぶりをアピールできるかもしれませんが、それは職業倫理上絶対にやってはいけません。
平穏な時こそ、成果指標を整備し、どんなことをしていているのかを見えるようにすることが大事です。CISOダッシュボードによる可視化ができると良いでしょう。

CISOダッシュボードの例

品質向上への取り組み

品質への対応は、情報セキュリティとほぼ同じアプローチをとることができます。
品質が安定することで、次のことが達成できます。

・開発スピードの加速化
・コストの削減
・人材の増強

勉強会の実施

ここ数年で行った、品質やセキュリティに関する勉強会のタイトルをご紹介します。

・インシデントレスポンス概論/情報共有のトライアングル
・品質とリスクアセスメント
・AWS障害から学ぶこと
・品質の定量評価のすすめ
・リスクコミュニケーション
・自動車の安全技術に学ぶ システムの安全確保
・効果的なレビューの進め方
・情報セキュリティとセキュアプログラミング
・インシデントの収集と活用
・ソフトウェアの品質モデル
・品質とスピード、どちらをとる?
・インシデントハンドリング
・根本原因解析
・品質とコミュニケーション
・影響調査漏れとレガシーコード

タイトルのみのご紹介ですが、品質やセキュリティの確保の取り組みに共感いただければ嬉しいです。

実際に使ったことがあるツールや手法

プロジェクトの課題や目標を共有し可視化する
プロジェクトの課題や目標を共有し可視化する

・NIST SP800-61 インシデント対応プロセス
・ふりかえり (Retrospective)
・ポストモーテム (Project Post-Mortem)
・根本原因解析 (RCA)
・フォールトツリー解析 (FTA)
・故障モード影響解析 (FMEA)
・失敗まんだら
・ImSAFER

品質向上のアンチパターン

よくあるダメな例は、文書を作って対策したことにすることです。

・体制やマニュアルを作っただけで終わりになってしまい、インシデントを防げない・インシデントが起こったときに役立たない
・チェックリストの項目だけが増えて、チェックが形骸化する

また、人にフォーカスするのもよくありません

・責任追及や犯人探しになってしまい、真相究明がおろそかになる
・「注意します」「気をつけます」で済ませてしまう

現場に寄り添いつつ、何が起こっているのかを明らかにしましょう。

起こったことを詳細に分析し対策する
起こったことを詳細に分析し対策する

「気合と根性」で解決する時代は終わり

問題というものは頭を使って、システマティックに解決するべきだと思っています。
長時間労働や人海戦術・精神論が登場したら、それはマネジメントの失敗だと思ってほしいです。
品質やセキュリティは、設計段階やそれ以前のフェーズで作り込むのが重要です。

最後に

失敗しても全然OK!

これは修造カレンダーに書いてあった松岡修造さんの言葉です。
私は15年前、入社1ヶ月目のヒヨコの頃に、データベースを全て吹っ飛ばすという失敗をしました。コピー元とコピー先を取り違えたのが原因です。
当時の先輩が、「作業前にバックアップを取ってね」と教えてくれたことと、開発サーバだったことで大事には至りませんでした。

セキュリティの世界では、多層防御やゼロトラストのように、侵入されることを前提とした考え方があります。品質でも、ヒューマンエラーが起こることを前提にして、仕組みを整備することが大切です。
安全に失敗できる環境を用意してあげることも、チームメンバーの役割です。
シリコンバレーの安全文化にも、「素早く、繰り返し、安全に、賢く失敗せよ」というものがあります。

・Fail Fast
・Fail Quick
・Fail Often
・Fail Cheap
・Fail Smart

小さな失敗を繰り返すことで、大きな失敗を避けることができます。

セキュリティエンジニアを目指したい方へのアドバイス

物事の仕組みに興味を持ち、プログラミングの他に、OSやネットワーク・通信プロトコルの知識をつけるとよいでしょう。
これらを深く知ることで、脆弱性や攻撃手法を見たときに「これはOSI参照モデルの第n層で起きていることだな」と理解できます。
システムを漠然とした一つのものとしてとらえていると、何が起こっているかを理解できません。

実際の手法を知るには、IPAで公開している資料や、Kali Linux のようなセキュリティに特化したLinuxディストリビューションで体験することもできます。ただし、他社のサイトを攻撃することは違法ですので行わないでくださいね。

安全なウェブサイトの作り方
Kali Linux

この記事を読んで、情報セキュリティに興味を持ったり、大規模ITサービスを安全に運用してみたいと思った方がいらっしゃいましたら幸いです。

ITエンジニア

ITエンジニア

沖縄本社では、一緒に働くITエンジニアを募集しています

AIエンジニア、システムエンジニア、その他多数募集中!

ITエンジニア

ITエンジニア

仙台本社では、一緒に働くITエンジニアを募集しています

自社プロダクト(SaaS)開発エンジニア、社内インフラ、その他多数募集中!

ITエンジニア

ITエンジニア

東京支社では、一緒に働くITエンジニアを募集しています

データサイエンティスト、データベースエンジニア募集中!

生産人口の減少問題を、データとAIで解決する株式会社プロトソリューション(沖縄本社:沖縄県宜野湾市、仙台本社:宮城県仙台市、代表取締役社長:白木享)は、令和2年度イノベーション創出強化研究推進事業「AI画像認識による幼生同定技術の開発と幼生輸送予測によるマガキ養殖業の効率化・安定化」に参画し、同事業において「AI画像認識による幼生の同定・計数システムの開発」を担当しております。

■同事業参画における背景・目的

プロトソリューション仙台本社は、地場の企業様と連携し、得意とするWeb技術を提供することで、地方経済への貢献をめざしております。ディープラーニングを活用した画像認識ソリューションを強みとし、大規模クルマ情報メディアでの車体識別・サイト監視など、培ってきたAI技術の活用と地域貢献を目的とし、同事業への参画を行いました。

本研究は生研支援センター「イノベーション創出強化事業」の支援を受けて実施しております。

■同事業参画リーダー関内氏インタビュー

icon_福田

icon_福田

関内 孝行 せきうち たかゆき

2006年入社。仙台本社勤務。AIテクノロジー推進室の新規サービス開発チームに所属。社内の技術推進部門の一員として、新サービスやAIの開発に携わっており、その傍らエンジニアからの技術的な相談に乗るなど、指導役とシステム管理者としての役割を担っている。また、情報セキュリティスペシャリストの資格を保有し、情報セキュリティ技術の専門家として、開発における工程管理、品質管理を支援する立場でもあり、マルチに動き回るフルスタックエンジニアとして活躍している。

本事業の中課題リーダーをつとめる関内氏に、事業の目的や今後の展望についてインタビューしました。

「マガキの養殖は、養殖の出発点となる種ガキを確保(採苗)するために適度に成長した幼生が現れたときに採苗器を海に投入する必要があります。そのため、漁業者などが発生状況を顕微鏡で観測しているのですが、熟練の技術と労力が必要で、見落としや人によるバラツキもあります。この問題をAIで解決し、省力化・高精度化・情報配信の高速化をし、養殖の安定化や増産につなげるのが目的です。」

事業参画のきっかけ

事業パートナーのアンデックスさまより、AI画像認識技術を強みとする会社を探しているということで手を挙げ、参画することが決まりました。宮城県は水産業が盛んで、今回の研究対象となるカキの生産量は全国2位を誇っています。震災の影響で養殖への影響も大きく、AI画像認識技術で役立てることがあればと思いました。
ただ、水産業に関しては素人なので、マガキについて学ぶことは多かったですね。

「IT×水産業」で養殖の安定化・増産を目指す

水産業に限らず、「人が目で見て、何らかの判断をする作業」については、画像認識で解決できる可能性はあると考えています。今回は、種ガキ採苗の効率化を目指しております。

種ガキの採苗について
カキは7~8月頃に卵を産み,浮遊幼生の時期を経て,岸壁や岩礁等,様々な所へ付着します。この性質を利用して,カキの浮遊幼生が集まりやすい場所へホタテガイの貝殻を連ねた採苗器(コレクター)を垂下し,これにカキの稚貝を付着させます。宮城県ではカキの産卵時期になると,水産技術総合センターが中心となり,本県の種場である松島湾及び石巻湾等におけるカキ浮遊幼生の発生状況や成長具合を調査し,情報提供を行っています。

種ガキの採苗について(宮城県HPより)
 

従来の方法では、カキの浮遊幼生の大きさ・個数を顕微鏡にて人が確認をとっています。この方法では、作業者によって精度のばらつきがあり、小さな視覚内でのチェックになることで見落としも多く発生していました。幼生の成長度・数が不足した状態で採苗器をおろしても、カキの稚貝が付着せずに無駄骨となってしまうこともあります。

今回の事業では、AI画像認識技術を用いることで、マガキ幼生の大きさ・個数を判別し最適なタイミングで採苗器を垂下できれば、マガキ養殖の安定化や増産が見込めます。

2021年5月時点では、AIによるマガキ判定が86.3%となり、高い精度でマガキ幼生の大きさ・個数を数値化できるようになっています。

実際に産卵期を迎える7,8月を見据えて、6月下旬からサンプリングをスタートし、さらに精度をあげていきたいですね。

教師データ作成のために医療分野の取組みを参考に

AI画像認識技術をマガキ幼生同定に活用するには、学習データ(教師データ)が必要になりますが、サンプルが少ないことが一つ難しかった点ですね。

こういった課題は、医療分野のAIにも言えます。症例数の少ない病気では画像が少なく、ラベル付けに専門家の協力が必要なところなどが共通しています。

医療分野のAI論文で学習の手法が盛んに研究されており、データの増幅 (Data Augmentation) はもちろんのこと、ラベル付けに仮組みのAIを参加させるという手法 (Active Learning や Human in the Loop) を応用することができました。
「水産業」「医療」など業種で区切るのではなく、課題としての共通点を抽出することはとても大事ですね。

AI画像認識技術をはじめとする新たな技術を活用した今後の展望

マガキの幼生をきっかけに、他の貝養殖においても同様の課題があがっています。本事業と同様の仕組みを活用
すれば、他の漁業関係者の負担や課題を解決することができることも増えると思います。
人手不足の解消や、スピーディな対応など、IT化が進むことでのメリットは多くあります。
地域に根差すエンジニアとして、宮城県の産業活性化につながる研究を続け、地域社会に貢献していきたいですね。

This blog post is the first of a blog series about speed up your machine learning prototyping. In part 1 (this part) I will talk about how to structure machine learning projects and the workflow for faster development. In part 2 I explain how to further increase the development speed with a toolbox we developed. In this post, I focus on computer vision tasks with datasets containing images as data and image annotations (bounding box, etc), but the concept is adaptable to other fields as well (NLP, tabular data, etc.).

About me

My name is Sebastian Rettig and I develop machine learning / deep learning prototypes at the AI Technology R&D Division for over 4 years now. Currently I focus on development speedup through (semi-) automation, tooling and workflow optimization.

The prototyping workflow

The workflow for machine learning projects can be broadly divided into 4 tasks arranged in a loop. The following paragraphs explains each task and corresponding steps.

1. Dataset

Create a dataset contains four main steps. First collect the data (e.g. images or tabular data) from a database, from the internet or download an existing dataset (e.g. Image-Net, COCO, PascalVOC). Second you split your data into a training set, validation set and test set. Third if not already annotated, annotate the training set and validation set by using an annotation tool, e.g. VGG Image Annotator (VIA)or VoTT (Visual Object Tagging Tool). Finally you should validate your dataset before start training to ensure that the annotations are correct as well as the training, validation and test set do not intersect, otherwise the training and benchmark results do not reflect the correct training state.

2. Training

In the training task the first step is to setup the model which includes model selection and / or modification. The second step is to connect the dataset with the model by implementing a dataset reader. The last step is to fine tune hyper parameters (batch size, learning rate, training epochs, loss function, regularization, etc.) and start the training.

3. Validation

Implement a benchmark which use the test set in the dataset. The data is fed into the trained model for inference and the results can be stored in a report file, printed in terminal or visualized in a webpage. Additionally implement analyzation tools like heatmap visualization or confusion matrix generation to reason about the current benchmark result. If the validation result do not match the premise (goals), start a new iteration with step 1.

4. API

This task is optional. You implement an inference API for demonstration purposes.

The problems

Using the prototyping workflow above, I describe the problems I faced the most in recent years.

Dataset reusability

Most machine learning or deep learning tutorials focus on how to create a model and train it with an existing dataset. That’s good if you develop or modify an existing model and want to compare your results with state of the arts (SOTA) results. But often you need to create a new dataset because existing datasets do not fit your needs. In my experience creating a dataset takes a lot more time than training the model itself and the resulting datasets are highly project-specific and hard to reuse. Three examples:

1. An image classification dataset with a label for each image can not be reused as a object detection or image segmentation dataset, there are no object annotations.

2. An object detection dataset for detecting cars on road can not be reused for detecting pedestrians, there exist no object annotations for pedestrians.

3. An object detection dataset can not be reused for image segmentation, the annotation shape do not fit.

Script reusability

To create a dataset, you can try to consolidate data from multiple existing datasets where you need to write conversion scripts between annotation formats. These scripts are often written quick and less generic, specific to the context of the project and project structure, because normaly you only convert once. This is correct until you are coming back to the same situation in another project. This also happens if you want to deploy an API for demonstration purposes. You often copy and paste an existing API script and rewrite the model inference, the pre- and post-process part as well as the UI template.

Third party repository integration

Research papers publish the source code often as a Git repository. The project structure of the source code differs and if you clone the repository and use them in your project, you are forced into that structure. There is additional time necessary to learn the structure and the workflow as well as write custom tools which also reduce code reusability.

The solution

The prototyping workflow is a loop and the tasks repeat with each iteration. Implement tools and libraries to automate and shorten the time for each iteration brings great benefit. To solve above problems, I do first a workflow refinement and create a project structure based on that. Tools and libraries are handled in part 2 of this blog series.

Workflow refinement

To increase dataset reusability the workflow changes as shown in the graphic below.

  1. 1. A data mining task is added. The goal of the data mining task is to create data collections with project-independent annotations. Because project context knowledge is not necessary, this task can be outsourced to a different team without background knowledge. The image below – taken from the COCO dataset – shows an example annotation. Street signs and cars are annotated to fit the shape as best as possible.

2. The dataset task creates a dataset out of a data collection by filter and convert only needed annotations. The data is then split into a training set, validation set and test set. This allows an easy integration and implementation of cross-validation as well. Below image shows the converted annotations in an object detection dataset.

The project structure

Below is the project folder structure created from above workflow refinement.

※Note: The data collection and dataset images are abbreviated.


workspace/
├── MyProject
│   ├── .gitignore
│   ├── datasets
│   │   └── street_views_objects
│   │       ├── build_2021.05.27-15.27.04.log
│   │       ├── categories.txt
│   │       ├── test
│   │       │   ├── 1343960723_453991a044_z.jpg
│   │       │   ├── ...
│   │       │   └── 536972399_0168b9ebec_z.jpg
│   │       ├── train
│   │       │   ├── 16417442_ead85468b4_z.jpg
│   │       │   ├── ...
│   │       │   └── 9276603906_014a6216b7_z.jpg
│   │       ├── val
│   │       │   ├── 2582184275_5ae1b927b9_z.jpg
│   │       │   ├── ...
│   │       │   └── 9065898919_89845cbf38_z.jpg
│   │       ├── via_region_data_train.json
│   │       └── via_region_data_val.json
│   └── modules
└── collections
    └── street_views
        ├── categories.txt
        ├── test
        │   ├── 1343960723_453991a044_z.jpg
        │   ├── ...
        │   └── 536972399_0168b9ebec_z.jpg
        ├── trainval
        │   ├── 16417442_ead85468b4_z.jpg
        │   ├── ...
        │   └── 9276603906_014a6216b7_z.jpg
        └── via_region_data.json

The workspace folder is defined here as the root folder for all projects. The collections folder contain all data collections. A data collection (street_view in this example) has a trainval folder for images used in training and a test folder for benchmark images. Beside the collections folder are the project folders (MyProject in this example). Because datasets are project-specific, they are stored in each project in a datasets folder. Inside a dataset folder (the street_views_objects object detection dataset in this example) are the folders train containing the training set, val the validation set and test the benchmark images. Finally the modules folder is the place to install third party repositories. The .gitignore file should ignore the datasets contents

Use git submodules to add third party git repositories

Research projects and sometimes APIs publish their source code in git repositories. Your project resides in his own repository which makes it difficult to manage multiple repositories. You should not put third party git repositories outside your project nor copy third party repository files and folders into your project as this blows your repository with contents you did not develop. Instead use the good old git submodules to add only a reference to your repository. Below are two examples to add research APIs residing in git repositories with results in the following folder structure in the modules folder (abbreviated).


│   └── modules
│       ├── detectron2
│       │   ├── GETTING_STARTED.md
│       │   ├── ...
│       │   └── tools
│       └── tensorflow
│           └── models
│               ├── AUTHORS
│               ├── ...
│               └── research

Example: Add Tensorflow Object Detection API


The Tensorflow Object Detection API installation steps explain two ways to install the API, with docker or pip. Both ways require to clone the repository to local first. Instead of cloning, we add a submodule to our project repository and store the API inside modules/tensorflow/models with the instruction below.


# inside your project folder
git submodule add https://github.com/tensorflow/models.git modules/tensorflow/models
# follow the instructions related to the submodule folder
cd modules/tensorflow/models/research
# Compile protos.
protoc object_detection/protos/*.proto --python_out=.
# Install TensorFlow Object Detection API.
cp object_detection/packages/tf2/setup.py .
python -m pip install .
# go back to the project folder
cd ../../../..
# commit the API reference to the project repository
git commit -m "installed Tensorflow Object Detection API"


The test application command below can be executed from the project folder either by use relative path or the (recommend) module path execution


# inside your project folder
# Test the installation. (relative path execution)
python modules/tensorflow/models/research/object_detection/builders/model_builder_tf2_test.py
# or Test the installation. (module path execution) (RECOMMEND)
python -m modules.tensorflow.models.research.object_detection.builders.model_builder_tf2_test

To update the API to the newest commit from the API repository, pull the master branch inside the API repository in modules/tensorflow/models.


# go to the API repository from inside your project folder
cd modules/tensorflow/models
# pull the newest commits from the API repository
git pull origin master
# rebuild the protos
cd research
protoc object_detection/protos/*.proto --python_out=.
# go back to the project folder
cd ../../../..
# commit updated reference
git add modules/tensorflow/models
git commit -m "updated Tensorflow Object Detection API"

Example: Add Detectron 2 API

The Detectron 2 API installation steps explain two ways to install the API

1. install the repository with pip

2. local clone the repository and do an editable pip install.

We will use the second way but instead of cloning, we add a submodule to our project repository and store the API in t modules/detectron2 with the instruction below.


# inside your project folder
git submodule add https://github.com/facebookresearch/detectron2.git modules/detectron2
# editable pip install to submodule
python -m pip install -e modules/detectron2
# commit the API reference to the project repository
git commit -m "installed Detectron 2 API"

To update the API to the newest commit from the API repository, pull the master branch inside the API repository in modules/detectron2.


# go to the API repository from inside your project folder
cd modules/detectron2
# pull the newest commits from the API repository
git pull origin master
# remove old build
rm -rf build/ **/*.so
# git back to the project folder
cd ../../..
# rebuild API
python -m pip install -e modules/detectron2
# commit updated reference
git add modules/tensorflow/models
git commit -m "updated Detectron 2 API"

The training step

Creating a sample dataset is recommend for faster development. This allows e.g. for validation or debugging that the model actually starts converging by using less images and shorter epochs.
The model checkpoints and weight files are recommend to save in the folder of the dataset used for training. This allows easy association between dataset, training and validation results and reduces management time if stored outside.

Recap

I explained a way to create a unified structure for machine learning projects. Third party repositories can be integrated into this structure by using git submodules. Having a unified project structure makes it easier to implement reusable generic scripts and to maintain projects.
A data collection with project-independent annotations allows data reusability. Datasets are project-specific and generated from data collections by filter necessary annotations and convert them to the format needed in the project.

Part 2 of this series explains the tooling based on this project structure to improve the iteration time.

Join us!

ITエンジニア

ITエンジニア

沖縄本社では、一緒に働くITエンジニアを募集しています

AIエンジニア、システムエンジニア、その他多数募集中!

ITエンジニア

ITエンジニア

仙台本社では、一緒に働くITエンジニアを募集しています

自社プロダクト(SaaS)開発エンジニア、社内インフラ、その他多数募集中!

ITエンジニア

ITエンジニア

東京支社では、一緒に働くITエンジニアを募集しています

データサイエンティスト、データベースエンジニア募集中!

ページトップへ戻る