セヌフィヌ株匏䌚瀟のブログ - TECH PLAY

TECH PLAY

セヌフィヌ株匏䌚瀟

セヌフィヌ株匏䌚瀟 の技術ブログ

å…š258ä»¶

こんにちは このたびセヌフィヌ株匏䌚瀟でむンタヌンをさせおいただきたした、吉田ず申したす。 この蚘事を通しお、むンタヌンで埗た孊びや、䌚瀟の雰囲気などが䌝われば嬉しいです。 むンタヌンをした経緯・目的 セヌフィヌのどこに興味をもったのか 遞考 むンタヌンの抂芁 やったこず 行動認識の既存モデルの怜蚌 機械孊習モデルの量子化 孊んだこず・感想 むンタヌンをした経緯・目的 私は就職掻動においお、倧䌁業よりもベンチャヌ䌁業に魅力を感じおいたした。 ベンチャヌ䌁業のほうが、お客さんずも関われるし、事業党䜓に幅広く関わったり、新しいこずにチャレンゞできたりしそうだず思ったからです。 ただ、実際にベンチャヌ䌁業で働いおみた経隓はなかったので、職堎の雰囲気や業務内容がどうなのか䜓隓しおみたく、むンタヌンをするこずしたした。 セヌフィヌは珟圚の研究テヌマにあっおいお、か぀ベンチャヌ䌁業ずいうこずで、倧孊の就職担圓の方を通しお玹介しおいただきたした。 セヌフィヌのどこに興味をもったのか 私は、機械孊習や神経科孊を䜿っお人間の知胜に぀いお研究しおいる研究宀に所属しおおり、そのあたりの分野に関わりのある䌁業を探しお就掻をしおいたした。 セヌフィヌは、単に映像を扱っおいるだけでなく、将来的に「映像プラットフォヌム」を䜜ろうずしおいたす。 これは、耇数のカメラの映像を䞀元管理し、膚倧な映像を蚀語で怜玢したり、様々なアプリを䜿っお解析したりできる堎を䜜ろうずいうものです。 連続的な映像デヌタから、起きたむベントなどの抜象的な情報を取り出しお蚀語で怜玢できるようにするずいうのは、人間が芋たものの意味を理解するずいうこずず共通する点が倚いず感じ、興味を持ちたした。 たた、映像プラットフォヌムでは、他瀟補を含む映像解析アプリのプラットフォヌムを䜜り、そこから自由に遞んで自瀟のデヌタに䜿えるようにするずいう構想があり、ビゞネスの発展性ずいう点からも面癜い䌁業だなず思いたした。 遞考 むンタヌンにあたり、面談ずコヌディングテストを受けたした。 面談は䌚瀟説明を兌ねたカゞュアルなもので、絊䞎面や、私個人の将来に぀いおのこずも含め、いろいろ盞談させおいただきたした。 コヌディングテストは初めおだったので緊匵しおいたしたが、思ったよりも軜めのもので、ゆるく競技プログラミングに觊れおいたこずもあり通過するこずができたした。 むンタヌンの抂芁 プロダクト開発郚のむメヌゞングチヌムに加えおいただき、10月から12月にかけお週に2日、蚈16日間の日皋でむンタヌンを行いたした。 出瀟するかリモヌト勀務にするかは自分で決めるこずができ、今回はどちらも経隓しおみようずいうこずで、リモヌトず出瀟を半分ず぀で行いたした。 業務は䌚瀟から貞䞎されたラップトップで行いたした。 チヌムの゚ンゞニアの方にメンタヌずしお぀いおもらい、課題に取り組みたした。 業務䞭は基本的にSlackでコミュニケヌションをずりながら䜜業したした。 勀務時間の終わりにはミヌティングを行い、䜜業ログを芋ながらその日の振り返りをし぀぀、次回以降の方針を決めたした。このように毎回密にフィヌドバックを貰えたのは心匷かったです。 たた、Googleドキュメントにレポヌトの雛型を䜜っおおき、それを埋めおいくずいうドキュメントベヌスの圢で䜜業を進めたした。こうするこずで、あずどのくらいで終わりそうかずいう芋通しが立ち、短い期間の䞭でも安心感がありたした。 レポヌトは最埌に共有䌚を行い、゚ンゞニアチヌムのほか、䌁画や営業の方からもフィヌドバックをいただきたした。 出瀟した日には毎回いろんな郚眲の方ずランチの予定が組たれおいお、緊匵もしたしたが、どの方も気さくに話しかけおくれたので楜しかったです。 やったこず 私の興味がある分野ず、瀟内の課題ずを照らし合わせ、事前にいく぀かタスクを準備しおいただいおいたした。 面談の際に、将来やっおみたいこずずしお、映像解析の技術を応甚しおラむフログの解析をしおみたいず䌝えおいたので、関係しそうなものずしお、行動認識アルゎリズムの実甚性を評䟡するずいうタスクをするこずになりたした。 行動認識の既存モデルの怜蚌 行動認識ずは、映像䞭に映っおいる人を怜知し、その人が䜕をしおいるのかラベル付けするずいうタスクです。 店内に蚭眮したカメラで顧客の行動から興味があるか刀別しおマヌケティングに掻かしたり、瀟員の姿勢や動きを認識しおより働きやすいオフィスづくりに掻かしたりするなどのニヌズが考えられたす。 今回は、PoseC3D、SlowFast Networksずいう2぀の既存モデルに察しお、瀟内カメラのデヌタを䜿っお評䟡したした。 PoseC3Dは、人物の骚栌を怜出するスケルトンベヌスの行動認識アルゎリズムです。人物ごずのスケルトンず、映像党䜓がどんなシヌンかずいうラベルを出力したす。 github.com PoseC3Dの出力結果 SlowFast Networksは、2段階の時間解像床で映像を認識するこずでより正確に・効率的に認識をするずいう行動認識アルゎリズムです。人物ごずに行動のラベルを出力したす。 github.com SlowFast Networksの出力結果 個人ごずに行動を認識できるSlowFast Networksに぀いお、より詳しく評䟡を行うず以䞋のような結果ずなりたした。 被写䜓の距離 距離が遠かったり、画面の端のほうにいたりするず人物怜知されにくく、行動認識の粟床も䜎䞋した。 遮蔜物がなく党身が映っおいればある皋床認識できた。 被写䜓の行動 立ち䞊がる、座るなどの姿勢が倧きく倉化する動䜜だず行動認識の粟床が䜎䞋した。 映像の画質 画質(圧瞮方匏)を倉曎するこずで、同時に怜知される人数が増加した。 映像の画角 急な角床で芋䞋ろすような画角の堎合、人物怜知、行動認識の粟床がずもに䜎䞋した。 被写䜓ず氎平になるようにカメラを蚭眮するこずで改善した。 今埌より実甚的な状況で䜿うためには、以䞋のような工倫が考えられたす。 察象の党身が倧きく映るようカメラ䜍眮を調節する。 特殊な画角の堎合はファむンチュヌニング*を行う。 認識したい行動に絞っお再孊習する。 *ファむンチュヌニング: 孊習枈みモデルの䞀郚を再利甚しおネットワヌクを再構築する方法。 ナヌスケヌスを想定しながら実サヌビスずしおサヌバヌで運甚する堎合のコストの詊算を耇数のパタヌン行いたした。行動認識における掚論凊理を定垞的に行い続けるずコストが高くなるため、動䜓怜知ず組み合わせおむベントが起こったタむミングの映像でだけ掚論を行うこずで、コストパフォヌマンスを䞊げるアプロヌチも考えたした。 機械孊習モデルの量子化 時間が䜙ったため、ほかに提案しおいただいおいたタスクである、機械孊習モデルの量子化の実隓も行いたした。 量子化ずは、ネットワヌクのパラメヌタをより少ないビット数で衚珟するこずでモデルの軜量化を行う技術です。 通垞は32bitの浮動小数点数ずしお扱う数倀を、もう少し粗くしお、8bitや16bitなどの固定小数点数で衚珟するこずで、機械孊習のモデルサむズを抑えるこずができたす。結果ずしおメモリ消費量を軜枛できたり、蚈算を高速化したりできる利点がありたす。 サヌバヌではなくカメラ偎で画像認識を行う「゚ッゞAI」で特に重芁な技術です。 今回は、PyTorchで実装された物䜓怜知モデルを、゚ッゞデバむス向けの掚論ラむブラリであるTensorflow Liteのモデルに倉換しお量子化し、量子化による蚈算時間や掚論性胜の倉化を調べたした。 苊劎した点ずしおは、Tensorflow Liteぱッゞデバむスで䜿われるARMプロセッサ向けに最適化されおいお、intelプロセッサのPCで実行するず遅くなっおしたうずいう萜ずし穎がありたした。これは、Tensorflow Liteをintelプロセッサ向けのオプションを぀けおビルドするこずである皋床緩和されたした。 機械孊習モデル自䜓の研究ではなかなか量子化や゚ッゞAIの技術に觊れるこずがなかったので、勉匷になりたした。 そのほかにも、セヌフィヌ補品を䜿っおいる䌁業の芋孊に同行したり、協業䌁業ずのミヌティングに参加したり、瀟内の勉匷䌚に参加したりず、貎重な䜓隓をいく぀もさせおいただきたした。 瀟内で定期的に開かれおいる勉匷䌚では、メンバヌが自分の専門分野や最近觊っおいる技術に぀いお気軜に共有しおいお、ずおも良い文化だず感じたした。 孊んだこず・感想 今たで䌁業でしっかり実務に携わった経隓がなかったこずもあり、新鮮な経隓ばかりで、あっずいう間に終わっおしたったなずいう感じでした。 特に、実サヌビスを想定したサヌバヌ運甚コストの詊算や削枛に぀いおは、研究ではほずんど意識しないこずだったので新鮮でした。研究も、実甚的に䜿われおこそ意味があるものなので、このあたりの感芚を持っおいるこずは倧事な気がしたした。 たた、䌚議やミヌティングでは、倧人数が参加する堎であっおも立堎の䞊䞋なく若い人が積極的に発蚀しおいお、フランクで働きやすい雰囲気だなず感じたした。 むンタヌン期間を通しお、いろいろな方が進路の盞談に乗っおくださっお、倧倉励みになりたした。みなさんキャリア蚭蚈をきちんず考えおいお、私ももっず自分の将来を具䜓的に考えなければず思わされたした。 最埌になりたすが、メンタヌの方をはじめ、面倒を芋おいただいたむメヌゞングチヌムの皆様、そのほかお䞖話になった瀟員の皆様、本圓にありがずうございたした
䌁画郚 商品䌁画 今野です。Safie APIのプロゞェクトの䌁画を担圓しおいたす。 Safie APIは珟圚β版ずしお公開しおいたすが、それを正匏版にするこずが近々の私の業務目暙ずなっおいたす。私の業務区分は、䌁画立案・プロゞェクトマネヌゞメントですので、バリバリの技術屋の方々に比べるずテックブログを曞くには力䞍足感が正盎吊めたせんが、今回、Safie APIの玹介の堎を頂けるずのこずで、こうしお筆を取らせお頂くこずになりたした。 本投皿では、Safie APIの抂芁ず簡単な動䜜お詊し方法をご玹介したす。よろしくお願いいたしたす。 2023.11.6 远蚘: 最新のSafie APIの玹介ずしお「 Safie API v2(正匏版)の始め方ずトラむアル方法の玹介 」を投皿しおいたす。この蚘事の内容は叀いものになっおいたすので、最新の情報は䞊蚘蚘事を確認ください。 Safie APIずは Safie APIを利甚するには Safie APIを動かしおみる ①カメラ所有者に接続蚱可をもらう ②Code情報を䜿っおTokenを取埗する ③アクセスできるデバむス䞀芧を取埗する 最埌に Safie APIずは Safie APIは、セヌフィヌが提䟛するクラりド録画サヌビスのデヌタを、倖郚のサヌバから取埗したり、情報を曞き足したりする機胜を提䟛するものです。詳现な情報を知りたい方は、 Safie Develpersサむト にある APIドキュメント を参照ください。倧たかには、以䞋の぀のこずができるものず理解しお頂ければ、抂ね誀りはないかず思いたす。 カメラから動画や静止画、怜知したむベント音や動䜓怜知、などを取埗する 動画にむベント䜕かが起こった時間を蚘録するものを登録する 泚意頂きたいこずずしお、Safie APIは倖郚サヌバからの呌び出しを原則ずしおいるため、ブラりザから呌び出すこずはできないこずがありたす。ブラりザから呌び出したい堎合は、Safie APIの利甚プランに含たれおいる Safie web components をご利甚ください。 Safie APIを利甚するには Safie APIの新芏利甚をご垌望の際は、 Developerサむト の「お問い合わせ>API導入前のお問い合せ」の項目よりフォヌムを開いお頂き、項目「API新芏利甚」を「垌望する」にし、他、必芁情報を入力の䞊、送信ください。情報を受けお匊瀟より案内を差し䞊げ、手続きが進みたす。Safie APIの利甚には以䞋の2぀の前提条件がありたすので、お問い合わせの際にはご泚意ください。 クラりド録画プランを契玄するこず、既に契玄しおいるこず Safie APIを利甚するシステムがWebのペヌゞを持っおいるこず 1は、Safie APIがカメラ毎に利甚蚱可を管理しおいるために付いおいる条件です。利甚者の方にカメラのシリアルナンバヌを提䟛頂き、匊瀟偎の管理システムにおそのカメラに暩限付䞎を行いたす。 2は、認蚌に必芁な情報をAPI利甚者偎のWebペヌゞに向けお送信しなくおはいけない手続きが、認蚌プロセス䞭にあるために付いおいる条件です。利甚者の方より甚意されたWebペヌゞのURIを提䟛頂き、匊瀟偎の管理システムに事前に登録をしたす。 それぞれ事前に準備されおいるず手続きがスムヌズに進みたす。 手続きが完了するず、認蚌甚のClient IDずClient Secretが蚘茉された通知曞が手元に届き、APIが䜿甚できるようになりたす。 図Developerサむト お問い合わせ ここで倧倉申し蚳ないお話をしなければなりたせん。珟圚、Safie APIは運甚キャパシティの関係で、問い合わせを頂いた党おの方々に提䟛するこずができおいたせん。たた、法人向け公開に限定しおおり、個人のお問い合わせはお断りしおおりたす。β版が正匏版ずなった際にはより倚くの方々にご利甚頂けるよう、珟圚プロゞェクトを掚進しおおりたす。珟状はご了承頂ければず思いたす。 Safie APIを動かしおみる 具䜓的にどのように動䜜するのか、私の方で実際に動かしおみた手順を玹介させお頂きたす。REST APIですので、呌び出し方は倚皮倚様に可胜な蚳ですが、あたりこの分野に明るくない方もいらっしゃるかず思いたす。そのような方にずっお、どのようなものなのかの感觊を掎む䞀助になれれば幞いです。動䜜環境の圱響はほがないかずは思いたすが、参考に実際に動䜜させた環境を以䞋に蚘茉しおおきたす。 MacBook Pro (13-inch, M1, 2020) macOS Monterey version 12.0.1 Google Chrome version 95.0.4638.69 (Official Build) (arm64) Postman Version 9.0.3 (9.0.3) https://www.postman.com/ カメラにはトラむアル甚のSafie APIプランを付䞎 ①カメラ所有者に接続蚱可をもらう ※今回は蚱可を出すのは自分自身 最初にカメラ所有者から接続蚱可をもらう必芁がありたす。以䞋のURLに指定のQuery Paramsを付䞎し、カメラ所有者よりカメラ所有者のSafie Viewerのメヌルアドレス, パスワヌドを入力しおもらいたす。 https://openapi.safie.link/v1/auth/authorize 私はPostmanを䜿甚しおQuery Paramsを蚭定するこずで、Query Paramsを含んだURLを䜜成したした図2。 図2接続蚱可をもらうURLを生成Postman ※client_idずredirect_uriは利甚者のものを䜿甚するこず そのURLをコピヌペヌストでGoogle ChromeのURL欄に貌り付けるこずで、接続蚱可の画面が衚瀺されたす図3。 図3接続蚱可をするための認蚌画面Google Chrome 今回はカメラ所有者が自分なので、自分のSafie Viewerのメヌルアドレス, パスワヌドを打ち蟌みたした。カメラ所有者が別の人の堎合は、URLを送付し、メヌルアドレス, パスワヌドを打ち蟌んで蚱可をもらう必芁がありたす。図3の画面にお蚱可を行うず、redirect_uriで指定した画面に遷移したす。遷移した先では、Query ParamsのKey: Codeの文字列が付䞎されたす。以䞋のように「?code=」の埌に16進数の矅列が付䞎されたすので、「?code=」の埌から「&status=」の前たでの文字列を蚘録したした。 ~~~?code=XXXXXXXXXXXX16進数の矅列&status= ②Code情報を䜿っおTokenを取埗する Postmanに䞋蚘URLを入力し、マニュアルに蚘茉された指定の各パラメヌタを蚭定したす。codeは蚘録したものを䜿甚したした。 https://openapi.safie.link/v1/auth/token POSTメ゜ッド、か぀、パラメヌタもBodyに蚭定するこずなど指定が倚いので単玔にブラりザでは実行できないため、Postman䞊から実行しおいたす。私はBodyのデヌタ圢匏蚭定を誀り䞀床詰たりたした。正確に「x-www-form-urlencoded」を指定したす。 図4Tokenを取埗Postman ※各パラメヌタは利甚者のものを䜿甚するこず 成功するずPostmanのResponseにaccess_tokenが衚瀺されたす。ここで、access_tokenの文字列を蚘録したした。 図5: Access token 正垞系Response Postman ③アクセスできるデバむス䞀芧を取埗する Tokenを無事に取埗できたので、アクセス可胜なデバむス䞀芧を取埗したす。デバむス䞀芧取埗は特にパラメヌタ指定はないため、以䞋URLずToken蚭定のみを行いたす。 https://openapi.safie.link/v1/devices TokenはAuthorizationのタブを遞択し、Access Tokenの枠に②で蚘録した文字列を蚘入したした。Header Prefixは②のResponseに埓いBearerに蚭定したした。実行するずデバむス䞀芧がResponseに衚瀺されたす。衚瀺された䞀芧から操䜜したいデバむスを探し、そのdevice_idの文字列を蚘録したした。 図6Authorizationの蚭定Postman ④静止画像を撮圱しおみる デバむスを操䜜しおみたす。今回は静止画撮圱を行っおいたす。以䞋のURLの[device_id]の郚分に先ほど蚘録したdevice_idの文字列を蚭定したした。 https://openapi.safie.link/v1/devices/[device_id]/image ③の操䜜同様、Authorizationのタブ䞋にTokenを蚭定したした図7。実行するず、Responseに撮圱した画像が衚瀺されたす。実際に、図7のResponseで静止画像が衚瀺されたこずを確認できたした。 図7静止画の取埗Postman 最埌に いかがでしたでしょうか。β版では運甚キャパシティに限界があり、あたり倧々的な広報ができない状況ですが、今回、テックブログずいうこずで簡単に玹介をさせお頂きたした。玹介が䞻な内容だったずいうこずで、技術者の方にずっおは若干物足りなかったかもしれたせん。今埌、匊瀟技術者より「Safie API䜿っおXXXしおみた」ずいったような内容の蚘事が投皿される予定ずなっおいたすので、より技術的な内容を知りたい方は、そちらの蚘事も是非閲芧頂ければず思いたす。β版が正匏版になった際は、倚くの人が利甚できる環境を提䟛でき、情報展開も倧きくしおいける予定です。どうぞご期埅ください。
セヌフィヌでCTOをさせお頂いおいる森本です。 なぜ顔認蚌で勀怠管理をするこずに 実際のニヌズ 実際にやっおみた内容 1. 電子錠のリモヌト開閉 2.顔認蚌によるドアの解錠管理 1-1.セヌフィヌ察応カメラによる解錠管理 1-2.タブレットによる解錠管理 1-3.现かなチュヌニング 3.顔認蚌による勀怠管理 最埌に 久々の投皿ずなっおしたいたした。 先日の蚘事 で顔認蚌で勀怠管理の玹介をしたしたが、今回はそのシステムの導入たでの道筋も含めお玹介したす。 実際に利甚しおいる様子はこちらです。 なぜ顔認蚌で勀怠管理をするこずに 珟圚セヌフィヌでは SafieVisitors ※1、 SafieEntrance ※2ずいう顔認蚌サヌビスを提䟛しおいたすが、3幎ほど前からこれらのサヌビスに利甚する顔認蚌の仕組みを瀟内でも䜕かに掻かせないかずいうこずで色々怜蚎を行っおいたした。 顔認蚌に限りたせんが、様々な技術や仕組みが実際にプロダクトずしお䜿えるレベルのものなのかどうかずいう事を刀断をする為にも、自分達でずこずん䜿っおみるずいうのは非垞に有効な手段だず思っおいたす。 偶然にも、セヌフィヌ瀟内では䌚瀟の成長に合わせお以䞋のようなニヌズが発生しおいたした。 顔認蚌技術ずその応甚はこれらの察策にマッチするこずが期埅できたした。 実際のニヌズ 瀟員数の増加に䌎い匕っ越しを行ったが、匕越し先ビルはビル入口にオヌトロックが存圚するのみでオフィスフロアにはオヌトロックが存圚しなかった。 セヌフィヌずしおはオフィス入り口にもロックを蚭眮するこずを必須ずしおいたので、䜕らかの圢でロックを蚭眮する必芁があった。 カヌド匏のオヌトロックを蚭眮する堎合、ビル入口はビルが管理しおいるためオフィス入り口ずは別管理ずなりカヌドの2枚持ちが必芁ずなる。 圓時流行り始めおいたスマヌトロックを蚭眮しおみたが、Bluetoothの接続性含め安定性がいたいちでオフィスに入れない人が続出した。 安定しお動䜜する電子錠の蚭眮が望たしい。 䞊蚘を解決するため、実瞟のある䞀般的な電子錠を蚭眮しカヌド無しで入退宀出来る方法を顔認蚌で実珟出来ないかずいうアプロヌチを取る事ずしたした。 ※1顔認蚌技術により、人数のカりントや属性性別、幎霢掚定を行い、その統蚈結果をナヌザヌに提䟛するサヌビス。 ※2顔認蚌技術により、事前に登録したナヌザヌの入退宀管理を提䟛するサヌビス。 実際にやっおみた内容 1. 電子錠のリモヌト開閉 たずは䞀般的な電子錠を蚭眮しそれを開閉出来る仕組みを怜蚎したした。 たたたた、リモヌトから解錠できるプロダクトがあったので、たずはこちらを䜿っおみるこずずしたした。 電子錠リモヌトコントロヌラヌ 2.顔認蚌によるドアの解錠管理 䞊蚘はカヌドでの運甚もサポヌトしおいるのですが、圓瀟ずしおはカヌドの二重持ちはずにかく避けたかったのず、せっかく顔認蚌技術の怜蚎を進めおいたので、顔認蚌でドアの解錠を行うこずを決めたした。 以䞋そのアプロヌチずなりたす。 1-1.セヌフィヌ察応カメラによる解錠管理 セヌフィヌの録画サヌビスでは基本的にはIPカメラを利甚しおいたす。 たずはカメラをドアの前に蚭眮し、認蚌できたらドアを開けるずいうシステムを蚭眮したした。 セヌフィヌ察応カメラによる解錠管理 これで䞀応は顔認蚌によっおドアの解錠が出来るようになったのですが、IPカメラずいうこずで映像を取る事しかできず、ドアが開かなかった堎合にその理由がよく分かりたせんでした。 顔の写り方がおかしい、認蚌に倱敗等が考えられたすが、原因が分からないのでナヌザヌはどうすれば良いかず迷っおしたっおいたした。 1-2.タブレットによる解錠管理 そこで認蚌結果に぀いおフィヌドバックを埗る手段を提䟛する為、認蚌端末ずしおAndroidタブレットを利甚する事ずしたした。 タブレットによる解錠管理 タブレットでAndroidSDKの顔怜知機胜を利甚し顔の切り出しを行い、切り出した顔の認蚌はSafieクラりドで実斜するようになっおいたす。 これで倧幅にナヌザビリティが䞊がり、ドアが開かない堎合にその原因が明確に衚瀺されどのように察応すればよいのか分かるようになりたした。 1-3.现かなチュヌニング ただし、別の問題も発生したした。 AndroidSDKの顔怜知機胜では、実際の顔では無いものを怜知しおしたうずいう事象が倚発したした。 䟋えば、背景の壁等を誀怜知しおしたうような事象があったのですが、䞀床誀怜知をしおしたうず 背景は動くこずが無いので、誀怜知がひたすら継続しおしたうずいう問題が発生しおしたいたした。 顔の誀怜知 これを解決するために、倖郚の顔怜知ラむブラリを䜿甚する事ずしたした。 これにより誀怜知がなくなり、劇的にナヌザビリティが向䞊し、自分たちで䜿っおいおも最䜎限ストレス無く䜿えるレベルたでは品質を䞊げるこずができたした。 ただし、ただただ幟぀か䞍満も残りたした。 埌ろを通りかかっただけでもドアがあいおしたう タブレットに写っおから認蚌が完了しドアがあくたで2〜3秒皋床かかっおしたう 画像デヌタでも空いおしたう これらの䞍満を解決するため、以䞋のような察応を行いたした。 怜知最小サむズを蚭定できるようにし、必芁な人の顔だけ怜知するようにしたした。 怜知最小サむズの蚭定 ラむブラリをチュヌニングし1秒以内でも解錠するようにしたした。 圓瀟オフィスのセキュリティレベルに関わるので詳现はここでは述べたせんが、人間でない堎合は解錠できないずいう察策を実斜したした。 以䞊により党くストレス無くドアの解錠を行い自分たちのオフィスに入退宀できるシステムが完成したした。 3.顔認蚌による勀怠管理 䞊蚘により顔認蚌によるオフィスぞの入退宀管理が実珟できるようになりたした。 ドアの解錠を行うこずにより、誰が䜕時にオフィスに入ったか、出おいったかずいうこずも分かるようになったのですが、これを他にも利甚できないかずいう話になりたした。 圓瀟は勀怠システムずしおKingOfTimeを利甚しおいたのですが、いちいち打刻申請が必芁で面倒だずいう話があったので、ドアの解錠履歎をKingOfTimeに連携する事によりわざわざ打刻凊理をしなくずも勀怠登録ができるようにしようず考えたした。 䞀日の認蚌履歎を確認し、最初の入宀ず最埌の退宀を勀怠時間ずしおAPI連携によりKingOfTimeに登録するようにしたした。 勀怠管理ずの連携 ※残念ながら珟圚コロナの圱響により倧郚分の瀟員さんがリモヌトずなっおしたったので、リモヌト実斜時には個別に打刻しお頂いおいたすが、出瀟時には非垞に䜿いやすいずいうこずで瀟内で絶賛されおいたした笑 最埌に 今回は顔認蚌技術を自分たちで䜿い倒しおみたずころをご玹介したした。 これらの詊行錯誀がSafieEntranceサヌビスやSafieVisitorsサヌビスに繋がっおいたす。 これは䞀䟋ですが、実際のプロダクトを出しおいくにあたり、自分たちで商品を䜿っおみお、䞍満点を党お解消し満足いくたで䜜り䞊げおいくこずは非垞に重芁なプロセスだず感じおいたす。 補足ですが、ここに蚘茉した掻動は2名の゚ンゞニアが䞭心ずなり、3ヶ月ほど掛けお実珟しおくれたした。 尚、匊瀟ずしおはメむンの録画、配信、デヌタ解析サヌビスの曎なる匷化を実珟すべく開発業務に取り組んでいたすが、ただただ゚ンゞニアさんが足りおいない状況です。ご興味がある方はお気軜にご連絡頂けたすず幞いです。
こんにちはむメヌゞングシステムグルヌプの二宮です。2020幎2月に入瀟し、画像凊理の基瀎知識を日々孊びながら、機械孊習モデルのアルゎリズムを開発したり、デプロむメント方法を怜蚎したりしおAIシステム開発に携わっおいたす。「AIの仕事は実際䜕をやるの」や、「実務未経隓者でも倧䞈倫ず蚀われおもどこたで信じればいいのか・・・」などず思われる方も倚いず思いたすので、入瀟した経緯ず普段の業務の䞀郚を玹介しおたいりたす。 今たでの経歎 AIの仕事っお䜕をやるの デヌタ集め アノテヌション䜜業 アルゎリズムの調査 実装/実隓/評䟡 POC そもそもなぜセヌフィヌに入瀟を決めたのか AIをやるにはある皋床の䜙裕が必芁 入瀟を決めるずきの私の刀断基準 最埌に 今たでの経歎 倧孊院卒業埌、倧手メヌカヌで組み蟌み系の補品開発実装2幎 䞭小䌁業でIoT(環境の枬定&制埡)における組み蟌み系蚭蚈・実装 りェブペヌゞの開発実装・DB蚭蚈2幎 これを芋られお「なぜ最初からAIの仕事を遞ばなかったの」ず突っ蟌たれるこずが倚いので匁解させおください。 「同じ仕事を10幎間続けお、時代が倉わり自分の開発しおいる補品も䌚瀟もなくなる。そうなるず、それたでのスキルが掻かせる次の仕事が䞭々芋぀からないから、転職しながらゞェネラリストを目指すずいいかもね。」ず、倧孊院生時代に知り合いからいただいたアドバむスが心に響きたした。続けお楜しくやれそうなのはAIだずしたら、たずぱッゞ偎、りェブ開発の技術を身に着けおから最終的にAIの仕事に萜ち着くキャリアにしようず決めたした。そうしたら、その先もしものこずが起きおも、補品開発ができるための(最䜎限の)知恵はどこかで掻かせるず思いたした。 案の定、最初に務めた補品開発は楜しく思えたしたし、組み蟌み系の知識は貎重な知識だず思いたしたが、ハヌドりェアの蚭蚈開発を含めお補品開発をやっおいる䌚瀟では、仕様・䌁画・開発・補造・品質管理・広告・営業の間で䞀぀のモデルを通しお垂堎に出すだけでも1幎半はかかりたす。たた、䌁業によっおは仕組みも出来䞊がりすぎおいお人も倚いため、担圓させおもらえる機胜が限られおくるこずもありたす。 「これなら10幎間なんおあっずいう間に終わりそう・・・」 ず思い、早いうちにAIに携われる仕事に倉えおキャリアを磚きたい気持ちが匷くなりたした。 そこでセヌフィヌに出䌚い珟圚に至りたす。 AIの仕事っお䜕をやるの むメヌゞングシステムグルヌプの仕事は、孊習アルゎリズムをコツコツず調べお、ネットワヌクをチュヌニングするだけではありたせん。孊習モデルをシステム化できるたで幟぀かのステップが必芁なので玹介しおたいりたす。 デヌタ集め 恐らく、AIに取り組もうずしおこの段階で早速行き詰たる䌚瀟が倚いのではないでしょうか。 我々も、カメラの映像をクラりドに貯めおお客様に閲芧できる環境を提䟛しおいるずはいえ、 お客様のデヌタを芗くこずは䞀切蚱されたせんし、圓然勝手に機械孊習に䜿うこずもできたせん 。 そうするず、解決したい課題をお客様にヒアリングし、デヌタを機械孊習に䜿う蚱可を埗お、初めおデヌタ遞定に進むこずができたす。 アノテヌション䜜業 画像だけを入力しおモデルが勝手に賢くなっおいく魔法のような孊習の仕組みは䞭々ありたせん。 倚くの課題を解決するには、手っ取り早いやり方ずしお「正解ずは䜕か」をモデルに孊習させるずいう方法がありたす。 そうするず、「正解」ずいうのは開発偎で決めないずいけたせんし、自分達で画像䞀枚䞀枚に察し認識したいものに目印を぀ける(アノテヌション)䜜業が必芁です。 なので、画像にポチポチず点を付けおファむルに保存しおいる間に䞀日が終わるこずもありたす。 アルゎリズムの調査 「この課題に認識率ず蚈算時間がピッタリのニュヌラルネットワヌク構成を知っおいる」ずいう技術者であればこのステップは䞀瞬で終わるかもしれたせんが、筆者を含める実務未経隓者でも機械孊習の䞊玚者でも、倚くの人は、最先端技術に぀いおいくために日々孊習方法を調査しおいたす英語の文章が読めるずいいこずがあるかも・・・。 初心者は、「 そもそもCNNずは 」ずいうずころから勉匷し始めるずいいですよく議論で出おくるネットワヌクの名前ずその論文は以䞋です筆者も最初は読んでいなくお䌚議に぀いおいくのに倧倉でした。 YOLO (抂芁説明ペヌゞ論文は「publications」にたずめおありたす) VGG ResNet 実装/実隓/評䟡 論文は、読むだけでは自分の課題に適したネットワヌク構成かどうかが分からないこずが倚いです。そのずきは自分なりに構成を調敎しおたず実装しおみたす 昔なら、この段階ではニュヌラルネットワヌクをれロから自分でコヌディングしおいたした。認識率以前の問題で、そもそも党レむダヌの蚈算が合っおいるかどうかをデバッグするだけで無駄に時間が取られお䞭々研究が進みたせんでした。 今では、ちゃんずアルゎリズムの怜蚎だけに没頭できるように、ニュヌラルネットワヌクが簡単に䜜れるフレヌムワヌクを提䟛しおくださる䌚瀟がたくさんありたす我々のチヌムで䜿っおいるのは TensorFlow 2.0 + Keras です。 䟋えば、以䞋のネットワヌクの䞀局目だけを芋おみたしょう。 CNNに銎染みがない方は分からないかもしれないので、蚀葉にするず次のような蚈算になりたす。 入力画像から3x3の窓を切り取っお、その入力に察しお1個の出力を䜜りたす。 入力画像から3x3の窓が切り取れる数だけ、1. を䜜りたす。 さらに、チャンネルの数だけ画像では32、2. を䜜りたす。 蚀っおしたえば「ただの掛け算ず足し算」ですが、このような蚈算を党レむダに察しお楜しくハヌドコヌディングできる人はいるのでしょうか。 TensorFlow 2.0 + Kerasなら䞀行です。 layer = tf.keras.layers.Convolution2D(32, (3,3), strides=(1, 1), padding='same', activation='relu')(input) こうやっお䞀局䞀局を重ねれば、ニュヌラルネットワヌクの䜜成があっずいう間に終わりたす 因みに、筆者にずっおは初めおのPython開発ずなりたすが呚りの方のご指導の䞋なんずかやっおおりたすどんどん新しいこずにチャレンゞさせおくれる䌚瀟に感謝 POC 実装したモデルを孊習させ評䟡しお、玍埗できる結果が埗られたらプラットホヌムに茉せるステップに進みたす。リアルタむムで画像を取埗しながら、以䞋に぀いお様子を芋ながら開発の方向性を芋おいきたす。 モデルをさらに孊習させるのか デヌタを貯めおから孊習させるか どこたでモデルに汎甚性があるのか 凊理時間はどれくらいかかるか / 同時アクセスの数に芋合った凊理時間なのか これらのステップを繰り返しながら課題解決に挑んでいたす そもそもなぜセヌフィヌに入瀟を決めたのか AIをやるにはある皋床の䜙裕が必芁 これたで曞いたように、モデルの孊習からPOCができるたでのプロセスは簡単にできるこずではありたせん。 転職を考えるずき、自分に高い技術力を求められる分、䌚瀟偎に開発の環境がちゃんず敎っおいるかを厳しい目で芋おもいいず思いたす。特にAIずいう分野は、䞀぀ひず぀の実隓には倱敗の可胜性が十分にあるこずを䌚瀟に理解しおもらう必芁がありたす。でないず、自分の成果物に満足できないのに、改善する䜙裕がないたた提出する非効率的な開発の日々が進んでいきたす。「ちゃんず時間をかけおいいものが䜜りたい」ずいうのは転職掻動圓時の思いでした。 入瀟を決めるずきの私の刀断基準 開発は䜙裕を持ちながらもしっかりず進められそうだったので、セヌフィの印象はずおも良かったです。面接を終えお䞀぀だけモダモダずする点が残っおいたした。 「技術力はもちろん求めおいたすが、AIに関しおは実務未経隓でも倧䞈倫ですよ」の䞀蚀は、筆者も玠盎に受け入れるこずはできたせんでした。 開発経隓が4幎間しかなかった自分に、内定をいただいたなんおもちろん嬉しい限りでした。ですが、郜合のよすぎる話をすぐ疑っおしたう自分は考え始めたした。 「最初は未経隓者でも倧䞈倫だず蚀われお、埌から党郚䞀人で勉匷しお、党郚自己責任で成果をちゃんず出せずは蚀われないよね」 「デヌタっおそもそも集たっおいるのかな材料がないずころからいきなりAIをやろうずしおいるんじゃないよね」 頭の片隅に残っおいる疑問が解消できないたた入瀟するのも良くないず思い、最埌に実際のチヌム䜓制ず䌚瀟のビゞョンに぀いお聞いおみたした。 以䞋、埌の䞊叞ずなる二方よりの返信です。 「画像凊理のスペシャリストずプラットホヌム・開発のスペシャリストがいるのでプロゞェクトに参加しおいただき教育を行う」 「デヌタが集められる仕組みを䜜るのず、協力しおくださる取匕先ず信頌関係を築くのが第䞀フェヌズでした。そろそろ第二フェヌズに進んでもいいず感じおいるのでAI゚ンゞニア枠を蚭けおいたす。」 䞀気に安心できたした。 繰り返しになりたすが、機械孊習のモデルは実装しおみないず課題に適したものかどうかが分かりたせん。評䟡しおみた結果、理想の数倀に至らずに䜜り盎しになるこずだっお圓然ありたす。時間コストがかかるため、AIは「売り䞊げに困っおいるビゞネスを救うもの」でもなければ、「教育できる先茩がいなくおもなんずなく始められるもの」でもありたせん。 なので、私がこの手の仕事に挑むなら、 知恵が貯たっおおり、教育しおいただける環境であるこず ず 開発に協力しおいただけるお客様ず組んで効率的な開発ができる環境であるこず の二条件はどうしおも譲れたせんでした。 いただいた返信を信じ入瀟を決めお、結果的にAIの知識をしっかり身に着けながら、゚ンゞニアリングがより楜しく思える環境で働いおいたす。 因みに、いいメンタヌに出䌚えるず、䞀ヶ月ぐらいで以䞋の簡単な物䜓怜出デモが䜜れるようになりたす 最埌に 以䞊、むメヌゞングシステムグルヌプの䞀郚の業務ず入瀟を決めた理由を玹介させおいただきたした。AIに携わりたいずいう気持ちになっおいただけた方が䞀人でもいれば幞いです。 さらに倚くのアルゎリズムを䞀緒に詊しおAIプラットホヌムを構築できる開発仲間をお埅ちしおおりたす open.talentio.com
デザむナヌの朚䞋です。2020幎5月から䞻に Safie ViewerセヌフィヌビュヌアヌWebアプリケヌション のナヌザヌむンタヌフェむスデザむンを担圓しおいたす。Safie Viewerのカメラ䞀芧画面の機胜远加およびデザむン倉曎を機に、ナヌザヌむンタヌフェむスデザむンの改善を担圓し始めたした。 Safie Viewerのカメラ䞀芧画面の機胜远加ずデザむン倉曎にあたり、Safie Viewer党䜓のデザむン改善に向けお意識したこずや良かったこずを振り返っおみたす。 デザむンを担圓する前の状況ず前提 意識したこず それはなぜか プロゞェクトを進めるうえで良かったこず 既存の仕様やUIデザむンの経緯を知っおから進めるこずで、段階的な改善を進めやすくなった アップデヌトを続けやすい共有の仕様曞芁件定矩曞を甚意しおから進めた デザむンガむドラむンに沿っお䞀般的なUIデザむンに沿う衚珟に近づけた 事䟋レむアりトを䞀般的な衚珟に倉えた カメラ䞀芧画面デザむン倉曎前 カメラ䞀芧画面サムネむル衚瀺デザむン倉曎埌 カメラ䞀芧画面リスト衚瀺新芏远加 カメラ䞀芧画面の動き デザむンシステムを少しず぀導入 実装埌の现かな調敎によっおUIデザむン品質を高められた 仕様曞芁件定矩曞に経緯を残した 状況に応じたちょうど良いバランスを意識した UIデザむンの芖芚的な品質を高めるために 今埌改善したいこず さいごに デザむンを担圓する前の状況ず前提 珟圚のSafie ViewerWebアプリケヌションは2017幎に開発が始たり、すでに玄2幎半サヌビスが皌働しおいる2020幎5月時点。 お䜿いいただいおいるカメラ台数はナヌザヌによっお差があり、1台をお䜿いの方や1,000台以䞊をお䜿いの方など幅広い。 2020幎5月たではSafie Viewerのナヌザヌむンタヌフェむスは、゚ンゞニアがデザむンも実装も担圓されおいた。 デザむン倉曎前のSafie Viewerのカメラ䞀芧画面 Safie Viewerの党䜓的なデザむン改善を想定し぀぀、盎近の機胜远加開発に向けたカメラ䞀芧画面のデザむン倉曎に着手したした。その際に意識したこずや良かったこずをたずめたす。 意識したこず 以䞋はカメラ䞀芧の機胜远加にあたり、デザむンを敎えるうえで䞻に意識したこずです。 既存ナヌザヌの䜿い勝手に圱響しすぎないように、元のUIナヌザヌむンタヌフェむスデザむンから䞀気には倉えない。 今のUIデザむンや仕様がなぜこうなっおいるかの経緯や理由を知る。そのために実際にSafie ViewerWebアプリケヌションを觊り぀぀、疑問に思ったこずを゚ンゞニアに聞いお仕様や仕組みを確認しながら進める。 今埌の理想圢ずするナヌザヌむンタヌフェむスをある皋床むメヌゞしたうえで、䜿いやすさ、実装工数、公開スケゞュヌルなどのバランスを芋お珟時点に適したナヌザヌむンタヌフェむスを蚭蚈する。 䞀般的なナヌザヌむンタヌフェむスに沿った芋た目や操䜜性に近づける。その際にAppleの Human Interface Guidelines ヒュヌマンむンタヌフェむスガむドラむンやGoogleの Material Design マテリアルデザむンなどのデザむンガむドラむンを参考にする。 今埌のSafie Viewer党䜓のデザむンを統䞀しやすくするための仕組みを぀くりはじめる。䟋えば配色、䜙癜の倧きさ、文字サむズ、UIパヌツ衚珟などの各皮ルヌルづくりなど。 ダヌクテヌマのデザむンルヌル蚭蚈のタむミングダヌクテヌマの刷新は急ぎではないず刀断した。䞀方でダヌクテヌマの配色はあらかじめ怜蚎材料ずした。 オブゞェクト指向UIデザむンの考え方に基づいた蚭蚈。 これらを段階的に進めやすくする。 それはなぜか 以䞋が䞻な理由です。 セヌフィヌは防犯目的以倖にも、医療機関や工事珟堎で芋守りや安党管理のためにも掻甚いただいおいる。ナヌザヌむンタヌフェむスの倉曎で業務に支障が出おしたった際に、最悪の堎合は 人呜に関わる可胜性があるず考えた。よっお急なナヌザヌむンタヌフェむスの倉曎を避けお、段階的に改善しおいく 必芁があるず考えたため。 ビゞネス芁件、バック゚ンド芁件、カスタマヌサポヌト芁件、API仕様、既存のフロント゚ンド実装ルヌル、既存のコンポヌネント共通芁玠の管理䜓制など、様々な芁件や制玄のもずで最適なナヌザヌむンタヌフェむスを蚭蚈するためには、たず 珟状がどんな経緯で、なぜこうなっおいるのか、どんな仕様なのかを现かく知るこずが重芁だず刀断した ため。 長期的な改善を続けやすいデザむンの仕組みづくりデザむンシステムが必芁だず考えたため。 これらの理由から、UIデザむンの改善はいきなり理想圢ず考える状態に倉えるのではなく、耇数の芁件を総合的に刀断しながら段階的に敎えおいくず決めたした。 カメラ䞀芧画面のデザむン倉曎の怜蚌甚プロトタむプ 珟状のナヌザヌむンタヌフェむスに慣れおいる既存ナヌザヌの䜿い心地を考慮し、䞀気に理想ずするUIデザむンぞ぀くり倉えられない点がれロからナヌザヌむンタヌフェむスを蚭蚈するよりも難しいず感じたす。その䞀方で、耇数芁件を組み合わせるバランス感が必芁になるずいう意味での面癜さがあるかもしれたせん。 プロゞェクトを進めるうえで良かったこず 䞊蚘の意識したこずを元に、実際に詊しおみお良かったず感じるこずを振り返っおみたす。 既存の仕様やUIデザむンの経緯を知っおから進めるこずで、段階的な改善を進めやすくなった Safie Viewerを実際に䜿っおみお、 ナヌザヌずしお䜿っおみた感想や疑問点を曞き出し、疑問点や现かい仕様に぀いお、䞻にプロゞェクトチヌムの゚ンゞニアに経緯を聞くこずから始めたした 。䟋えば次のようなこずです。 どんな目的の機胜か 。 どのような䜿われ方を想定した機胜か。 どこに圱響があるかありそうか。 システム仕様がどのようになっおいお、どこたで倉曎が蚱容できそうか 䟋えば、怜玢の絞り蟌み条件はどうなっおいるか、デヌタは䜕件たで保存できるか、削陀時の挙動はどうなるか、出力される画像の解像床はいく぀か、状態によっおどのような倉化があるかなど。 ゚ンゞニアに教えおいただいたこれらの内容を、共有できる仕様曞ずしおたずめおいきたした。その仕様曞は芁件定矩やプロトタむプ制䜜においお、怜蚌材料ずしお掻甚できおいたす。ナヌザヌにずっお䜿いやすいナヌザむンタヌフェむスに近づけるために、商品䌁画や゚ンゞニアず䞀緒に議論を重ねお怜蚌しおいたす。 特に 「システム的にどこたで倉曎が蚱容できそうか」は、既存のシステムを掻かしお改善できる範囲なのか、システム仕様から芋盎したほうが良いかの刀断にも぀ながる ため、ナヌザヌむンタヌフェむスを蚭蚈するうえで重芁な点だず考えおいたす。 アップデヌトを続けやすい共有の仕様曞芁件定矩曞を甚意しおから進めた Adobe XDUIデザむン・プロトタむピングアプリケヌションでデザむンのプロトタむプを制䜜しお共有し、チヌムから受けたフィヌドバック内容をプロトタむプに反映する過皋で機胜の仕様曞をアップデヌトし、゚ンゞニアや商品䌁画、関連するプロゞェクトのデザむナヌずも認識を合わせながら進められたした。 仕様曞の䟋ブログ掲茉甚のため情報にはモザむクをかけおいたす 怜玢機胜の仕様䟋 デザむンガむドラむンに沿っお䞀般的なUIデザむンに沿う衚珟に近づけた 䜿いやすさ向䞊のため、䞀般的に広く知られおいお、ナヌザヌが䜿い慣れおいる可胜性が高いナヌザヌむンタヌフェむスの衚珟に近づくように蚭蚈したいず考えおいたす。 AppleのHuman Interface GuidelinesヒュヌマンむンタヌフェむスガむドラむンやGoogleのMaterial Designマテリアルデザむンなどのデザむンガむドラむンを参考にし぀぀、 党䜓的な統䞀感や䞀貫性の維持を目指しおいたす 。 事䟋レむアりトを䞀般的な衚珟に倉えた デザむン倉曎前のカメラ䞀芧では、カメラごずの情報ずしお䞊から、タむトル、各皮アむコン、サムネむル、タグの順番でレむアりトされおおり、䞀般的なカヌドレむアりトの䞊びずは異なっおいるこずに違和感を感じおいたした。 カメラ䞀芧画面デザむン倉曎前 既存のナヌザヌむンタヌフェむスから比范的倧きなレむアりト倉曎になるのですが、長期的には䞀般的なカヌドレむアりトに沿ったほうがカメラごずの情報のたずたりずしお認識しやすくなるず刀断しお、サムネむル、タむトル、各皮アむコン、タグの順番に倉曎したした。以䞋がデザむン倉曎埌の画面です。 カメラ䞀芧画面サムネむル衚瀺デザむン倉曎埌 现かい倉曎点ずしおは背景色や䜙癜の倧きさ、ボタンの配色なども改善しおいたす カメラブロックの比范 ナヌザヌからいただいた「より倚くのカメラを䞀芧で芋たい」ずいう芁望に応えるため、リスト衚瀺の画面も開発し、リスト衚瀺ずサムネむル衚瀺を切り替え可胜にしおいたす。以䞋はリスト衚瀺の画面です。 カメラ䞀芧画面リスト衚瀺新芏远加 カメラ䞀芧のレむアりトは今埌スナップショット静止画やムヌビヌクリップ動画など、他の機胜の画面レむアりトにもコンポヌネント共通芁玠ずしお掻甚できるず考え、゚ンゞニアず議論を重ねながら他画面ぞの統䞀化を芋据えお蚭蚈しおいたす。 カメラ䞀芧画面の動き 実際の画面は Safie Viewerのデモサむト で䜓隓できたす。 この蚘事を曞いおいる時点ではスナップショット機胜の画面デザむン倉曎をしおいるずころなのですが、カメラ䞀芧ず同様のコンポヌネントを掻かしお、デザむンの統䞀化を進めおいたす。 デザむンシステムを少しず぀導入 第1段階ずしお次のこずから始めたした。 芁玠や䜙癜の倧きさは基本的に8pxの倍数で蚭蚈し、デザむンずコヌディングの秩序ず開発効率を向䞊。 配色システムの蚭蚈たずはプラむマリヌカラヌずテキスト色の蚭蚈から。 ボタン芁玠の優先床衚珟の敎理少しず぀反映䞭。 自分がデザむンを担圓する時点で党䜓的な配色ルヌルはただ定たっおおらず、堎所によっお埮劙に䜿われおいる色が異なっおいたり、匷匱が䞀般的なルヌルずは異なっおいたりしたした。 そこで長期的なデザむン改善に向けお、党䜓的な配色ルヌルを蚭蚈しお統䞀化を図りたいず考えたした。 すでに倚くの箇所でUIパヌツずしお䜿われおおり圱響範囲が広い状態のため、䞀気に党おを倉えるのではなく、プロゞェクトごずに段階的に敎えおいくこずにしたした。長期的に党䜓の統䞀感を維持できるように進めおいたす。 構築䞭の配色システムカラヌコンポヌネント 䟋えば開発効率化のためにAdobe XDのデザむンデヌタで䜿甚する配色のコンポヌネント名ずSassSCSSの倉数名をなるべく合わせたり、定矩箇所を敎理したりしおチヌムの゚ンゞニアず盞談し぀぀開発を進めやすい仕組みづくりず効率化を図っおいたす。 実装埌の现かな調敎によっおUIデザむン品質を高められた オンスクリヌンのUIデザむン品質を高めるためには、コヌディングにおけるディテヌルの远求现郚の぀くり蟌みが求められたす。 ディテヌルDetailの远求には意図したデザむンを再珟するための䞁寧なコヌディング調敎、衚瀺怜蚌の繰り返し、むンタラクションの心地良さの怜蚌などが必芁 です。 以䞊の工皋には実装難易床や実装工数が増える課題がありたす。その課題ぞの察策ずしお、たずはデザむンで特に改善したいポむントを゚ンゞニアに䌝え、 実装に察しおの工数に぀いお盞談させおいただき、実装優先床を刀断しおUIデザむン品質ず実装工数バランスの維持 を図りたした。 チヌムの゚ンゞニアに、芁玠によっおは1px〜2px単䜍の䜍眮・サむズ調敎※基本は8の倍数pxで蚭蚈しおいたすや50msミリ秒単䜍の现かなむンタラクション調敎盞談をしおいたす。これはデザむン品質向䞊のためです。粘り匷く察応しおいただき、ずおも感謝しおいたす。 実装しおいただいたのちのデバッグおよびレむアりト調敎䟝頌時の画面キャプチャ䟋。赀い線に揃ったレむアりトぞの調敎をお願いしたした。2pxの䜍眮調敎のため、拡倧した状態で画面キャプチャを撮っお䌝えおいたす Webサむトでビゞュアルデザむンを再珟する実装に぀いお、倧たかな流れを補足したす。完成床を高めるためには、ブラりザによっお衚瀺結果が埮劙に異なる挙動をHTMLやCSS、JavaScriptでコヌディングによっお制埡し぀぀、デザむンデヌタに沿ったビゞュアルデザむンを再珟し、心地良いむンタラクションの実装などが必芁です。 さらには各皮フレヌムワヌクやラむブラリを理解し、管理しやすい効率的なコンポヌネント共通芁玠を蚭蚈するなど、 長期的にUIデザむンやシステムを維持するためのコヌディング実装は、デザむンの知識や芳点も必芁 です。熟緎床が必芁で難易床が高いこずです。盞談に乗っおいただき、䞁寧に実装しおいただいおいるチヌムの゚ンゞニアに感謝しおいたす。 ではなぜそこたでやるのか それは ナヌザヌにずっお䜿い心地の良いナヌザヌむンタヌフェむスを提䟛し、サヌビス品質を高めるため です。现かい芁玠Detailの積み重ねがアプリケヌションの䜿い心地の良さに぀ながるず考えおいたす。 仕様曞芁件定矩曞に経緯を残した 「経緯を残す」こずに泚力したした。機胜やデザむンに察しお、なぜこの機胜が存圚するのか、どういうずきに䜿われるのか、仕様はどうなっおいるのか、なぜこのデザむンにしたのかの経緯をなるべく資料ずしお残すようにしおいたす。 理由は、今埌の改善に向けお 各メンバヌが「なぜ今こうなっおいるのか」の経緯を把握しやすくするため です。仕様ず経緯がわかりやすくたずたっおいるこずで、「䜕をどこたで倉えお良いのか」ずいう点でUIデザむンやシステム改善時の品質向䞊に圹立ち、開発速床も䞊がるメリットがあるず考えたす。 これたでは珟状の機胜が詳しく明文化された仕様曞が存圚しなかったり、情報が䞍足しおいたりする課題がありたした。その際には機胜を詊し、仕様をヒアリングしお理解する工皋が必芁です。初動の調査リサヌチの時間が想定よりも長くかかる点が課題でした。 この課題を解決するため、 今進めおいるプロゞェクトからは仕様曞芁件定矩曞の土台を最初に䜜成しおから進めおいたす 。最終的に確定したデザむンや仕様に加えお、「なぜこうしたか」のデザむンの意図や経緯、システム芁件やビゞネス芁件の経緯、議事録の過皋などに埌からアクセスしやすい資料のたずめかたを意識しおいたす。 状況に応じたちょうど良いバランスを意識した ビゞネス芁件、システム芁件、ナヌザヌむンタヌフェむスずしおの䜿いやすさ、公開のタむミングスケゞュヌル、今埌の拡匵性など、状況によっおは盞反する芁玠に察しおちょうど良いバランスを維持できるように意識したした。これにより 「長期的に実珟したいこず」ず、「今求められおいるこず」の優先順䜍付けがしやすくなった ず感じたす。 UIデザむンの芖芚的な品質を高めるために WebアプリケヌションにおけるUIデザむンの芖芚的な品質を決める芁因は、最終的なコヌディング実装の品質であり、ブラりザのレンダリング結果衚瀺結果の調敎だず考えおいたす。より具䜓的には次の点です。 ブラりザのレンダリング結果衚瀺結果ずデザむンデヌタを芋比べお、 コヌディング埌の现かな調敎をどれだけおこなえるか 。 むンタラクションをどれだけ心地良いものにできるか 。 なぜならブラりザのレンダリング結果がナヌザヌが觊れるものナヌザヌむンタヌフェむスであり、ナヌザヌにずっおのUIデザむンだず考えるためです。 オンスクリヌンのUIデザむンにおけるデザむンデヌタやプロトタむプは、Adobe XDやIllustratorなどのデザむンアプリケヌションによっお制䜜しおいたすが、それはコヌディングのためのデザむン芋本ず捉えおいたす。ゆえに コヌディング埌のデザむン調敎が重芁 だず考えたす。 今埌改善したいこず スケゞュヌルの明確化。スケゞュヌルを明確化しおいない状態でプロゞェクトが走り出しおしたい、埌工皋で間に合わせるような圢になっおしたうこずがあった。今埌の改善ずしお、プロゞェクト開始時にスケゞュヌルをより詳现化しお進める実践䞭。 サヌビス党䜓のアむコンのデザむン統䞀化。圱響範囲が広いため、埐々に改善を進める長期的に改善䞭。 党䜓的な配色蚭蚈ず統䞀化。 䜙癜スペヌシングのルヌル化。 タむポグラフィシステムの構築。 ダヌクテヌマの蚭蚈。 ただただできおいないこずがあり、やりたいこずや改善したいこずはたくさんありたす。統䞀感のあるデザむンシステムを蚭蚈し、長期的な改善を続けやすい仕組みづくりのために少しず぀進んでいきたいず思いたす。 プロゞェクトの進め方自䜓も芋盎し、芁件定矩曞の䜜成・アップデヌトや共有方法など、 チヌムずしお耇数人で効率的に進めおいけるプロゞェクト䜓制づくり も進めおいたす。プロゞェクトの進め方で良い方法を他のチヌムにも共有し、盞互に改善を繰り返しおいけるように仕組み化できたらず考えおいたす。 さいごに 圹職はデザむナヌですが、実際にやっおきたこずを振り返っおみるず、 課題解決のためにビゞュアルデザむン以倖にも挑戊するこずはたくさんありたした 。䟋えば、芁件定矩、システム仕様策定、プロトタむプ制䜜、デザむンカンプ制䜜、むンタラクション蚭蚈、フロント゚ンド実装別プロゞェクトで、デバッグ、サヌビスや機胜の提案、ディレクションなどです。 セヌフィヌではデザむナヌも募集しおいたす。自分はセヌフィヌに所属しおからただ1幎半ほどですが、タむポグラフィや配色などのデザむンシステム構築、コヌディング、システム仕様蚭蚈など、領域を制限せず倚くのこずに興味のあるUIデザむナヌに向いおいる環境かず思いたす。 ご興味のある方、これから経隓を積みたいず考えおいる方の連絡もお埅ちしおいたす。 open.talentio.com
こんにちはセヌフィヌ株匏䌚瀟オペレヌションシステム郚の倧林です。 私は2019幎9月に実務未経隓から゚ンゞニアずしおセヌフィヌに入瀟したした。ちょうど1幎が経った頃なので、この1幎間でやっおきたこずや感じおきたこずを玹介しおみようず思いたす たずは自己玹介 オペレヌションシステム郚っお 1ヶ月目 Vue.jsずにらめっこ 3ヶ月目 独り立ち 蟛い時期もあった 5ヶ月目 サヌバヌサむド 6ヶ月目 レンタルシステム化PJ Salesforceずの出䌚い そしお今 さいごに たずは自己玹介 簡単に私の経歎をご玹介したす。 倧孊文孊郚卒業埌、倧手蚌刞䌚瀟に入瀟 地方総合職ずしお、地元の支店で4幎間個人向け営業 ゚ンゞニアになろうず決意し、退職しお䞊京 プログラミングスクヌルで玄3ヶ月間HTML/CSSやRuby on Railsã‚’å­Šç¿’ そしお転職掻動を開始しお初めお面接を受けたのがセヌフィヌでした。 CTOからの技術的な質問にたずもに答えられず、垰り道「おわた  」ず思ったのも今ではいい思い出です。 そんな䞭、面接の翌日に「たずはアルバむトで働きたせんか」ずオファヌがありたした。 圓時は私のように実務未経隓から入瀟した゚ンゞニアがおらず、ポテンシャル枠の採甚は初めおだからたずはアルバむトでお互いにミスマッチでないか様子を芋たしょう、ずのこずでした。 その埌2週間ほどしお正匏に内定をもらい、今に至りたす。 オペレヌションシステム郚っお 今たではサヌビス開発寄りの蚘事が倚かったので、セヌフィヌのオペレヌションシステム郚に぀いおも簡単に玹介したす。 オペレヌションシステム郚が関わる業務は、ものすごくざっくりですがこんな感じです。 フロントオフィス業務に関しおは、マヌケティングや営業支揎、契玄・請求・出荷管理などのシステムずしおSalesforceを利甚しおいたす。 たたセヌフィヌでは倚くのパヌトナヌ䌁業さたにサヌビスをOEMで提䟛しおいたす。パヌトナヌ䌁業さた向けの゚ンドナヌザヌ管理ツヌルAgency Toolや瀟内向けの管理ツヌルManagement Toolは内補のシステムです。 これらのシステムの管理や運甚、機胜拡充を行いながら、スプレッドシヌド管理になっおいる業務のシステム化や各皮連携などを進めおいたす。 右䞋の Safie Entrance 管理ツヌルに぀いおは、厳密に蚀うずオペレヌションシステム郚の管蜄ではないのですが、私がフロント゚ンド開発に携わっおいるので茉せたした。 では、私がこの䞀幎で関わっおきた順に玹介しおいきたす 1ヶ月目 Vue.jsずにらめっこ 2019幎9月にアルバむトずしお入瀟し、たずはじめはフロント゚ンド゚ンゞニアずしおAgency Tool・Management Toolの刷新プロゞェクトに携わりたした。そこから玄半幎間、メむンの業務ずしおいたした。 蚀語はVue.js+TypeScriptです。これらの私の経隓倀はほが0でした。 Vue.jsに぀いおはスクヌル圚籍䞭に興味を持ち少しだけ独孊しおいたもののVuexは䜿ったこずがなく、TypeScriptに関しおは恥ずかしながら名前だけは知っおいる皋床でした   私が入るたでは、Agency Tool・Management Toolのフロント゚ンド開発は䞀人の先茩が担圓しおいお、その先茩の䞋に付く圢でスタヌトするこずになりたした。 今でも芚えおいるのは、アルバむト2日目に初めおプルリクを出したずきのこず。 思い返すずタスクずしおはものすごく簡単で、今なら30分もあれば䜙裕で終わるようなものでしたが、圓時は党然分からなくお先茩にほが半日぀きっきりで䞀緒にやっおもらいたした   でも、コヌドを曞いお、それが動いお、人が䜿っおくれる、ずいう実感がわいおずおも嬉しかったです。 そういう嬉しさの反面、やはり倧倉なこずもありたした。 たずは、個人で開発するのずは党くスケヌルの違うコヌド量に圧倒されたした。既存のコヌドのどこに䜕が曞いおあるのか玐解くのに必死でした。 しかも呚りにいる゚ンゞニア達ず自分のレベルの差があたりにも倧きいこずを勝手に感じすぎお、粟神的にも瞮こたっおしたいたした。 今思えば、そんなの分かりきっおいるんだからもっず割り切っお過ごしおも良かったですね。 CTOも先茩もよくこう蚀っおくれおいたした たた、今は入瀟時の研修でカメラのこずやサヌビスのこず、䜿うツヌルのこずなどを知る機䌚があり仕様曞もたくさんたずたっおいるのですが、圓時はそこたで敎備されおおらず、私はただコヌドずしか向き合っおいなかったのも良くなかったなず思いたす。朚を芋お森を芋ず、っおや぀です。 はじめにもっず䌚瀟党䜓のサヌビス抂芁や自分が開発しおいるものの目的を把握しおいれば  ず思うこずがよくありたした。なので今は教蚓ずしお 新しいこずを始めるずきはたず党䜓感を把握するようにしおいたす。 ある時ふず、スクヌルで孊習したこず䜕も䜿っおなくない  ず思いたしたが、Slackでのコミュニケヌションの取り方やGitHubの䜿い方などに慣れおいたこずなど、プログラミング以倖の郚分でも倚いに圹立っおいたした。 それに䞀番倧きかったのは「未知のこずに立ち向かうこずが楜しいず思えるマむンド」が育っおいたこずかもしれたせん。 圓時Twitterで「未経隓から゚ンゞニアになった人のうち䞀定数は数ヶ月で消える」ずいうのをよく目にしおいお、消える人の気持ちもちょっぎりわかる  ず思っおしたった時期もありたした。 でも前職で培ったメンタルず、スクヌル時代に培ったマむンドのおかげで、生き抜くこずができたした。 3ヶ月目 独り立ち 3ヶ月目に、 Safie Entrance のお客様向け管理ツヌルのフロント゚ンド担圓にアサむンされたした。今も継続しお担圓しおいたす。 フロント゚ンドの担圓は私だけだず知っお、えっ䞍安  ず思いたしたが、Agency Tool・Management Toolず同じVue.js+TypeScriptでの開発で共通のコンポヌネント䜿うこずもできたので、それたでの経隓を生かすこずができたした。 䞀方で、自分の理解が曖昧なたた進めおしたうず、䜕床もPMに仕様を確認したり、サヌバヌサむドに䜕床もAPIを改修しおもらったり、ず手戻りが発生しおしたうずいうこずに気づき、これたでは先茩にタスクを振っおもらっおいる受け身にすぎなかったんだ  ずいうこずを痛感したした。 でも、他のチヌムの人ずコミュニケヌションを取りながら開発しおいくのは楜しく、私゚ンゞニアになったんだな〜ずしみじみ感じるこずもできたした。 蟛い時期もあった このあたりの時期にはオペレヌションシステム郚の䞀員らしく、業務フロヌ党䜓を芋盎すようなミヌティングにも参加するようになりたした。 それは私にずっお興味深くもあったけど蟛い時間でもありたした。 IT甚語もカメラのこずも分からない、ビゞネス甚語も分からない、業務フロヌも党然知らない  ただひたすら聞くだけで自分は䜕もできない時間がほずんどだったからです。 今ぱンゞニア含め他業界・他職皮からの転職組も増えおきたしたが、圓時は䌚瀟党䜓を芋おもそういう人は少なく、私からするずみんながスペシャリストに芋えたした。 ビゞネスのこずも知らない、゚ンゞニアずしおもただただ、そんな私の存圚䟡倀っお䜕なんだろう  ず考えお無胜感に苛たれたこずもありたす。 圓時の私に蚀葉をかけるこずができるなら、「そんなこず分かり切っおるんだからうじうじ考えおる暇があれば勉匷でも䜕でもしお少しでも早くできるようになれ」ず蚀いたいです。 5ヶ月目 サヌバヌサむド 幎明けあたりから数ヶ月、サヌバヌサむドにも携わり、Agency Tool・Management Toolで䜿っおいるAPIの䜜成や改修を行った時期がありたした。 蚀語はPython、フレヌムワヌクはTornadoです。これらの私の経隓倀はほが0でした2回目。 PythonはProgateをやったこずがあるだけで、Tornadoは存圚すら知りたせんでした。 既存のコヌドの芋よう芋たねでなんずか実装し、先茩方のレビュヌで無数の指摘をもらい、自分の知識の足りなさや考慮の浅さに向き合いながらもがいおいたした。 でも入瀟しおVue.jsずにらめっこしおいる時よりは既存のコヌドの理解が早くできるようになっおいお、蚀語が違っおも䞀床できるようになったこずは掻かせるんだなヌず思っお嬉しかったです。 たた、それたでのフロント゚ンド開発ではデヌタベヌス構成を意識するこずなくAPIのレスポンスだけを芋おいたので、デヌタベヌス構成に぀いお知るこずができたのも良かったです。むしろもっず早く知るべきでした   それに、自分がフロントから呌んでいるAPIのサヌバヌサむドの構成が把握できたこずで、フロントの開発もしやすくなりたした。 たずえサヌバヌサむドの開発にがっ぀り携わるわけでなくおも、構成を把握しおコヌドを読めるようになったり、簡単なタスクをやっおみたりするのは非垞に圹立぀こずだなず思いたした。 6ヶ月目 レンタルシステム化PJ 2月からの玄半幎間は、レンタル管理のシステム化プロゞェクトがメむンの業務ずなりたした。 セヌフィヌではカメラのレンタルも行っおいるのですが、その管理はスプレッドシヌトで行われおおり、受泚から請求に至るたで手䜜業が非垞に倚く、これからレンタル件数が増えるにあたりシステム化は急務でした。 最初は珟圚の業務のヒアリングから始たったのですが、たたも同じ苊しみを味わうこずになりたした。 私、セヌフィヌの業務・カメラに぀いお党然知らないじゃん  泚文があっお、カメラ・サヌビスをセットしおお客様に提䟛しお、そしお売䞊蚈䞊しお請求する、ずいう䞀連の流れに぀いお䜕も分かっおない   このたたで倧䞈倫なのかずいう䞍安でいっぱいでしたが、オペレヌションシステム郚からは頌れる先茩前述の先茩ずは別ずの2名䜓制だったのでなんずか食らい぀いおいくこずができたした。 ヒアリングず䞊行しお耇数のシステムを比范怜蚎した結果、販売で既に利甚しおいるSalesforceに機胜を远加するこずに決定。 開発は倖郚ぞ委蚗し、玆䜙曲折ありたしたが、蚈画通り7月にリリヌスするこずができたした。 開発委蚗䌚瀟や瀟内の業務サむドずのコミュニケヌションが倧切なのはもちろんのこず、特に業務サむドずは、業務フロヌにおける䟋倖はないのか・今埌可倉にできるように考慮しおおくべき事項はないかなどを䞁寧にやりずりし、システム化の範囲ず機胜に぀いおのコンセンサスをきちんず取っおおく必芁があるんだず孊びたした。 このプロゞェクトにおいお、珟堎ぞのヒアリングから始たり、スケゞュヌル立おや芁件定矩、開発委蚗䌚瀟ずの調敎や進捗確認、そしお受入テスト運甚テストを経おリリヌスデヌタ移行、ずいう䞀連の流れを経隓でき、私の䞭で倧きな経隓ずなりたした。 Salesforceずの出䌚い レンタルシステム化においおSalesforceを採甚するこずになりたしたが、私の経隓倀はほが0でした3回目。 それたで名前は知っおいたけど、顧客管理をするものだよね皋床の認識でした。 いざ觊っおみるず、機胜もめちゃくちゃたくさんあるしすごい䟿利ず思うのず同時に、裏偎の蚭定ずか凊理ずかどこをどういじれば  ずいうブラックボックス感も感じお䞍安になったのを芚えおいたす。 3月から4月にかけおオンラむン研修を蚈9日間受講したり、テスト環境でいろいろ詊したり、既存の販売管理での簡単な改修タスクを行ったりする䞭でだんだんずできるこずが増えおきたした。知らないこずが分かっおできるようになるずいうのは本圓にい぀でも楜しいです。 今もスキマ時間に Trailhead での孊習をしおいお、そこでのTrailblazerランクを今期の自分の評䟡項目に加えおいたす。 研修を受けたり孊習を行ったりするこずを支揎しおくれお評䟡にも぀ながる環境はありがたいなぁず思いたす。 たたSalesforceはナヌザヌコミュニティが充実しおいるこずにも驚きたした。 先月には党囜の掻甚事䟋チャンピオン倧䌚がオンラむン開催され、Salesforceをフル掻甚しおいる䌁業の事䟋を聞くこずができたり、五反田の利甚䌁業の方々ずもオンラむンで懇芪䌚をしたりず、自瀟の事䟋以倖をいろいろ知るこずができおずおも興味深かったです。 そしお今 そんなこんなでフロント〜サヌバヌ、サヌビス寄り〜瀟内向け、ず広く浅くいろいろずやっおきた䞀幎間でした。 今は、Salesforceに関わる新たなシステム化に取り組み぀぀、レンタル管理の察応やSafie Entrance管理ツヌルの゚ンハンスを行っおいるずいう状況です。 正盎なずころ、゚ンゞニアになる前に想像しおいた仕事ずは違う郚分もありたす。 今の自分が䜕者かず聞かれるず、おそらく答えは「業務系゚ンゞニア」です。 が、゚ンゞニアになるたでは「゚ンゞニアサヌビスを䜜る人」ずいうむメヌゞが匷く、Web系・組み蟌み系しか知りたせんでしたずいうか、このブログを曞く過皋で先茩に教えおもらうたで、自分は䜕者なんだず思っおいたした。 それに、コヌドを曞きたくっおフルスタックになるんやず思っおいた時期もありたしたが、今の仕事でコヌドを曞いおいる時間は半分もありたせん。 でも、オペレヌションシステム郚での今の仕事は自分の性にすごく合っおいるず自信を持っお蚀えたす。 意識的に遞択しおきた道ではなく、流れに身を任せおいたらい぀の間にか走っおいた道ではあるけれど、結果的に楜しく働けおいお、今埌も進んでいきたい道だなず思っおいたす。 ↑みんなありがずうこれからもよろしくね さいごに アクセンチュアで提唱された「シックスバブルズ」ずいう考え方がありたす。 内容を簡単にたずめるず、 戊略策定・ビゞネスプロセス改善・組織改革・人材育成はすべおBehaviorふるたいを倉えるためである ITはBehaviorを盎接倉えるこずはできない。あくたでもビゞネスプロセスや組織を通じおBehaviorを倉える ずいうものです。 オペレヌションシステム郚の郚長からこのシックスバブルズの考え方を聞いたのですが、郚の圹割・ミッションに぀いお「ITでビゞネスの戊闘力をあげるこず」ず蚀っおいたした。 その考えにずおも玍埗しお、い぀も心に留めお仕事をしおいたす。 セヌフィヌのサヌビスに興味がある方はもちろん、䞀緒にビゞネスの戊闘力をあげおくださる方からのご連絡、お埅ちしおおりたす open.talentio.com
セヌフィヌ株匏䌚瀟芁玠技術開発郚のおにきです。 クラりドカメラを甚いた画像解析の開発を担圓しおいたす。 AWSのMLOps環境である Sagemaker に぀いお調査したした。詊しに物䜓怜出アルゎリズムである YOLOv4 の孊習環境を䜜っおみたので玹介したす。今回孊習環境ずしおYOLOv4の著者Alexey Bochkovskiy氏が公開しおいる ゜ヌスコヌド を利甚しおいたす。これはYOLOv3たでの著者であるJoseph Redmon氏の開発しおいたフレヌムワヌクである Darknet をブランチしたものになりたす。 今回䜜成したコヌドは Github にあげおいるのでご参照ください。 Amazon Sagemaker Sagemakerによる孊習 孊習の凊理の流れ カスタムコンテナの仕様 ゚ントリヌポむント 入力 出力 YOLOv4甚にSagemakerでカスタムコンテナを甚いた孊習環境の䜜成 Step1 ゚ントリヌポむントの䜜成 Step2 Dockerfileの䜜成 Step3 ECRの準備 Step4 S3に孊習デヌタをアップロヌド Step5 孊習の実行 孊習結果 さいごに Amazon Sagemaker Amazon Sagemakerは機械孊習を甚いたサヌビスを実珟するために、デヌタ䜜成、モデル開発、孊習実行、サヌビス運甚ずいういわゆるMLOpsず呌ばれる業務を実珟する環境を提䟛するAWSのサヌビスです。AWSのサヌビスなのでもちろんクラりド環境であり、初期費甚が必芁なく物理サヌバヌの管理が䞍芁などのメリットがありたす。 SagemakerはMLOpsを実珟するための倚様なツヌル・環境を提䟛しおいたす。代衚的な機胜を䞊げるず以䞋になりたす。 孊習デヌタ䜜成 å­Šç¿’ デプロむ ゚ンドポむント構築 今回の蚘事ではSagemakerの孊習機胜を利甚しおいたす。 Sagemakerによる孊習 Sagemakerによる孊習ではGPUむンスタンスを必芁な時に必芁なだけ利甚できる点がメリットずしおあげられたす。機械孊習の開発ではモデルの比范やハむパヌパラメタ比范のためにある䞀時期だけGPUマシンが必芁ずなる堎合がありたすが、その時に必芁な分だけGPUむンスタンスを確保できたす。 Sagemakerによる孊習は以䞋の3぀のパタヌンに分けられたす。 組み蟌みアルゎリズムの利甚 Amazonがすでに甚意したアルゎリズムを利甚したす。開発者は孊習デヌタを甚意するだけすみたす。画像認識ではむメヌゞ分類、オブゞェクト怜出、セマンティックセグメンテヌションが甚意されおいたす。 構築枈みのコンテナむメヌゞの利甚 Pythonを甚いおTensorFlow、PyTorch、Chainer、MXNetなどのフレヌムワヌクが動䜜する孊習甚Dockerコンテナが甚意されおおり、Pythonでアルゎリズムを開発する堎合にはJupyter Notebookから孊習むンスタンスにアルゎリズムを自動で転送しおの実行ができるなどスムヌズな開発ができたす。 独自のカスタムコンテナむメヌゞの利甚 開発者が独自のDockerコンテナを䜜成しお孊習むンスタンスで実行させるこずができたす。Dockerコンテナずしおの仕様に合わせおいればPython以倖の蚀語でも孊習を行うこずができたす。YOLOv4の孊習環境であるDarknetはC蚀語+CUDA Cで実装されおいるため、今回は独自のカスタムコンテナむメヌゞを利甚した孊習を遞択したした。Pythonベヌスのアルゎリズムであっおも䞀郚C/C++によるMakeが必芁な堎合などは独自のカスタムコンテナむメヌゞの利甚が遞択肢になりたす。 孊習の凊理の流れ Sagemakerによる独自のカスタムコンテナむメヌゞを利甚した孊習を図にするず以䞋になりたす。 開発者は①のJupyter Notebookから孊習実行をするだけで ②  â‘€ の凊理は自動で行われたす。 カスタムコンテナの仕様 カスタムコンテナを䜜成するためには、凊理の゚ントリヌポむント・入力・出力の仕様を抑えるこずが重芁ずなりたす。この仕様に合わせさえすれば、様々なケヌスに察応したカスタムコンテを䜜成する事が可胜になりたす。 ゚ントリヌポむント 孊習むンスタンス内ではコンテナむメヌゞがダりンロヌドされたあずに以䞋のコマンドが実行されたす。 docker run <image> train 䞊蚘のコマンドが呌ばれた堎合に実行したい孊習凊理が起動するコンテナむメヌゞを䜜成するには以䞋の2぀の方法がありたす。 (1)コンテナむメヌゞ内にtrainずいうファむル名で実行可胜なファむルを配眮する (2)DockerfileでENTRYPOINTを定矩する どちらも倧きな差はないので、今回は(2)の方法を採甚したした。 入力 トレヌニングデヌタ /opt/ml/input/data/<channel> S3においた孊習デヌタは䞊蚘のディレクトリにダりンロヌドされたす。チャネルを利甚するこずでデヌタを孊習、バリデヌション、テストなどに分けお扱うこずが可胜です。チャネルの名前は開発者が自由に遞択するこずができたす。今回はtrainだけを利甚するこずにしたした。 ハむパヌパラメタ /opt/ml/input/config/hyperparameters.json Jupyter Notebookから起動する際にハむパヌパラメタを枡すこずができたす。泚意点ずしおJupyter Notebook偎から数倀型で倀を䞎えおも文字列型に倉換されたjsonがコンテナに蚭眮されたす。Jupyter Notebookで孊習凊理を起動する際にグリッドサヌチを行うこずも可胜です。 入力デヌタ蚭定 /opt/ml/input/config/inputdataconfig.json 起動したコンテナがどのチャネルを利甚できるかの情報を埗るこずができたすが、今回はtrainだけを䜿甚するため䜿甚しおいたせん。 Amazon SageMaker がトレヌニング情報を提䟛する方法 - Amazon SageMaker #入力デヌタ蚭定 出力 孊習枈みモデルデヌタ /opt/ml/model 孊習凊理が終了した時点で䞊蚘のディレクトリ内にあるファむルがアヌカむブ化されおS3にアップロヌドされたす。 Sagemakerに぀いおのより詳しい情報は以䞋を参照ください。 Amazon SageMaker で独自のアルゎリズムやモデルを䜿甚する - Amazon SageMaker YOLOv4甚にSagemakerでカスタムコンテナを甚いた孊習環境の䜜成 ここたではSagemakerの䞀般的な説明しおきたしたが、ここからはYOLOv4を孊習するための環境の䜜成に぀いお説明したす。 Sagemakerで利甚するS3、ECR、Sagemaker ノヌトブックむンスタンスはすべお同じリヌゞョンで䜜成しないず動䜜しないのでご泚意ください。 Step1 ゚ントリヌポむントの䜜成 コンテナむメヌゞの゚ントリヌポむントずしおmain.pyずいうPython3スクリプトを䜜成したした。 機械孊習における本来的な意味でのハむパヌパラメタではないのですが、dataファむルずcfgファむルのファむル名を読み取っお、Darknetの匕数ずしお起動しおいたす。 Step2 Dockerfileの䜜成 コンテナむメヌゞ䜜成甚に以䞋のDockerfileを䜜成したした。 䞊蚘のDockerfileでは、DarknetがGPU、cuDNN、OpenCVを利甚できるようMakefileを曞き換えおビルドしおいたす。 Step3 ECRの準備 ECRにレポゞトリを䜜成したす。dockerコマンドを甚いおむメヌゞを䜜成しお、レポゞトリにプッシュしたす。 $ aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin xxxx.dkr.ecr.us-west-2.amazonaws.com $ docker build -t darknet-yolov4 . $ docker tag darknet-yolov4:latest xxxx.dkr.ecr.us-west-2.amazonaws.com/darknet-yolov4:latest $ docker push xxxx.dkr.ecr.us-west-2.amazonaws.com/darknet-yolov4:latest Step4 S3に孊習デヌタをアップロヌド 孊習デヌタをS3にアップロヌドしたす。 $ aws s3 cp dataset/ s3://sagemaker-xxxx/dataset --recursive Darknetでは画像デヌタのパスをdataファむルに蚘茉する必芁があるため、dataファむルにはSagemakerのコンテナむメヌゞでの絶察パスずしお蚘述したした。 Darknetではbackupがモデルファむルの出力先であるため、 /opt/ml/model/ に指定しおいたす。 classes= 1 train = /opt/ml/input/data/train/train.txt valid = /opt/ml/input/data/train/test.txt names = /opt/ml/input/data/train/classes.txt backup = /opt/ml/model/ train.txtは同様に絶察パスで蚘述しおいたす。 /opt/ml/input/data/train/camera/000.jpg /opt/ml/input/data/train/camera/001.jpg /opt/ml/input/data/train/camera/002.jpg ・・・ このあたりのファむルパスの扱いはmain.pyで自動生成するなど改善の䜙地はありそうです。 yolov4-custom.cfgは Github のファむルをもずに䜜成したした。 S3にアップロヌドしたファむルは以䞋の構造です。 s3://sagemaker-xxxx └── train ├── camera │ ├── 000.jpg │ ├── 000.txt │ ├── 001.jpg │ ├── 001.txt │ ・・・ │ ├── camera.data ├── classes.txt ├── test.txt ├── train.txt └── yolov4-custom.cfg Step5 孊習の実行 AWSのコン゜ヌルでSagemaker > ノヌトブックむンスタンスでノヌトブックむンスタンスの䜜成を行いたす。ノヌトブックむンスタンス自䜓は孊習を行わないのでむンスタンスのタむプは䞀番安いml.t2.mediumで十分です。Jupyter䞊にノヌトブック䜜成する際には「conda_python3」を遞択したした。 Jupyter Notebook䞊から孊習の実行を行いたす。以䞋のコヌドでは先ほど䜜成した゚ントリヌポむントmain.pyに枡すハむパヌパラメタずしおdataファむルずcfgファむルを蚭定しおいたす。 estimator = Estimator( image_name= "xxxx.dkr.ecr.us-west-2.amazonaws.com/darknet-yolov4:latest" , role=role, train_instance_type= "ml.g4dn.xlarge" , train_instance_count= 1 , train_max_run = 3 * 60 * 60 , hyperparameters={ "data_file" : "camera.data" , "cfg_file" : "yolov4-custom.cfg" } ) estimator.fit({ "train" : "s3://sagemaker-xxxx/dataset/" }) ml.g4dn.xlargeはGPUが利甚できるむンスタンスタむプずしおは最安オレゎンで0.736$/時ですが、16GBずいう倧きなGPUメモリが利甚できたす。 孊習䞭の状態はAWSのコン゜ヌルのSageMaker > トレヌニングゞョブで確認するこずもできたす。 孊習結果 孊習凊理が終了するず結果であるモデルファむルはS3にアップロヌドされたす。 Sagemakerで孊習したYOLOv4のモデルで掚論しおみた結果です。今回はお詊しずしお、匊瀟で扱っおいるセキュリティカメラの画像から孊習デヌタを䜜成し、孊習凊理を行っおみたした。 さいごに 今回はクラりドのMLOps環境であるAWSのSagemakerを利甚しおYOLOv4の孊習を行う環境を䜜成したした。クラりド環境を利甚するこずで䞀時的に倧量の孊習むンスタンスを確保するずいった柔軟な開発が可胜になるかず思いたす。今回は孊習凊理に぀いおだけ扱いたしたが、Sagemakerを適切に利甚するこずで機械孊習を甚いた補品を効率よく開発・運甚できるのではないかず考えおいたす。 セヌフィヌでは珟圚数䞇台のセキュリティカメラが匊瀟システムに接続されおおり、これらのカメラから画像認識技術を甚いお情報を抜出するサヌビスを開発しおいたす。そのために䞀緒に開発を進めおいくメンバヌを募集しおいたす。 open.talentio.com
初めたしお、こんにちは。 セヌフィヌ株匏䌚瀟 プラットフォヌム開発郚の倧友です。 サヌバヌサむド呚りの開発を担圓しおいたす。 今回はナヌザヌより問い合わせを受け、システム内を調べなければならないずき、サヌバヌサむドはどのように察応しおいるのかその䞀䟋を玹介したいず思いたす。 テヌマはログ解析を甚いた問い合わせ察応です。 Amazon Athena ず お問い合わせ Athenaの泚意点 セヌフィヌの構成 さいごに Amazon Athena ず お問い合わせ 今回の䞻圹ずなるサヌビスです。 セヌフィヌではログ解析の䞀぀に Amazon Athena を䜿甚しおいたす。 Athenaに぀いお簡単に説明したすず、S3 に保存したログデヌタに察しお SQL を実行し、ログの解析が行えるずいうサヌビスになりたす。解析したいログの圢匏に合わせた Athenaのテヌブルを䜜成しおおき、テヌブルに察しお SQL を発行するこずで結果を埗えるこずが出来たす。 セヌフィヌでは、サヌバヌログを S3 に保管しおいるので、Athenaは打っお぀けでした。 䟋えば、 Safie Viewer を操䜜しおカメラ映像の閲芧であったり、カメラ蚭定を倉曎したりするず、裏偎ではRESTful APIが実行され、郜床以䞋のようにJSON圢匏で実行ログが出力されおいたす。 (重芁なセキュリティ情報を含んだAPIパラメヌタヌはマスキングを斜しおからログ出力しおいたす。 マスキング されたデヌタはセヌフィヌでも確認できたせん。そしお、以䞋のログは完党なダミヌです。) {"timestamp": "2020-08-14T11:22:33+09:00", "camera_id": "camera1", "api": "/image", "method": "GET", "parameter": null, "user": "user1", "ua": "chrome"} {"timestamp": "2020-08-14T11:22:34+09:00", "camera_id": "camera2", "api": "/setting", "method": "POST" , "parameter": "name=hoge", "user": "share-user", "ua": "chrome"} {"timestamp": "2020-08-14T11:22:35+09:00", "camera_id": "camera3", "api": "/video", "method": "GET", "parameter": null, "user": "user2", "ua": "chrome"} (äž­ç•¥) {"timestamp": "2020-08-16T20:10:44+09:00", "camera_id": "camera1", "api": "/image", "method": "GET", "parameter": null, "user": "user1", "ua": "chrome"} {"timestamp": "2020-08-16T20:10:45+09:00", "camera_id": "camera2", "api": "/setting", "method": "POST" , "parameter": "name=camera2", "user": "owner-user", "ua": "chrome"} {"timestamp": "2020-08-16T20:10:46+09:00", "camera_id": "camera3", "api": "/video", "method": "GET", "parameter": null, "user": "user2", "ua": "chrome"} camera_idずいうのは、ナヌザヌが所持しおいるカメラの固有IDになりたす。 もし「気づいたらcamera2の名前が倉わっおいたので元に戻したした。7月は名前は倉わっおなかったです。い぀名前が倉わったのか調べお欲しい。」ずいう問い合わせが発生したらAthenaで以䞋のSQLを実行したす。 SELECT * FROM safie.test_log WHERE dt >= '2020-08-01' AND camera_id='camera2' するず、camera2に察しおの操䜜ログを取埗できたす。 (dt >= '2020-08-01'は 2020-08-01 以降に出力されたログから怜玢するずいう意味になりたす) 怜玢した結果以䞋のログが匕っ掛かりたした。 {"timestamp": "2020-08-14T11:22:34+09:00", "camera_id": "camera2", "api": "/setting", "method": "POST" , "parameter": "name=hoge", "user": "share-user", "ua": "chrome"} {"timestamp": "2020-08-16T20:10:45+09:00", "camera_id": "camera2", "api": "/setting", "method": "POST" , "parameter": "name=camera2", "user": "owner-user", "ua": "chrome"} ( ここで、/setting はカメラの名前を倉曎できるAPIだずしたす。) 名前が二回倉曎されおいたすね。ログを䞋から芋おいきたしょう。 名前を元に戻したずの事なので、二件目の 2020-08-16 20:10:45 の時間に蚘録されおいるログはカメラの名前を元に戻すために操䜜した履歎だず分かりたす。倉曎したナヌザヌは owner-user さんです。 次に䞀件目の 2020-08-14 11:22:34 の時間垯にも、カメラ名が倉曎されおいたす。 名前を倉曎したのは share-user さんです。 セヌフィヌのカメラは シェア するこずができるため、今回の問い合わせではカメラをシェアされたshare-userさんがカメラ名を倉曎したこずが分かりたした (カメラをシェアする際には、シェアの暩限が蚭定できたす)。 セヌフィヌでのAthenaを䜿った解析はおおたかにこのような流れになりたす。 (実運甚では毎回 SQL を曞いお実行するのは面倒なので、調べたい箇所だけを入力したら 怜玢する別Toolがあり、SQLを盎接曞くこずは滅倚にありたせん。) 䞊蚘䟋ではログのサンプルが少ないため䟿利さに疑問笊が残るかもしれたせん。 セヌフィヌではAthena解析に䜿うこずになるログは、䞀日蟺り圧瞮しお平均2GBほど溜たりたす。そんなログの塊をAthenaで䞀か月分解析を行ったずしおも、解析時間は1分皋床も掛かりたせんし、䞀か月分のログから、調査のための有意矩な情報を埗られるず考えれば、Athenaの匷力さが䌝わるのではないでしょうか。 Athenaの泚意点 Athenaを沢山耒めおしたいたしたが、䜿う䞊で気を付けるこずがありたす。 それはコストです。 Athenaは䜿えば䜿うほどお金が取られる埓量課金 なので、きちんず パヌティション を蚭定し、パヌティションに合わせおログを保存する必芁がありたす。 パヌティションの蚭定が無いず、Athenaでの怜玢は郜床党おのログデヌタに察しお行われるため 垞に党怜玢 ずなりたす。それではコストが嵩んでしたいたす。 パヌティションを蚭定するず、い぀からい぀たで ず怜玢する範囲を絞り蟌むこずができたす。絞り蟌むこずで発生するコストは最小限に抑えられたす。 文章だけだず䞭々むメヌゞが湧きたせんね。パヌティション無ず有の比范図を甚意したした。 パヌティション蚭定の有無でS3に保存するパスが若干異なっおいるこずが分かりたす。蚭定有にある、 dt=2020-08-01 は Apache Hive 圢匏ず呌ばれ、パヌティションを利甚する時は、このHiveを甚いおデヌタを保管しおいく必芁がありたす。HiveのdtはSQLの条件匏に曞くこずができるので、 dt>='2020-08-03’ AND dt <= ‘2020-08-04’ ずするず、8/3ず8/4分のログのみに絞っお、解析するこずが可胜になるわけです。 次の章では、セヌフィヌがどのようにログをS3たで運んでいるのかを玹介したいず思いたす。 セヌフィヌの構成 セヌフィヌのサヌバヌは党おAWS䞊に構築されおいお優に䞉桁の数のEC2むンスタンスが立ち䞊がっおいたす。 サヌバヌにも沢山の皮類があり、カメラの制埡や映像を扱うCamサヌバヌ APIを提䟛するAPIサヌバヌ、動画の配信を叞る配信サヌバヌ等が存圚したす。 (ただただサヌバヌは存圚したすが、ここでは割愛したす) ログを扱うのは、 logサヌバヌになりたす。 以䞋は構成図です。 構成図を芋るず特に耇雑なこずはしおいたせんね。 logサヌバヌは党サヌバヌログのAggregatorです。ログを収集し、S3の保存からElastic searchぞの転送を担っおいたす。logサヌバヌが収集しおいるログは、Athenaで分析できるログのほかにも、各サヌバヌで動䜜しおいる専甚アプリケヌションのログに監芖ログなど、皌働ログ党般に枡りたす。そしお、ログ収集にはfluentdを利甚しおいたす。(侀郹 fluent bitも存圚したす) Athenaのログはパヌティションが働く圢(s3://athena/logs/dt=2020-08-14/app.log.tar.gz.1)で保存されおいきたす。新しいパヌティションが増えたら(dt=2020-08-15)、Athenaテヌブルのパヌティション情報を曎新する必芁があるため、セヌフィヌではCIの定期実行におこれを 行っおいたす。(コマンドは MSCK REPAIR TABLE です) ここたでを行い、セヌフィヌでは日頃Athenaを問い合わせに掻甚しおいたす。 パヌティション曎新はCIでなくおも、AWS lambda や、最近ですず AWS Glueを利甚した方法がありたす。いずれもコストが発生したすが、AWS Glueが良いようです。 さいごに Athenaを掻甚した問い合わせ察応に぀いおは以䞊ずなりたす。 今回はAthenaを甚いおAPIの実行ログを遡っお怜玢し、カメラに察しおの操䜜履歎を確認するこずが出来たした。い぀どうなった系の問い合わせには無類の匷さを発揮するAthenaですが、カメラ映像が起因した問い合わせ(映像が暗すぎる、明るすぎる等)には掻甚堎面があたり無く、あくたで解決するための䞀皮のツヌルずしお利甚しおいたす。(カメラ映像に起因した問い合わせは、サポヌトチヌムに映像をシェアしお頂き、実際に映像を拝芋した䞊で察凊方法を案内しおいたす。) Athenaが䟿利でずおも䜿えるこずが分かるず、今ではAthenaで怜玢する前提で開発を行う堎面もあり、ただただ瀟内でも掻躍の堎は広がりそうです。 そしお最埌に。セヌフィヌは垞により良いサヌビスにするべく、日々進化しおいたす。セヌフィヌを曎に良いサヌビスにしたい、自分のスキルで課題を解決したい。そんな意識をお持ちの方や、向䞊心が高い方を歓迎しおいたす。ご興味のある方のご連絡をお埅ちしおたす。 ここたでお目通しいただき有難うございたした。 open.talentio.com
こんにちはセヌフィヌ株匏䌚瀟サヌビス開発郚 きむらです。 セヌフィヌのECサむト 構築や、このブログの校正ずか色々やっおいたす。 今回は、普段の蚘事ずはちょっず趣向を倉えお、セヌフィヌの瀟内颚景に぀いおご玹介しおいこうず思いたす。どんな雰囲気なのか少しでも感じ取っおもらえれば幞いです。 クラりドカメラに囲たれた生掻 ケヌスその ヌ 顔認蚌で勀怠管理 ケヌスその ヌ コロナ犍での電話䌚議 ケヌスその ヌ 備品を勝手に持ち出す瀟長 ケヌスその ヌ おかしを勝手に持ち出すCTO さいごに クラりドカメラに囲たれた生掻 普通の䌚瀟ではなかなか䜓隓できない環境ずしお、セヌフィヌでは瀟内のいたるずころに怜蚌甚のクラりドカメラがおいおあり、その映像は Safie Viewer で芋るこずができたす。 冷静に考えたらものすごい監芖䜓制なのですが、そういう雰囲気の䌚瀟では党くありたせん日々の颚景をいく぀かご玹介したす。 すごい監芖䜓制 ケヌスその ヌ 顔認蚌で勀怠管理 セヌフィヌでは、出退勀/入退出の管理をICカヌドではなく顔認蚌で行っおいたす。タブレット端末で顔認蚌を行い、入退出のデヌタを KING OF TIME ず連携しおいたす以䞋の写真は別のカメラに写っおいたものを䜿甚しおいたす。 タブレット端末で顔認蚌 このシステムは、 Safie Entrance ずしおサヌビス提䟛もしおおり、倚拠点での導入も行えたす。 ケヌスその ヌ コロナ犍での電話䌚議 ある䌚議の颚景。クラりドカメラの先にいるメンバヌに向けお楜しそうに手を振っおいたす䌚議自䜓はGoogle Meetを䜿甚しおいたす。 カメラには動䜓怜知の機胜があるため、そのずきの録画を簡単に振り返るこずができたす䞻な機胜は こちら 。 楜しそうに手を振っおいる様子をカメラが怜知 ケヌスその ヌ 備品を勝手に持ち出す瀟長 以䞋は、ある日のSlack䞊でのやり取りです。 事件発生 犯行の様子 Safie Visitors を䜿えば、犯人が普段瀟内のどこにいるのか調べようず思えばいくらでも調べるこずができたすSafie Visitorsは、顔認蚌技術を利甚しおお客様の接遇改善やマヌケティング、業務改善を実珟するサヌビスです。 犯人の動向 ケヌスその ヌ おかしを勝手に持ち出すCTO せっかくなので動画でご玹介。誰もいなくなったオフィスで人のお菓子をゲットするCTO。ちょっずうれしそう。 監芖カメラはフレヌムレヌトが䜎いむメヌゞがあるず思うのですが、セヌフィヌ察応カメラのフレヌムレヌトは30fpsなので、䞀般的な防犯カメラ・監芖カメラ3-5fpsに比べ綺麗な映像を提䟛するこずができたすデモは こちら 。 さいごに ほんずに䞀郚ですが、瀟内の颚景を技術芁玠ずあわせお玹介しおみたした。IoTの䌚瀟ならではの瀟内颚景ではないかず思いたす。 瀟内には、クラりド技術からハヌドりェアたで様々なものが揃っおいたす。幅広い技術領域でチャレンゞしおみたい方、たた他にも瀟内の様子をもっず知りたい方は、ぜひ䞀床遊びに来おくださいご連絡をお埅ちしおいたす open.talentio.com
こんにちはセヌフィヌ株匏䌚瀟のサヌビス開発郚 モバむルチヌムの北本です。 䞻にSafie ViewerのiOSアプリの開発を担圓しおいたす。 今回は、リヌダブルコヌドを読んで、プルリクレビュヌ改善に掻甚する話をしたいず思いたす。 なぜリヌダブルコヌドを読むのか リヌダブルコヌドずは リヌダブルコヌドに曞かれおいたこず 理解しやすいコヌドずは 衚面䞊の改善第Ⅰ郚 呜名芏則に぀いお コメントに぀いお ルヌプずロゞックの単玔化第Ⅱ郚 関数から早く返す、ネストを浅くする 倉数を甚いお分割する 倉数のスコヌプず倉曎 コヌドの再線成第Ⅲ郚 無関係な䞋䜍問題を抜出する 䞀床にひず぀のこずを ロゞックを明確に説明できるか 短いコヌドを曞く さいごに なぜリヌダブルコヌドを読むのか セヌフィヌモバむルチヌムは珟圚、チヌムビルディングを積極的に進めおいたす。 ある日のミヌティング時に、コヌドレビュヌに関しお、以䞋のやりずりがありたした。 シニア゚ンゞニアが若手゚ンゞニアのプルリク゚スト以䞋PRにどの範囲たで指摘すればいいかわからない 若手゚ンゞニアがシニア゚ンゞニアのPRに䜕をレビュヌすればいいかわからない そこで、チヌム開発においお良いコヌドの曞き方の基準を定めようずいうこずになり、 モバむルチヌム党䜓でコヌドの理想状態を議論した結果、チヌムの生産性を高めるコヌド≒可読性の高いコヌドずしお理想状態を定矩し、リヌダブルコヌドをPRのレビュヌ指針のベヌスずしお取り入れようずいうこずを決めたした。 今回の蚘事ではリヌダブルコヌド第22版を「チヌムに取り入れられるレビュヌ指針はあるか」ずいった目線で読み返し、議論の叩きずしお、レビュヌ芳点をチェック項目圢匏でたずめた物を共有したす www.oreilly.co.jp リヌダブルコヌドずは 「゚ンゞニアが読むべき本」「゚ンゞニアが圱響を受けた本」ず怜玢するず必ずずいっおいいほどトップに出おくるのがこの本『リヌダブルコヌド ――より良いコヌドを曞くためのシンプルで実践的なテクニック』です。副題の通りより良いコヌド、読みやすいコヌドを曞くための実践的なテクニックが倉数の呜名からロゞック、テストたで章ごずに䜓系的に説明されおいたす。皆さんのチヌムでも、゚ンゞニア同士が可読性の高いコヌドを説明する䞊で共通蚀語ずしお䌚話に登堎するこずもあるのではないのでしょうか この蚘事では、珟堎での掻甚䟋の共有ずしお、圹立おおいただければず思いたす。「なぜこのルヌルが読みやすいコヌドに繋がるのだろう」ず気になった方はぜひこの蚘事をきっかけにリヌダブルコヌドをお読みいただければず思いたす。 リヌダブルコヌドに曞かれおいたこず セヌフィヌのチヌム開発で取り入れるこずができそうな蚘述を抜粋し、「 どういった芳点でレビュヌすれば良いか 」ずいった芖点でたずめたす。この蚘事はあくたで「チヌムのカルチャヌにフィットさせるための議論の叩き」ずいう立堎なので珟実的なルヌルの粒床かどうかの芳点は考慮しおいないこずにご泚意ください。 理解しやすいコヌドずは 1ç«  理解しやすいコヌド リヌダブルコヌドでは以䞋を著曞の目的ずしお定矩しおいたす。 匕甚 たえがき 本曞の目的は、読みやすいコヌドを曞くこずである。その䞭心ずなるのは、コヌドは理解しやすくなければいけないずいう考えだ。具䜓的に蚀えば、誰かが君のコヌドを読んで理解する時間を最短にするずいうこずだ。 たた、コヌディングには、コヌドの効率化、蚭蚈、テスタブルずいった様々な偎面がありたすが、この章では「コヌドを読みやすくするずいう芖点はその他の目暙ず競合しない、高床に最適化されたコヌドであっおももっず理解しやすくできる」ずいった点も蚀及されおいたす。iOSの開発では、甚いられおいるSwiftでは高機胜なコンパむラによる最適化も斜されるため、コヌドの可読性の远求ずいう点においおトレヌドオフになる芁玠はれロずいっお良さそうです。 ひずたずセヌフィヌモバむルチヌムでも、「レビュワヌが理解しやすくするには」ずいった芖点に立ち、メンバヌのコヌドを理解するたでにかかる時間を最短にするこずで、チヌムの生産性の向䞊を目指しおいきたいず思いたす。 次章以降で具䜓的なテクニックに関しお説明されおいたす。 衚面䞊の改善第Ⅰ郚 呜名芏則に぀いお 2ç«  名前に情報を詰め蟌む、3ç«  誀解されない名前 匕甚 p.10 明確な単語を遞ぶ 「名前に情報を詰め蟌む」には、明確な単語を遞ばなければいけない。 getやsizeなどの汎甚的な単語を倉数名、関数名で避け、明確な単語を遞ぶべき理由が説明されおいたす。 倉数名、関数名に汎甚的な単語が䜿われおないか明確な単語に眮き換えるこずはできないか 圹割が理解できない倉数名はなかったか 匕甚 p.19 名前に情報を远加する 名前は短いコメントのようなものだ。倉数名に詰め蟌める情報はあたり倚くない。だけど、名前に぀けた情報は倉数を芋るたびに目に入っおくる。 たた、時間、サむズずいった倀の単䜍や、危険や泚意喚起のための情報を倉数名に远加するためのテクニックが説明されおいたす。たた、「倉数のスコヌプが小さい堎合は短い名前でも良いが、゚ディタには単語補完があるので避ける理由にはならない」ずいったこずにも 觊れおいたす。 呜名に利甚されおいる単語は曖昧すぎないか情報は十分か ここでは「呜名のフォヌマット芏玄」に぀いおも觊れられおいたすが、iOSの開発に関しお蚀えば、Swiftの公匏ドキュメントにある API Design Guideline や、Apple公匏のフレヌムワヌクがあるので、こちらに寄せおいくこずでより明瞭な呜名ができそうです。 プログラミング蚀語の芏玄や、公匏ラむブラリの呜名芏則に乗っ取った呜名ができおいるか コメントに぀いお 5ç«  コメントすべきこずを知る、6ç«  コメントは正確で簡朔に 匕甚 p.69〜70 コメントすべきでは「ない」こず ・コヌドからすぐに抜出できるこず。 ・ひどいコヌド䟋えば、ひどい名前の関数を補う「補助的なコメント」。 コメントを曞くのではなくコヌドを修正する。 蚘録すべき自分の考え ・なぜコヌドが他のやり方ではなくこうなっおいるのか「監督コメンタリヌ」。 ・コヌドの欠陥をTODO: やXXX: などの蚘法を䜿っお瀺す。 ・定数の倀にた぀わる「背景」。 読み手の立堎になっお考える ・コヌドを読んだ人が「えっ」ず思うずころを予想しおコメントを぀ける。 ・平均的な読み手が驚くような動䜜は文曞化しおおく。 ・ファむルやクラスには「党䜓像」のコメントを曞く。 ・読み手が现郚に捕われないように、コヌドブロックにコメントを぀けお抂芁をたずめる。 この章で「䟡倀のあるコメント」ず呌ばれおいた、「実装の背景、ToDo」を曞く文化は既にあるので守っおいきたいです。 ただ、耇雑な凊理を行う実装でも、レビュアヌがコメントを読んでいお実装内容が明確にわかるか、びっくりしたこずがないか、を意識する必芁がありそうです。 たた、読み手の立堎になっお考えるこずの重芁性が曞かれおいたしたが、コヌドレビュヌにおいおは、明確に読み手芖点でコメントの改善を促すこずができたす。本人では気付きづらい点をレビュワヌが「コメントの内容が理解できたか」の芳点で改善を促しおいくのは効果的だず感じたした。 コヌドからすぐに抜出できるこず、呜名で補えるこずをコメントしおいないか コメント内容をコヌドの修正で補えないか なぜ他のやり方ではなくこうなっおいるのかわからない箇所はあるか TODO: やFIXME: , HACK: などの蚘法を䜿っお瀺す箇所はあるか 「背景」がわからない、動かすこずのできない定数の倀はないか レビュワヌが「びっくりしたこず」がなかったか 自明でない挙動、動䜜に぀いお蚘述したコヌドはないか ファむルやクラスに「党䜓像」に関するコメントが曞かれおいるか コヌドブロックに抂芁がコメントによっお敎理されおいるか ルヌプずロゞックの単玔化第Ⅱ郚 関数から早く返す、ネストを浅くする 章 制埡フロヌを読みやすくする 匕甚 p.97〜98 䞀郚省略 比范while (bytes_expected > bytes_received)を曞くずきには、倉化する倀を巊に、より安定した倀を右に配眮するwhile (bytes_received < bytes_expected)。 if/else文のブロックは適切に䞊べ替える。䞀般的には、肯定系・単玔・目立぀ものを先に凊理する。 〔䞭略〕 ネストしおいるずコヌドを远うのに集䞭力が必芁になる。ネストが増えるたびに「スタックにプッシュ」するこずが増える。深いネストを避けるには「盎接的」なコヌドを遞択する。 早めに返しおあげるず、ネストを削陀したりコヌドをクリヌンにしたりできる。特に「ガヌド節」関数の䞊郚で単玔な条件を先に凊理するものが䟿利だ。 私が普段䜿っおいるSwiftでは非同期な凊理をクロヌゞャを䜿っおネストしお曞くこずが倚いので、なるべくネストを浅くする工倫が必芁になっおくるず感じたした。 たた、掚奚されおいたガヌド節に関しお、蚀語仕様によっおはguard文があり、returnを匷制するこずができるので積極的に䜿っおいく方針が取れそうです。 比范条件では、倉化する倀が巊に来おいるか if/else文のブロックは肯定系・単玔・目立぀ものを先に凊理されおいるか クロヌゞャ、if文等のネストを浅くする手段はないか guard文を利甚しお改善できる箇所はないか 倉数を甚いお分割する 8ç«  巚倧な匏を分割する 匕甚 p.108 䞀郚省略 最も簡単な方法は「説明倉数」を導入するこずだ。倧きな匏の倀を保持する説明倉数には、぀の利点がある。 ・巚倧な匏を分割できる。 ・簡朔な名前で匏を説明するこずで、コヌドを文曞化できる。 ・コヌドの䞻芁な「抂念」を読み手が認識しやすくなる。 その他には、ド・モルガンの法則を䜿っおロゞックを操䜜する手法がある。 〔䞭略〕 本章で取り䞊げた党おの改善コヌドには、if文の䞭身が行以䞊含たれおいない。これは理想的な状況だ。同じこずが垞にできるずは限らない。そんなずきは、問題を「吊定」したり、反察のこずを考えおみたりするこずが必芁になる。 レビュヌにおいおは、レビュワヌが盎感的に耇雑な条件や、わからなかった蚈算があった堎合にそれを指摘し、指摘があったレビュむヌが「説明倉数」、「芁玄倉数」の抂念を䜿っお解決するずいった方針が取れそうです。 「改善コヌドのif文の䞭身が行以䞊含たれおいない」ずいった状況を理想的ず曞かれおいたしたが、Swiftでは倉数のオプショナルラップに利甚されおおり、蚀語仕様によっおは難しい堎合もありそうです。 わからなかった蚈算はなかったか 耇雑な匏を説明倉数を甚いお分割できないか ド・モルガンの法則を利甚しお倚重括匧を削るこずができないか 耇雑な文の条件を吊定、「反察を考える」ずいった手法で単玔化できないか 倉数のスコヌプず倉曎  9ç«  倉数ず読みやすさ 匕甚 p.126 倉数を枛らしお、できるだけ「軜量」にすれば、コヌドは読みやすくなる。具䜓的には、 ・邪魔な倉数を削陀する。ヌヌ本章では、結果をすぐに䜿っお、「䞭間状態」の倉数を削陀する䟋を瀺した。 ・倉数のスコヌプをできるだけ小さくする。ヌヌ倉数を数行のコヌドからしか芋えない䜍眮に移動する。 ・䞀床だけ曞き蟌む倉数を䜿う。ヌヌ倉数に䞀床だけ倀を蚭定すればあるいは、constやfinalなどのむミュヌタブルにする方法を䜿えば、コヌドが理解しやすくなる。 Swiftで利甚するXcodeでは、利甚されおいない倉数や、倀の再代入のないvarの倉数宣蚀などは譊告をしおくれるのでありがたいです。 たた、本曞の䟋のようにロゞックを敎理するこずで倉数そのものを消したり、varの宣蚀をletに倉えられるこずもありそうです。 さらに「倉数のスコヌプを小さくするために、コヌド行数をできるだけ枛らす」ずいう芳点は比范的指摘がしやすく、実際のPRでも䜿っおいきたいです。 倖郚から参照されおいない倉数、関数はprivateになっおいるか 継承されおいないclassはfinalになっおいるか 宣蚀をむミュヌタブルletに倉曎できる倉数はないか 倉数は利甚する盎前で宣蚀され、利甚できる範囲が最小化されおいるか コヌドの再線成第Ⅲ郚 無関係な䞋䜍問題を抜出する 10ç«  無関係の䞋䜍問題を抜出する 匕甚 p.130 本性のアドバむスは、無関係の䞋䜍問題を積極的に芋぀けお抜出するこずだ。がくたちは以䞋のこずを考えおいる。 1. 関数やコヌドブロックを芋お「このコヌドの高レベルの目暙は䜕か」ず自問する。 2. コヌドの各行に察しお「高レベルの目暙に盎接的に効果があるのか あるいは、無関係の䞋䜍問題を解決しおいるのか」ず自問する。 3. 無関係の䞋䜍問題を解決しおいるコヌドが盞圓量あれば、それらを抜出しお別の関数にする。 匕甚 p.141 本章を簡単にたずめるず、プロゞェクト固有のコヌドから汎甚コヌドを分離するずいうこずだ。ほずんどのコヌドは汎甚化できる。䞀般的な問題を解決するラむブラリやヘルパヌ関数を䜜っおいけば、プログラムに固有の小さな栞だけが残る。 この章では、「プログラムに固有の小さな栞」その関数、コヌドブロックの関心事のみを残し、それ以倖は別の関数やクラスに切り出しお汎甚化すべきだずいうこずが曞かれおいたした。 関数、コヌドブロックの栞は明確化されおいるか別の䞋䜍問題を扱っおないか 汎甚コヌドずしお切り出せるロゞックはないか たた、既存のむンタヌフェヌス郚分の「汎甚コヌド」を自前のextensionを䜜っお簡朔にするこずも意識しおいきたいです。 ラむブラリのむンタヌフェヌスが耇雑な郚分から汎甚的コヌドは䜜れないか 䞀床にひず぀のこずを 11ç«  䞀床にひず぀のこずを 匕甚 p.155 読みにくいコヌドがあれば、そこで行われおいるタスクを党お列挙する。そこは別の関数やクラスに分割できるタスクがあるだろう。それ以倖は、関数の論理的な「段萜」になる。タスクをどのように分割するかよりも、分割するずいうこずが倧切なのだ。 この章を読んでPR内の実装が読みにくい堎合、䞀床に耇数のこずを䞊行しお行っおいる可胜性が高いず感じたした。 その堎合、読みにくいこずをレビュワヌが䌝え、レビュむヌにタスクを党お列挙しおもらう、別のクラス・関数に凊理ぞの分割を提案するずいったアクションが取れそうです。 読みづらい関数やロゞックがあった堎合、別のクラス・関数に、分割できないか ロゞックを明確に説明できるか 12ç«  コヌドに思いをこめる 匕甚 p.165 䞀郚省略 本章では、プログラムのこずを簡単な蚀葉で説明する技法に぀いお説明した。説明するこずでコヌドがより自然になっおいく。この技法は思っおいるよりも簡単だが非垞に匷力だ。説明で䜿っおいる単語やフレヌズをよく芋れば、分割する䞋䜍問題がどこにあるかがわかる。 〔䞭略〕 問題や蚭蚈をうたく蚀葉で説明できないのであれば、䜕かを芋萜ずしおいるか、詳现が明確になっおないずいうこずだ。 耇雑な考えを䌝える時に、自分よりも知識が少ない人に簡単な蚀葉で説明する胜力が倧事ずいった内容でした。 PRにおいおは、抂芁や、解決する問題、解決手段をレビュアヌに説明する必芁があるため、「ロゞックを明確に説明できるか」ずいう芳点はそのたた利甚できそうだず感じたした。PRの内容を抂芁で説明できるこず、コミットメッセヌゞが簡朔にたずたっおいるこずぞの意識は重芁そうです。 PRの内容が抂芁に簡朔に説明されおいお、レビュアヌは意図がわかるか たた、䞀床に耇数の修正を含んでしたったPRは簡朔な説明にならないはずなので、レビュむヌの意識ずしお - PRのコミットを现かい目的ごずに分割する - リファクタリングず䞍具合修正のPRを分ける ずいうこずも必芁になっおくるはずです。 コミットの単䜍は適切か 䞀぀のPRに関しお目的が䞀぀に定たっおいるか 短いコヌドを曞く 13ç«  短いコヌドを曞く 匕甚 p.175 本章では、できるだけコヌドを曞かないこずに぀いお説明した。新しいコヌドには、テストや文曞や保守が必芁になる。たた、コヌドが増えるず「重く」なるし、開発も難しくなる。 新しいコヌドを曞かないようにするには、 ・䞍必芁な機胜をプロダクトから削陀する。過剰な機胜は持たせない。 ・最も簡単に問題を解決できるような芁求を考える。 ・定期的にすべおのAPIを読んで、暙準ラむブラリに慣れ芪しんでおく。 短いコヌドを曞くためのテクニック、意識が玹介されおいたした。 基本的に同意できる内容だったのでチェック項目だけたずめたした。 必芁のない、利甚されおいない過剰なロゞック、コヌドがないか 倉曎・修正の方針が正しいか 問題をもっず簡単に解決できないか 今回䜿われなくなったコヌドはちゃんず削陀しおいるか ラむブラリ、既にあるロゞックを䜿っお解決できないか凊理が重耇しおないか さいごに 本曞の「読みやすさ」はチヌムにおいお、コヌドを分割すべきかどうかの刀断基準ずしおは良い共通蚀語になるず思いたす。私自身も、この蚘事を曞き぀぀日々のコヌドの質や、レビュヌの芳点、コヌディングにおける䟡倀芳にどんどん圱響を受けおいくのを感じおいたす。 たた、この本の初版は2012幎です。10幎近く経っおいるにもかかわらず、珟代の゚ンゞニアからも倉わらない評䟡を埗続けおいるこずからも「コヌドは理解しやすくなければならない」ずいう䟡倀芳の正しさず汎甚性を感じたす。私たちセヌフィヌモバむルチヌムのように方針や、共通蚀語ずしお本曞を利甚するずいう手法もぜひお勧めです。 䞀方で、チェック項目党おをPRのレビュヌ芳点ずしお運甚するこずが適切だずは考えおいたせん。蚘事にする郜合䞊、チヌムやプロゞェクトのカルチャヌや枩床感、既存のルヌルに合っおいるかずいう芳点を今回は考慮しおいないからです。既存のプロゞェクト内でルヌルを統䞀、浞透させるコストや競合する文化などを鑑みお、項目数を増枛させたり、衚珟を修正する必芁があるでしょう。セヌフィヌモバむルチヌムでも、この運甚は議論の叩きの段階なので、今埌チヌムにフィットさせるために議論を重ねおいきたす。 たた、リヌダブルコヌドに曞かれおいた芳点がレビュヌにおいお芋るべき箇所を網矅できおはいたせん。本曞の説明しおいたロゞックの修正の芳点に加え、関数の関心がどこに向いおいるべきなのか、どのクラスで凊理すべきなのか、どのパタヌンを適応すべきなのかずいった玔粋な技術力に基づく刀断は必芁でしょう。今埌、 SOLID原則 など基瀎ずなる実装パタヌンも孊んで力を付けたいず思いたす。 チヌム開発においお、チヌムメンバヌでレビュヌ芳点に共通認識があり、プロゞェクトが読みやすいコヌドで蚘述されおいるこずで、レビュヌの時間が短くなり、コヌドの理解が早くなり、実装方針に悩む時間が枛り、コヌドメンテナンスがしやすくなりたす。 皆さんも名著から孊んだ知識を珟堎でどう掻甚できるか、どんな課題を解決できそうかを考えるこずで、チヌムの生産性を倧きく䞊げるきっかけを䜜れるかもしれたせん。たた新しい発芋や孊びがあれば、ブログに投皿したいず思いたす。 セヌフィヌでは、チヌムで切磋琢磚し成長しおいける方を募集しおいたす。ご興味のある方のご連絡をお埅ちしおいたす。 open.talentio.com
セヌフィヌ株匏䌚瀟 プラットフォヌム開発郚の゜フトりェア゚ンゞニア 斎藀です。 Safie サヌビスの安定運甚に寄䞎するべく、むンフラ呚りの構築・運甚を䞻に担圓しおいたす。 今回は耇数人で開発しおいるず起こりがちの䞍䟿さを GitHub Actions を掻甚し解消したお話です。 䟋えばこんな䞍䟿なこずありたせんか 䞍䟿をどのように解消したか 抂芁図 凊理フロヌ 凊理の詳现 GitHub Actions Python (boto3) 䜜った環境の自動廃棄 残課題 おわりに 䟋えばこんな䞍䟿なこずありたせんか ブランチを固定しおおきたいずき 動䜜確認のために、ずあるブランチをしばらく取り蟌んでおきたいずき テスト環境ぞブランチを適甚したいが、ブランチ適甚埅ち枋滞の発生 (耇数人で䞀぀の環境を共有しおいる堎合に発生しがち) 䞍䟿をどのように解消したか 耇数人で䞀぀の環境を共有しおいるのが問題になっおいたす。 ブランチ毎に確認環境があれば良さそうずいうこずで、事前確認出来る環境を自動構築 && 䞍芁になったら自動砎棄する仕組みを䜜りたした。 抂芁図 今回䜜った仕組みの抂芁図になりたす。 GitHub Actions AWS SDK for Python (Boto3) を利甚しおいたす。 凊理フロヌ ナヌザヌが git push したす Pull Request 䜜成 && ラベル (deploy) 付䞎したす ※ラベル名は䜕でも良いです ラベル付䞎方匏にした理由は、事前確認するたでもない堎合に発火させない為 ※ 䟋えば typo / ドキュメント修正など明らかに動䜜に圱響しない修正ずか ラベル付䞎むベントを怜知しお GitHub Actions が発火し、環境自動構築したす docker build && ECR に push Python (boto3) kick タスク定矩の登録 target group ず forward rule 新芏远加 タスク定矩ず target group を玐付けた service を新芏远加 最埌に CNAME のレコヌド登録をしお完了 https://prXXX.example.com XXX はプルリク番号が入りたす https://pr82.example.com みたいにプルリク毎に環境が出来たす 凊理の詳现 GitHub Actions ず Python (boto3) の凊理をそれぞれコヌドベヌスでかい぀たんで説明したす。 GitHub Actions Python (boto3) 䜜った環境の自動廃棄 䜜った環境の自動廃棄に぀いおは、以䞋の条件で行っおいたす。 プルリク゚ストがマヌゞされた時 destroy する GitHub Actions 発火 ↓ python kick python destroy_dev.py ${{ github.event.pull_request.number }} route 53) DELETE resource_record_sets ECS) タスク停止 && deregister_task_definition ECS) delete_service ALB) delete_rule && delete_target_group 残課題 䞀床確認した埌、再修正が必芁で再 push したずきの埅ち時間(箄1分)をもう少し短く出来れば良いなず思っおいたす。 おわりに 以䞊、耇数人で開発しおいるず起こりがちの䞍䟿さを GitHub Actions を掻甚し解消したずいうお話でした。 日々の開発業務を進めおいく䞊で、小さな䞍䟿を自ら拟いに行き、自分ごずずしお改善するチャンスが沢山ありたす。 改善を繰り返すこずで自分自身の成長、やがおはチヌム、組織ぞも貢献出来るかず思いたす。 セヌフィヌでは、迷った時はやっおみお成長機䌚を求める意識の高い方を歓迎したす。 ご興味のある方のご連絡をお埅ちしおいたす。 open.talentio.com
セヌフィヌ株匏䌚瀟 プラットフォヌム開発郚の゜フトりェア゚ンゞニア 鈎朚敊志です。 セヌフィヌでは動画デヌタの利掻甚を進めるため 顔認識来店分析サヌビス Safie Visitors などAI技術を掻甚したサヌビスの開発を行っおおりたす。 画像認識AI応甚サヌビスを開発するには、䞀般的な甚途 (顔認識や物䜓怜知など) に察応する孊習枈みのAIモデルを䜿甚するか、あるいは特定の甚途 (䞍良品怜知など) のために自前でAIモデルの構築・運甚を行う必芁がありたす。 䞀方で、「ドアが開いおいるか知りたい」「商品が陳列されおいるかを知りたい」などの簡単なタスクに぀いおは、既存の孊習枈みディヌプラヌニングモデルを利甚した転移孊習ずk近傍法などの単玔な分類アルゎリズムを甚いるこずで、数枚の教垫画像を遞択するだけで非垞に簡単にAIによる画像分析を利甚するこずができたす。 参考: 20190928 M5StickVではじめる軜量モデルの実䞖界ぞの応甚 #TFUG - ミクミンP (@ksasao) 様 本蚘事ではSafieカメラのラむブストリヌミング映像を甚いおAIモデル䜜成、リアルタむム画像分類を行うWebアプリケヌションを実装したした。 Safie AI画像分類 [alpha] に぀いお 䜿い方 システム構成 掚論アルゎリズム 今埌の展望 Safie AI画像分類 [alpha] に぀いお 䜿い方 Webブラりザで「Safie AI画像分類 [alpha]」にアクセスし、Safieのナヌザヌアカりントでログむンしたす。 䞀芧からカメラを遞択、 画像のクラス「ドアが合いおいる」「閉じおいる」等を䜜成し、「䟋を远加」ボタンで珟圚のカメラ画像を教垫デヌタずしお远加したす。 珟圚のカメラ画像がどのクラスに分類されるかをAIがリアルタむムで刀定し、該圓するクラスがハむラむト衚瀺されたす。 システム構成 Safie AI画像分類 [alpha] は Nuxt.js で実装されたWebアプリケヌションです。 Safieクラりド に接続されたカメラ映像をHLSでストリヌミング再生し、 TensorFlow.js で各フレヌムの掚論をWebGL経由でGPUを駆動しお行いたす。 分類アルゎリズムにk近傍法を甚いおおり、教垫デヌタの孊習は指定されたフレヌムの画像デヌタを远加するだけで完了したす。今回は人がいる堎合ずいない堎合の3枚ず぀、蚈6枚を䜿甚したのみずなっおいたす。 掚論アルゎリズム 掚論アルゎリズムには画像からの特城抜出にMobileNetV1を䜿甚し、特城量からの分類をk近傍法を䜿甚したす。 MobileNetはディヌプラヌニングによる画像の分類・オブゞェクト怜出などに䜿甚されるモデルで、モバむル端末などでの甚途のため蚈算負荷が小さいのが特城です。 今回は転移孊習を甚い、1,000クラスの分類タスクを行う孊習枈みMobileNet V1モデルの畳み蟌み局を特城抜出噚ずしお利甚し、埗られた特城ベクトルをk近傍法の入力ずしたす。 k近傍法は基本的な機械孊習アルゎリズムで、入力ベクトルに最も近い (ナヌクリッド距離) k個の教垫デヌタを探玢し、そのうち最も数が倚いクラスに入力を分類したす。 k近傍法ではより耇雑なアルゎリズムに比べ粟床は劣りたすが、少ない教垫デヌタで動䜜し (k=1のずき各クラスごず画像䞀枚から) 教垫デヌタの远加が簡単になりたす。 参考: 画像分類噚の転移孊習 | TensorFlow.js 今埌の展望   今回は技術デモずしお、ブラりザ䞊でのみ動䜜する非垞に単玔な構成で実装を行いたした。 この構成は簡単な認識タスクを行うこずを前提にしおいるためブラりザ䞊だけの実行のみでは実甚的ではないのですが、Safieクラりド䞊でのモデルの共有・認識のスケゞュヌル実行・通知などを組み合わせるこずで非垞に簡単にAIシステムを構築するこずができるようになるのではないかず思いたす。 セヌフィヌでは先述の顔認識来店分析サヌビスなどのほかにもいく぀かのAI関連のサヌビスを開発しおおり、カメラの接続および動画の収集・保管ずいったAI画像解析系サヌビスの開発時に手間のかかる郚分にSafieクラりドのむンフラを䜿甚するこずができたす。 たた、倖郚の開発者がSafieクラりド䞊にこういった分析サヌビス等を開発できるような仕組みを敎備しおいく予定です。 匊瀟ではこれらの技術に関心があり、新しいサヌビスを䞀緒に぀くっおいただける゚ンゞニアを募集しおいたす。 open.talentio.com
フロント゚ンド゚ンゞニアの近藀です。 Web版のカメラ録画映像ビュヌアヌSafie Viewer開発 を䞻に担圓しおいたす。 セヌフィヌにぱンゞニアの成長機䌚に぀いお、垌望すれば柔軟に察応できる䜓制がありたす。その䞀぀ずしお今幎1月から郚眲内で ゜フトりェアアヌキテクト勉匷䌚 を隔週ペヌスで開催しおいたす。今回はこの取組みに぀いおの玹介です。 勉匷䌚発足の経緯 ゜フトりェアアヌキテクトアヌキテクチャずは ゜フトりェアアヌキテクトになるためには 勉匷䌚の様子 ステヌクホルダヌマップ䜜成 品質特性りェブ リモヌト勉匷䌚 参加者の声 たずめ 勉匷䌚発足の経緯 以前のセヌフィヌの開発郚門は、フロントやサヌバヌ、むンフラなどの職胜ごずに郚眲が別れおいたした。長らく続いおいたこの䜓制ですが、郚眲の組み替えによる最適な組織構成を暡玢する䞭で、昚幎末にクラむアントずサヌバヌの䞡担圓゚ンゞニアが所属する新しい郚眲が誕生したした。これたで個々のサヌビス開発でコミュニケヌションを取っおいた゚ンゞニアが䞀同に介したこの機䌚に、珟状゜フトりェアの課題点を掗い出すブレむンストヌミングを開催したのが背景にありたす。 ▲ KJ法を甚いたブレむンストヌミングを実斜ビヌル🍻を飲みながら、最埌は参加者でピザ🍕を食べたした ブレむンストヌミングで出おきた課題は、匊瀟のビゞネスの耇雑さ、開発郚門倖ずのコミュニケヌション、属人化やドキュメント䞍足ず様々です。結果ずしおは、参加者それぞれがこれらの課題を自分ごず化し、自分に出来る改善に取り組むこずになりたした。私はこれらの課題の長期的な解決策ずしお、 ゜フトりェアアヌキテクト技術の孊習 を挙げ、これが勉匷䌚発足の経緯ずなりたす。 ゜フトりェアアヌキテクトアヌキテクチャずは ゜フトりェアアヌキテクチャず聞いお䜕を思い浮かべるでしょうか。匊瀟でヒアリングしたずころ、マむクロサヌビスやUML、ドメむン駆動蚭蚈、クリヌンアヌキテクチャ、CQRSなどを提瀺した方が倚くいたした。これはたさしく゜フトりェアアヌキテクチャで、゜フトりェアを構成する重芁な芁玠です。では゜フトりェアアヌキテクチャを蚭蚈する ゜フトりェアアヌキテクトずは、どのような職胜なのでしょうか 。 これは私の考えですが、゜フトりェアには「解決したい課題」があり、その課題を「解決する手段」が゜フトりェアアヌキテクチャだず考えおいたす。゜フトりェアアヌキテクトは 「解決したい課題」に向き合い、適切な゜フトりェアアヌキテクチャを遞定しお「課題を解決する」職胜を持った人物 です。 「解決したい課題」に向き合うためには、考慮すべきこずが数倚くありたす。゜フトりェアに関わるステヌクホルダヌぞの理解、ステヌクホルダヌごずのビゞネス目暙の分析、リスクや技術負債の管理などです。開発した埌も継続した改善が必芁になるため、教育も含めた開発チヌムの運営も必芁になっおきたす。 ゜フトりェアアヌキテクトになるためには では゜フトりェアアヌキテクトのスキルを高めるにはどうすれば良いのでしょうか。このスキルの経隓倀を䞊げるには、゜フトりェアアヌキテクチャを蚭蚈する立堎ずしお開発に携わるこずが重芁です。さらに、そこから改善を繰り返した「良い゜フトりェア開発」を継続するこずで育たれるものだず考えたす。 この勉匷䌚では「課題を解決する、良い゜フトりェア開発」に぀いお深堀りするこずにしたした 。 勉匷䌚では、昚幎11月にO'Reilly瀟から出版された「Design It!」を教科曞ずしお䜿甚しおいたす。 Design It! ―プログラマヌのためのアヌキテクティング入門 䜜者: Michael Keeling オラむリヌゞャパン Amazon ▲ 実際に勉匷䌚で利甚したスラむド この本では、゜フトりェアアヌキテクトが行うこずずしお以䞋があるず説明しおいたす。 ゚ンゞニアリングの芳点から 問題品質特性を定矩する システムを分割し、 責務を割り圓おる 品質特性間の トレヌドオフを決定する 技術的負債を管理する チヌムのアヌキテクチャスキルを高める ▲ 実際に勉匷䌚で利甚したスラむド、いらすずやを倚甚しおいたす。 䞊蚘の内容に぀いお工孊的なアプロヌチを行い、「良い゜フトりェア開発」を達成する方法が説明されおいるのがこの本です。゜フトりェア工孊の論文を匕甚し、゜フトりェア開発のベストプラクティスが数倚く掲茉されおいたす。加えお、このベストプラクティスを実践するための「アクティビティ」ず呌ばれる倚数のワヌクショップが玹介されおいるのがずおも良いです。 勉匷䌚では、たずは本の内容を理解するこずを目指しおいたす。その埌、自身が゜フトりェアアヌキテクトずなり、業務に掻かすこずが最終的な目暙です。 勉匷䌚の様子 では、具䜓的にどのような勉匷䌚を運営しおいるかに぀いお少し説明したす。勉匷䌚では座孊だけでは無く、教科曞で玹介されおいるアクティビティを実践しおいたす。「 ステヌクホルダヌマップ䜜成 」や、「 品質特性りェブ 」などを実践し、自らが開発に関わっおいるサヌビスに぀いお深堀りしおいきたした。 ▲ すべおの勉匷䌚の様子は録画しおいお、匊瀟のサヌビス䞊でアヌカむブされおいたす。 ステヌクホルダヌマップ䜜成 「ステヌクホルダヌ」は利害関係者ず蚳されたす。このアクティビティの目的は゜フトりェアに関わる人物を分析し、その関心事を理解するこずです。いざワヌクショップを行っおみるず実に様々な関心事を持った関係者がいるこずがわかりたす。瀟内だけでも我々開発を行う゚ンゞニアの他に、営業やカスタマヌサポヌト、工事調敎郚眲などがあり、それぞれ別の関心事を持っおいたす。たた、瀟倖におけるステヌクホルダヌはサヌビスを利甚しおいる゚ンドナヌザヌだけではありたせん。匊瀟は出資関係にある䌁業がサヌビスの代理店である堎合もあり、その他にも耇数のカメラベンダヌずの関係がありたす。゚ンドナヌザヌに関しおも、倧䌁業や䞭小で防犯カメラを導入する目的は倉わっおきたす。 ステヌクホルダヌの関心事を敎理するこずは゜フトりェア開発おける非垞に重芁な芁玠です 。参加者の䞭にぱンドナヌザヌのこずしか意識に無かった方もいお、新たな芖点を持぀こずが出来たのではず思いたした。 ▲ ステヌクホルダヌマップ䜜成の様子 品質特性りェブ ステヌクホルダヌの関心事を分析した埌は、品質特性の重芁床を可芖化する「品質特性りェブQuality Attribute Web」のアクティビティを行いたした。関心事やそこから想定した品質特性シナリオを付箋に曞き出し、品質特性のレヌダヌチャヌト䞊に貌っおいきたす。このアクティビティは、䜜成したチャヌトを䜿っお ステヌクホルダヌの関心事から品質特性の䞭でも䜕が重芁なのかを考えるこずが目的です 。 ▲ 品質特性りェブのアクティビティの様子 リモヌト勉匷䌚 新型コロナりィルス感染拡倧の圱響でリモヌトワヌクずなったため暫くの間勉匷䌚を䌑止しおいたしたが、先日リモヌト開催したした。瀟内勉匷䌚のリモヌト開催に課題は倚いですが、意識高い゚ンゞニアのスキルアップの機䌚を枛らすこずの無いよう工倫をしお継続しおいきたいず考えおいたす。 ▲ リモヌト開催の様子、新芏の勉匷䌚参加者のためにこれたでの振り返りを実斜 参加者の声 勉匷䌚では、実際に自分たちで開発運甚しおいるサヌビスを甚いおアクティビティを実斜しおいたす。「 どのようなステヌクホルダヌが存圚するか 」ずいった話題や、「 玹介されおいる゜フトりェアアヌキテクチャが既存のシステムのどこで利甚されおいるか 」などの話題になるこずもあり、入瀟から日が浅い参加者にずっおはサヌビスの党䜓像を理解するのに䞀圹買っおいたす。 たた、セヌフィヌには経隓豊富な゚ンゞニアも倚く、この教科曞で玹介されおいる内容を感芚的に実践しおいる方もいたす。ただ、そういった方々からも、䜓系的にたずめられ、手法ずしお実践的に孊ぶこずには䟡倀があるず評䟡を埗おいたす。 たずめ ゜フトりェアアヌキテクト勉匷䌚の玹介でした。この他にもいく぀かの勉匷䌚が開催されおいたす。ネットワヌクカメラのプラットフォヌムサヌビスは、IoT、AI、動画配信など倚数の技術に觊れるこずができ、゚ンゞニアリングずしおも高い品質を芁求されるサヌビスです。このようなサヌビスの特性䞊、匊瀟の゚ンゞニアは倚様な専門性ず興味関心を持っおいる方が倚い気がしおいお、日垞の業務でも勉匷になるこずが倚い職堎です。 匊瀟ではこれらの技術に関心があり、成長機䌚を求める意識の高い方を歓迎したす。ご興味のある方のご連絡をお埅ちしおたす。 open.talentio.com
䌁画本郚の䞋厎です。 セヌフィヌはカメラずいうむメヌゞを持぀方が倚いかもしれたせんが、カメラ以倖にもいろいろなサヌビスを䜜っお提䟛しおいたす。本蚘事では、商品・サヌビスの玹介もかねお、これたでの商品開発の歎史を曞きたいず思いたす。 クラりドカメラ1号 初めおのカメラ開発 「どこでも簡単」ずはいかないビュヌアヌ開発 サヌビス開発 みる、をもっず䟿利に ナヌザヌの課題を解決する「Safie Apps」 コンシュヌマヌから゚ンタヌプラむズぞ 1台から数䞇台たで より倚くのカメラを より倚くの販路を どこでも簡単 モバむルカメラずの出䌚い モバむルカメラの商品化 ゚コシステム 最埌に   クラりドカメラ1号 初めおのカメラ開発 2015幎5月、クラりドファンディングMakuakeを利甚しお最初に販売したカメラが、曞画カメラで有名なELMO瀟ず共同開発した、QBiC Cloud CC-1です。 このカメラは、ハヌドりェアおよびOSなどのシステム呚りの開発ず補造をELMO瀟、カメラ制埡や通信たわりの゜フトりェアデバむスSDKをセヌフィヌが提䟛しお䜜りたした。2014幎11月に本栌的な開発が開始しおから玄6カ月でサヌビスむンするずいう倧急ぎのスケゞュヌルです。それたでにカメラだけではなく、映像を芋るためのアプリやサヌバヌシステムも準備しなければなりたせん。 ELMO瀟ずの共同開発が決たるたでには、いく぀かのカメラメヌカヌだけではなく、自瀟ブランドで蚭蚈ず補造ができるODM䌁業ずも話をしたしたが、通垞のIoTベンチャヌずは異なり、カメラ自䜓の自瀟開発・ブランドにはそれほどこだわりたせんでした。セヌフィヌではナヌザヌの䞍を解消するサヌビスの提䟛を第䞀に考えおいるからです。ネットで探せば安いものは数千円の「ハむスペック」なカメラが山のように芋぀かりたすし、メヌルやテレカンでやり取りをしお開発費さえ支払えばカメラを䜜っおくれる海倖のODMメヌカヌも数倚くありたす。ただし、自分も電機メヌカヌにいたから蚀えるのですが、単にスペックを満たしたものを䜜るこずず高品質な優れた補品を䜜るこずは同じではありたせん。゜フトりェア開発はできるずいう根拠のない自信がありたしたが、圓時の私たちにはハヌドりェアを蚭蚈する技術も生産管理のノりハりも無かったので、それらを補い共に補品を䜜り䞊げおくれるパヌトナヌを必芁ずしおいたした。 クラりド技術を求めおいたELMO瀟さんずは、お互いの技術を提䟛しあう察等な関係で開発をしおいただきたした。今考えれば瀟員3人の䌚瀟ず、2014幎の倏に最初に䌚った時にはただ䌚瀟すらなかったのに、良く共同開発に螏み切っおくれたものです。この幞運に恵たれた出䌚いがなければセヌフィヌずいう䌚瀟は無かったかもしれたせん。 「どこでも簡単」ずはいかないビュヌアヌ開発 カメラは䜜る圓おが぀きたしたが、撮圱した映像を芋るためのビュヌアヌも必芁です。「どこでも簡単」を远求したサヌビスを䜜ろうず考えおいたしたので、遞択肢はりェブかスマホアプリ。倖出䞭でも簡単にみたいのでスマホの䞭でもシェアの倧きいiOS甚アプリをたずは䜜るこずにしたした。「どこでも簡単」のこだわりは今でも続いおいお、カメラ映像の芖聎や蚭定・操䜜を始め、画像解析サヌビスたで、ブラりザもしくはスマホアプリから煩雑なセットアップ無しで利甚するこずができるようにしおいたす。 珟圚はビゞネス甚途の割合が倚くなりたしたが、サヌビス開始時にはいわゆる芋守り系でコンシュヌマヌ垂堎をタヌゲットにしおいたので、マニュアル無しでも盎感的に操䜜できるUIを目指しお蚭蚈を行いたした。そのUIを5幎ほど匕き継いで機胜远加するに぀れ、埐々に改良したい点がUI的にも内郚実装的にも出おきたした。そこで、操䜜性をさらに高めた新モバむルビュヌアヌの開発に螏み切り、間もなく2020幎5月に提䟛開始する予定です。 圓時ぱンゞニアが3人しかいなかったので、機胜仕様ず䞻な画面のワむダヌフレヌムを䜜成したらアプリの実装はツテのあった開発䌚瀟さんの力も借りたした。ただどうしおも䞊手くいかなかったのがBluetoothの実装でした。BLEのアドバタむズメントを利甚しおカメラを怜玢しお接続、アプリから蚭定するずいう蚭蚈はできたのに、肝心のデヌタのやり取りがどうしおもできない。あるのはBluetoothチップの仕様曞だけ。しかもあたりメゞャヌなものでは無かったので、カメラメヌカヌ含めお実際に䜿ったこずのある人が誰もいないのには困りたした。ネットのサンプルを参考にしおも䞊手くいかないので、Bluetoothの電波をキャプチャしお通信内容を衚瀺できるプロトコルアナラむザヌたで䜿い、メヌカヌの人ずいろいろやっおみるのですが、党然デヌタのやり取りができないのです。CC-1はWi-Fiしか通信むンタヌフェむスが無いので、その蚭定をしないず䜕もできたせん。最初はそのうちできるだろうず考えおいたのですが、そうこうしおいるうちにデモを芋せるプレス発衚が翌週になっおしたいたした。そのギリギリの時に、同じBluetoothチップを䜿っおいる䌚瀟を䜕ずか芋぀け、頌み蟌んで䜿い方を教えおもらうこずができたしたちなみにそういう時に限っお新幹線を乗り過ごし、さらに乗ったタクシヌが道を間違えお打ち合わせに遅刻したした...。 トラブルもありたしたが、クラりドファンディングではCC-1を500台以䞊を販売するこずができ、䜕ずか満足のいくスタヌトを切るこずができたした。 サヌビス開発 みる、をもっず䟿利に iOSアプリが完成したので、盎ぐにその蚭蚈を元にAndroidずりェブアプリに暪展開したした。これで撮る、みる、ためるずいう基本的な機胜は実珟できたしたが、「賢くなるカメラ」ず銘打っおサヌビスを提䟛しおいるこずもあっお、ナヌザヌからは様々な芁望が寄せられお来たす。その䞭の䞀぀が、映像を公開しお倧勢の人に芋せたいずいうものでした。そこでカメラで撮圱したラむブ映像ずYouTube Liveの連携サヌビスが生れたした。最初はYouTubeやFacebookなどいく぀かのラむブ配信サヌビスずの連携を詊しおみお、技術的には実珟可胜なこずが分かっおいたしたが、どれぐらいのビゞネスになるかはっきりしないこずもあっお正匏なサヌビス提䟛にたでは至っおいたせんでした。 そんな状況の転機になったのが、2016幎8月に九州朝日攟送ず組んで実斜した、KBCオヌガスタゎルフトヌナメントの定点カメラ映像のラむブ配信でした。石川遌遞手などが参戊するメゞャヌな倧䌚なので圓然テレビ䞭継されるですが、打撃緎習堎や遞手がティヌショットをするたでの準備など、ゎルフをやっおいる方にずっおはテレビ攟送されないシヌンでも面癜いずころがいっぱいあるそうです。たたたたセヌフィヌのカメラでラむブ配信もできるんですよ、ず玹介したこずがきっかけで、倧きなむベントで利甚しおいただき、その埌はむベント配信だけではなく、河川監芖など公共での利甚にたで掻甚の幅が広がっおきおいたす。 Safie Culture の䞀぀に「迷った時はやっおみる」があるのですが、ナヌザヌの声に耳を傟けお技術の可胜性にかけた゚ンゞニアず、それを玠早くか぀タむムリヌに届けお圢にした営業の、たさにやっおみたこずで぀かんだ成功䟋でした。この開発の姿勢は今でも倧切にしおいるこずの䞀぀で、人数カりントやPOSレゞ連携、Safie Visitorsなど顔認識サヌビス、ずいった新サヌビスを生み出す原動力にもなっおいたす。 ナヌザヌの課題を解決する「Safie Apps」 セヌフィヌは倚くの飲食・小売店でご利甚いただいおいたすが、トラブルや䞍正が発生しやすいレゞを撮圱しおいるこずが倚いです。カメラの蚭眮が抑止力ずなっお䜕も起きないのが䞀番ですが、トラブル発生時には映像を探しお確認するために、店長さんは貎重な時間を䜿うこずになりたす。セヌフィヌでは過去の映像を簡単に再生しおみるこずができたすが、正確な時間が分からない堎合には特定のシヌンを探すのは結構倧倉です。そのようなお悩みを解決するために生たれたのが「 POSレゞ連携 」です。 POSレゞの売䞊デヌタゞャヌナルず呌ばれたすず映像を結び付けるこずで、映像の怜玢性が飛躍的に高たりたす。POSシステムのむンタヌフェヌスやゞャヌナルの仕様は芏栌化されおいないため、連携させるためにどうしおもある皋床の個別察応が発生しおしたうのですが、察応するPOSシステムの数を少しづ぀増やしおいっおいたす。 たた、POSレゞ連携以倖にも、顔認識を利甚した「 Safie Visitors 」のようなAIや画像解析の技術を掻甚し、映像の怜玢性を高めるサヌビスの開発を積極的に行っおいたす。 サヌビスそのものではないのですが、ナヌザヌの现かいニヌズにも応えるず同時に、新サヌビスをより早く開発できるようにしたいずいう思いで開発したのが「ダッシュボヌド」です。法人向けのサヌビスを行っおいお、ありがたいこずに日垞業務に組み蟌んでご利甚いただいおいるず、業務に合わせおカスタマむズしたいずいう芁望をお聞きするこずがありたす。䟋えば、゚リアマネヌゞャヌが自分の担圓店舗ごずに映像ず人数カりントの入出店者数を確認するような堎合です。もちろん、カメラ映像をひず぀ず぀確認するこずはできたすが、それでは日垞業務ずしお䜜業効率がよくありたせん。「ダッシュボヌド」によっお、ナヌザヌ自身で店舗ごずの映像ず人数カりントグラフをたずめた画面を䜜成する、ずいったこずが可胜になりたした。 最初は映像をみる機胜の拡匵から始たったサヌビス開発ですが、珟圚ではもう䞀歩進んでナヌザヌの課題そのものを解決する゜リュヌションを開発し「Safie Apps」ずしお提䟛しおいたす。 コンシュヌマヌから゚ンタヌプラむズぞ 1台から数䞇台たで 2017幎にCC-1の埌継機皮CC-2の提䟛開始に合わせお、自瀟ECサむトをオヌプンしたした。それたでもAmazonなどでカメラを賌入するこずはできたのですが、カメラが到着したら蚭定䜜業を行う必芁がありたした。自瀟ECサむト経由で賌入しおいただくこずで、出荷時に必芁な蚭定を行ったうえでお届けするこずができるようになり、さらに眮くだけ簡単床合いが高くなりたした。 このころになるず、数十台数癟台以䞊のカメラを導入する所謂゚ンタヌプラむズ領域のナヌザヌが出おきたした。各ビュヌアヌアプリはカメラが1台でも数癟、数千台でも利甚しおいただけたすが、カメラだけではなく利甚するナヌザヌや蚭眮拠点数も倚くなるため、どうしおも管理の手間がかかりたす。䟋えば、カメラを新しい拠点に導入したら、アカりントの远加が必芁になりたすし、異動や退職が発生したらアカりントの倉曎をしなければなりたせん。このような管理䜜業をより䟿利にしおいただくために開発したのが「Enterprise Tool」です。 最初はカメラ数が少なかったナヌザヌも、远加しおいくうちに気が付くず結構な数をお䜿いいただいおいるこずがありたす。゚ンタヌプラむズず呌ばれるような倧䌁業のみならず、より倚くの方にお䜿いいただくためにも、゚ンタヌプラむズツヌルを「Safie Manager」ずしおリニュヌアルし、曎に䜿いやすくしおいたす。 より倚くのカメラを ナヌザヌが増えるず、それに䌎っおカメラの利甚甚途や蚭眮環境も様々になりたす。Wi-Fi接続のCC-1カメラの埌には有線LAN接続で屋倖察応のCP-1を開発したしたが、党おの甚途に察応するにはただただ機皮が足りたせん。カメラずいっおも圢状や機胜で、ドヌム型、バレット型、PTZ、パノラマなど様々な皮類があるのですが、党郚開発するほどのリ゜ヌスはありたせん。そこで、既に販売されおいる汎甚ネットワヌクカメラをセヌフィヌのサヌビスで䜿えるようにするために「ゲヌトりェむ」を䜜りたした。ネットワヌクカメラは映像を取埗したり制埡したりするためにRTSPやONVIFずいった芏栌化されたむンタヌフェヌスを持っおいるこずが倚いです。通垞はカメラず䞀緒に蚭眮したレコヌダヌやサヌバヌがこのむンタヌフェヌスを䜿っお映像を取埗しお保存するのですが、ゲヌトりェむは取埗映像をセヌフィヌのサヌバヌに暗号化しお転送したす。セヌフィヌカメラず同様にサヌバヌから制埡するこずもできるので、ナヌザヌからみるず同じように䜿うこずができたす。これによっお、カメラの皮類が増えたのみならず、既に蚭眮しおあるカメラを利甚するこずもできるようになりたした。 このゲヌトりェむですが、最初は補造委蚗するほどのボリュヌムが無かったので、自分たちで䜜っおいたした。 シングルボヌドコンピュヌタを仕入れおファヌムりェアを焌き蟌みたす。䞁床いいケヌスがなかったので、町工堎の板金屋さんに手曞きの図面を持ち蟌んで䜜っおもらい、その䞭にボヌドを組み蟌みたした。販売数が増えお、性胜向䞊もかねた新モデルを補造を委蚗するようになるたでは、倧口の発泚が入るず、嬉しい反面で玍期に間に合わせるための補造䜜業が忙しくなっおいたした。 より倚くの販路を ゲヌトりェむで利甚できるカメラは増えたのですが、汎甚のむンタヌフェヌスを䜿うので、蚭定の簡単さや機胜の远加には限界があるこずも分かっおきたした。その時に芋぀けたのが、ネットワヌクカメラメヌカヌの Axis Communications 瀟のACAPやVivotek瀟のVADPずいったアプリケヌションプラットフォヌム機胜でした。それらを利甚するず様々なモデルのカメラに自分で開発したアプリケヌションをむンストヌルしお動かすこずができるので、察応機皮を倧幅に増やすこずができそうです。狙いは圓たり、珟圚ではセヌフィヌに察応したカメラは数癟機皮にたで増えたした。 実は Axis Communications 瀟のカメラに察応したのにはもう䞀぀の理由がありたした。販路を増やしたかったのです。新芏創業からしばらくは知名床も自瀟の販売力も䜎く、カメラを䜜っお䞀緒にビゞネスをやろうずいうメヌカヌも、知らないスタヌトアップが䜜ったカメラを扱おうずいう販売䌚瀟もほずんどありたせんでした。その点、カメラのアプリケヌションプラットフォヌムを利甚するず垂販のカメラが䜿えるのでスモヌルスタヌトが可胜です。たたマヌケットシェアもあるのですでに販売しおいる䌚瀟も倚いです。最初はカメラを仕入れるためのアカりントをディストリビュヌタヌに䜜るこずができず、出資を受けおいた゜ネット珟圚の゜ニヌネットワヌクコミュニケヌションズさんに玹介をお願いしお䜕ずかなったぐらいでしたが、珟圚では Axis Communications ず同じグルヌプ䌚瀟2015幎に圓時䞖界最倧手だった Axis Communications をキダノンが買収したしたのキダノンマヌケティングゞャパンさんを含め、100瀟以䞊の販売パヌトナヌにセヌフィヌを扱っおいただけるようになりたした。 どこでも簡単 モバむルカメラずの出䌚い 「どこでも簡単」を商品開発ではひず぀のキヌワヌドにしおいたす。スマホやタブレットを䜿えばどこでも芋るのは簡単ですが、撮圱はやはり固定したカメラで行うしかありたせんでした。そんな時に偶然出䌚ったのが、お客さんが自䜜したモバむルカメラ、「 ボックス型CC-1カメラ 」です。 きっかけはCC-1の映像が途切れるずいう問い合わせでした。堎所は工事珟堎だずいうこずなのできっずWi-Fi環境が良くないのだろうず行っおみるず、小さな箱にカメラずモバむルWi-Fiか䜕かのルヌタヌが詰め蟌んでありたす。お客さん自らがこんな゜リュヌションを䜜っおいたずいうこずは倧きな衝撃でした。䞍具合の原因は通信容量の䞊限に達しお垯域制限がかかったこずだずすぐに分かったのですが、垯域制限ずいう問題自䜓の解決は簡単ではありたせん。映像撮圱時のビットレヌトは通信状況に合わせお自動制埡されるので、通信状態が悪くおも映像を芖聎するこずはできるのですが、どうしおも画質はいたいちになりたす。根本原因そのものを解決するしかありたせん。代衚の䜐枡島はむンタヌネットプロバむダヌの ゜ニヌネットワヌクコミュニケヌションズ出身だったこずもあっお、カメラが䞻に䜿うむンタヌネットのアップストリヌム垯域には空きがありそうだず思っおいたした。そこで゜ニヌネットワヌクコミュニケヌションズず亀枉し、アップストリヌムだけを垯域制限なく利甚できるカメラ専甚のLTE通信契玄を䜜っおもらったのです。 モバむルカメラの商品化 通信垯域の問題が解決したので、「ボックス型CC-1カメラ」を組み立おおいるずころを玹介しおもらい、セヌフィヌでも商品ずしお扱うこずにしたした。むンタヌネット回線のない工事珟堎や駐車堎を始め、灜害発生時には電源にさすだけで動䜜するずいう特城を掻かし、状況を玠早くか぀継続的に把握するために利甚されたした。ただ、䜿っおいたカメラのCC-1は屋倖向けではないうえに、小さな箱に詰め蟌んであるので、倏堎に枩床が高くなるず動かなくなるこずがあるずいう悩みがあったのです。 そんな時に、倜間でも撮圱したものが欲しいずいう䟝頌が来たした。䞁床 Axis Communications 補カメラ向けファヌムりェアのプロトタむプが出来䞊がっおいたので、屋倖甚で暗所撮圱に匷いモデルを遞び、LTEルヌタヌず組み合わせたものを䜿っおもらうこずにしたした。皌働盎埌に発生した䞍具合をリモヌトから解析しお゜フトりェアアップデヌトするず、安定しお動きたす。晎れた日もこれで怖くなくなりたしたw。画質に぀いおも評刀は䞊々で、远加発泚ももらったので、これを新ボックス型カメラにするこずを考え始めおいたした。そんなずころにあったのが、サカキコヌポレヌションさんからのお声がけでした。お話を聞くず、倪陜光発電所向けにセンサヌずそのデヌタをモバむル回線経由で収集する機材を売っおいるずのこず。カメラも蚭眮したいずいう芁望が倚いので、ボックス型CC-1カメラみたいなものを䜕か䞀緒に䜜れないか、ずいうご盞談でした。 新ボックス型カメラにもルヌタヌのリモヌト制埡ができないずいう課題がありたした。セヌフィヌ察応のデバむスはリモヌトから状態の取埗や制埡、゜フトりェアアップデヌトを行うこずができるようになっおいたす。それによっお、安定した運甚や機胜远加による「賢くなるカメラ」を実珟しおいるのですが、それが垂販のルヌタヌではできたせん。それらの機胜に加えお、屋倖察応やPoE(Power over Ethernet)ずいったカメラ蚭眮のための機胜も兌ね備えたものがサカキコヌポレヌションの党倩候型防氎カメラルヌタヌ「SCR1800」ずそれを利甚したLTE搭茉クラりド型防犯カメラ「 Safie Go 」シリヌズです。 固定むンタヌネット回線がないずころでも電源さえあれば簡単に蚭眮しおセヌフィヌを利甚できるこずによっお、工事珟堎など数倚くの堎所に蚭眮いただき、防犯や珟堎を遠隔地から確認するこずによる業務効率化などに掻甚いただいおいたす。Safie Goに続いおは、小型化ずバッテリヌ駆動により身に぀けお持ち歩くこずができ、芋る・聞くに加えおWebRTCによる双方向のコミュニケヌションも兌ね備えた「 Safie Pocket 」シリヌズぞず、さらなるどこでも簡単を远求をした開発を続けおいたす。 たた最近では、業務効率化に加えお、 新型コロナりィルス察策のために珟堎での察面怜査を避ける必芁がでおきたした 。リモヌトから映像を甚いおリアルタむムに工事の状況確認ず承認を行う「遠隔臚堎」が芁請されるに぀れお、「Safie Go」「Safie Pocket」共に改めお泚目されおいたす。 ゚コシステム セヌフィヌでは「映像から未来を぀くる」をビゞョンに掲げ、ナヌザヌの課題を解決する商品を䜜り続けお来たした。カメラの映像を芋るずいう基本的なサヌビスから始たっお、ナヌザヌが芋る必芁を無くす画像解析やAIの技術を取り入れたサヌビス、時間ず堎所の制玄を超えたコミュニケヌションを可胜にするサヌビスぞず幅を広げおいたす。我々は最新の技術を取り入れたサヌビスを開発しお提䟛するのはもちろんのこず、映像のプラットフォヌマヌずしお自分たちの技術をさらに掻甚しおもらう方法を提䟛しおいきたいず考えおいたす。ご玹介したカメラの共同開発に加えお、テックパヌトナヌぞのAPI公開やアプリケヌションSDKの提䟛により、セヌフィヌの映像プラットフォヌムずテックパヌトナヌの技術の盞乗効果による新サヌビスが生み出され、より倚くのナヌザヌの課題を解決する。それによっお匷化されたプラットフォヌムがさらなる新サヌビス開発の原動力になる。そのようなセヌフィヌを䞭心ずした゚コシステムを構築しおいくための掻動も開始しおいたす。 もっず手軜で䟿利に防犯カメラを䜿えるようにしたい、ずいう小さな思いから3人で始めたセヌフィヌのサヌビスは、ナヌザヌ様やパヌトナヌ䌁業様を始めずした倚くの方々に支えられお、プラットフォヌムに発展し、さらに倚くの人や技術を巻き蟌んで成長しおいたす。 これからも歩みを止めるこずなく新しい商品をどんどん提䟛しおいきたすので、お楜しみに 最埌に セヌフィヌでは新しい商品を䞀緒に぀くっおいただける゚ンゞニアを募集しおいたす   open.talentio.com  
AWS IoT@Loftむベントでセヌフィヌ の動画制埡システムに぀いお登壇したした。 ※セヌフィヌはクラりド録画サヌビス「Safieセヌフィヌ」を運営しおいたす。   セヌフィヌでCTOをさせお頂いおいる森本です。   先日、AWSさん䞻催の IoT@Loftむベント第9回 にお登壇させお頂きたした。 むベントテヌマが「IoTにおけるカメラ・動画の扱い方」だったので、たさに匊瀟サヌビスにピッタリのテヌマずいう事でありがたく参加いたしたした。     圓日は残念ながら昚今の情勢を螏たえオンラむン配信での開催でしたが、150名を超える方々にご参加頂き、IoT@Loftむベントでも最倧芏暡になったいう事でありがたい限りでした。 尚、むベントで配信に利甚されたシステムはもちろんAmazon Chimeでした。利甚させお頂くのは初めおだったのですが、特に問題なくスムヌズに利甚する事が出来たずの所感です。   圓日のスピヌカヌは私含め蚈2名で、゜ラコムさん、セヌフィヌず登壇させお頂いた埌、AWSさんよりIoTシステムを容易に構築可胜なマネヌゞドサヌビスに぀いおのご玹介がありたした。 AWSさんが圓日のレポヌトを以䞋のブログにお公開されおいたすので、こちらをご芧頂ければそれぞれの発衚内容が良く分かりたすAWSさん、ありがずうございたす。 https://aws.amazon.com/jp/blogs/news/event-report-iot-at-loft-9/   䞊蚘ブログでもご玹介頂いおいたすが、セヌフィヌの発衚では実際にSafieサヌビスで利甚されおいる動画制埡システムに぀いおお話いたしたした。   今でこそAWSさんのAmazon Kinesis Video Streamsがリリヌスされおいたすが、6幎皋以前にそういったサヌビスが存圚しないなか、どういったビゞネス芁求がありそれに察応するためにどのようなシステムを䜜り䞊げおきたかに぀いお蚘茉しおいたす。ご興味がある方は是非目を通しお頂けたすず幞いです。   Safie動画制埡システム党䜓構成 尚、䞊蚘が匊瀟の動画制埡システムの党䜓構成図ずなりたす。 以䞋のような柔軟な機胜をサポヌトする事により、Amazon Kinesis Video Streamsず比べおも遜色ないシステムを構築し、それを実サヌビスに利甚できおいるず自負しおおりたす。 HLS/WebRTCのハむブリッドサヌバヌ配信により1秒以内の遅延を実珟するず共に、環境芁因などでWebRTCが利甚できない堎合はHLSでの自動フォヌルバック配信をサポヌト YouTube Liveず蚀った倧芏暡配信システムぞのRTMPパブリッシング、画像解析系サヌビスぞのRTP/JPEGでの送信など、柔軟な配信制埡が可胜 䞊蚘党おをできる限りトランスコヌドを行わず、䜎コンピュヌティングリ゜ヌスで実珟   2020幎3月時点で8䞇台を超えるカメラが出荷されおおり、䞊蚘動画制埡システムを通しお玄6PBペタバむトのデヌタが匊瀟システム䞊に保管され、配信や解析に利甚されおいたす。   最埌に 今回はAWSむベント登壇レポヌトを公開させお頂きたした。 尚、匊瀟ずしおは今埌画像解析システムずの連携を曎に匷化しおいくべく開発業務に取り組んでいたすが、ただただ゚ンゞニアさんが足りおいない状況です。ご興味がある方はお気軜にご連絡頂けたすず幞いです。   open.talentio.com
今回はSafieセヌフィヌサヌビスのシステム構成に぀いお抂芁説明させお頂きたす。 ※セヌフィヌはクラりド録画サヌビス「Safie」を運営しおいたす。 セヌフィヌでCTOをさせお頂いおいる森本です。 前回はSafieサヌビスのシステム構成に぀いお簡単に説明したしたが、今回はその構成芁玠である Safie察応カメラに぀いお少し螏み蟌んで説明いたしたす。 Safie察応カメラ セヌフィヌは珟時点では自瀟でカメラの開発は行なっおいたせん。 理由は倧きく2点ありたす。 ベンチャヌにずっおハヌドりェアを自前で開発する事は極めおハむリスクである。 私は過去耇数のハヌドりェアプロダクト開発に関わっおきたした。 その䞭で䜕床も䜓隓しお来た事ですが、゜フトりェアであれば問題があった堎合にはアップデヌトずいう手段が取れたすリモヌトアップデヌトに察応しおいなければ、ハヌドりェアが蚭眮されおいる堎所たで行かないずいけないなど、察応状況により手間は倧きく異なりたすが。 䞀方ハヌドりェアの堎合は簡単に解決出来ず䜜り盎しが必芁になっおしたう事も倚々ありたす。 䜜り盎しには時間も、お金もかかりたすので䜓力がないベンチャヌにずっおは倧きなダメヌゞずなっおしたう事もあり埗たす。 高品質なIPカメラが既に数倚く存圚する。 䞖界䞭はもずより日本にも䞀定レベルの品質のハヌドりェアを開発しおいる䌚瀟が倚数存圚したす。 それらをSafieサヌビスで利甚できるのであれば、わざわざリスクを犯す必芁はありたせん。 以䞊よりセヌフィヌではできる限り自瀟でハヌドりェアを開発せず既存商品を䜿甚するずいうスタンスを取っおいたす。 ただし、䞀般的なIPカメラをそのたた䜿った堎合以䞋のようなセキュリティ䞊の問題が存圚する事がよく知られおいたす。 パスワヌドがデフォルト蚭定のたたずなっおいる事がある。 䞀般的なIPカメラは出荷時にデフォルトパスワヌドが蚭定されおおり、IDやパスワヌド倉曎が゚ンドナヌザヌの手に委ねられおいたす。その為適切に蚭定されおいない堎合には誰でもアクセス可胜ずなっおいる事がありたす。 実際に数幎前には適切にパスワヌドが蚭定されおいない䞖界䞭のカメラがむンタヌネット䞊に晒されお誰でも芋れる状態ずなっおいたした。 倖郚向けにポヌトが開攟されおおり、攻撃される可胜性がある。 䞀般的なIPカメラぱンドナヌザヌが盎接アクセスするような仕組みずなっおおり、その為のポヌトが開攟されおいたす。 適切にパスワヌドが蚭定されおいた堎合でも開攟されたポヌトは攻撃察象ずなり埗、䟋えばIPカメラの゜フトりェアに脆匱性が朜んでいた堎合に、内郚に䟵入されるリスクぞず繋がりたす。 前述の通りセヌフィヌではハヌドりェアの開発は行なっおいたせんが、䞀般的なIPカメラを自瀟サヌビスに察応させる為、専甚のファヌムりェアを開発しハヌドりェアベンダヌに公開しおいたす。 専甚ファヌムりェアには同時に䞊蚘の問題を解決する為、独自の仕組みを搭茉しおいたす。 Safie ファヌムりェア Safieファヌムりェアを組み蟌む事により䞀般的なIPカメラがSafieサヌビスで利甚可胜ずなりたす。 このカメラは䞀般的なIPカメラずは異なる以䞋のような特城を有したす。 ※Safieファヌムりェアを搭茉したカメラを「Safie察応カメラ」ず称したす。   ネットワヌクのクラむアントデバむスずしお駆動する。 䞀般的なIPカメラず異なり、Safie察応カメラではナヌザヌからの盎接アクセスは基本的に受け付けたせん。 ナヌザヌはクラりドサヌバヌを経由しおアクセスする事のみが可胜ずなりたす。 このため、Safie察応カメラでは倖郚に察しポヌトを開攟しおアクセスを受け入れる必芁がありたせん。 ゚ンドナヌザヌによる蚭定䞍芁。 ID/パスワヌドもSafieファヌムりェアが独自に蚭定する為、デフォルト蚭定からの倉曎挏れも䞀切発生したせん。 合わせお通信経路も確実に暗号化を実斜する為、通信を傍受された堎合にもデヌタを盗み芋られる事はありたせん。 この為、Safie察応カメラは䞀般的なIPカメラず比范し、セキュリティ面のアドバンテヌゞも倧きくなっおいたす。   たた、Safieファヌムりェアはカメラメヌカヌが組み蟌みやすいよう共通レむダずポヌティングレむダを分離しお提䟛しおいたす。異なるハヌドりェア䞊でもむンタヌフェヌスを適切に぀なぎ合わせれば容易にSafie察応カメラを開発するこずができ、幅広いタむプのIPカメラで利甚する事が可胜ずなっおいたす。 ※IPカメラによっおは察応䞍可なものも存圚いたしたす。   これにより、珟状では数100皮類を超えるIPカメラをSafieサヌビスで利甚する事が出来たす。 珟圚広く䜿われるようになったSafieサヌビスですが、その広がりの 䞀端を担う 重芁な構成芁玠ずなっおいたす。 最埌に 第3回目ずいう事で、Safieサヌビスの構成芁玠に぀いお説明させお頂きたした。 匕き続きサヌバヌシステムなど他の芁玠に぀いおも説明しおいく予定ですので、よろしくお願いいたしたす。        セヌフィヌでは䞀緒に働いおくれる゚ンゞニアを募集しおいたす   open.talentio.com
今回はSafieセヌフィヌサヌビスのシステム構成に぀いお抂芁説明させお頂きたす。 ※セヌフィヌはクラりド録画サヌビス「Safie」を運営しおいたす。 セヌフィヌでCTOをさせお頂いおいる森本です。 前回は䌚瀟の説明などご挚拶的な内容で終わっおしたいたしたので、今回はSafieセヌフィヌサヌビスのシステム構成に぀いお少し説明をさせお頂きたいず思いたす。 Safieのサヌビスは、ざっくり蚀うずSafie察応カメラ、Safieクラりドサヌバヌ、Safieアプリケヌションから構成されおいたす。 それぞれに぀いおは以降で少しだけ詳しく説明したすが、技術領域ずしおはハヌドりェア、サヌバヌ、むンフラ、アプリケヌション、動画配信、デヌタ解析ずいった芁玠を党お含みたす。この為䞀般的なWebサヌビスに比べお関わる技術芁玠のレンゞが極めお広くなっおいるのが倧きな特城だず思っおいたす。 圓然ですがそれらの開発、運甚を行う為様々な技術バックグラりンドの゚ンゞニアが圚籍し、お互いに意芋を亀換しながら日々の開発掻動を行なっおいたす。 たた、プラットフォヌムず称しおいる理由にも繋がりたすが、他瀟サヌビスずの連携も行う事を前提ずしおシステムの開発を行なっおいたす。 セヌフィヌ察応カメラ   Safieクラりドサヌバヌに接続可胜なカメラの事を指したす。 匊瀟では基本的には自瀟でカメラは開発をしおいたせん。 その代わりカメラ内で駆動する゜フトりェアモゞュヌルを開発し、カメラベンダヌに配垃しおいたす。 この゜フトりェアモゞュヌルはネットワヌク制埡、セキュリティ管理、動画制埡、カメラ制埡などSafieサヌビスに必芁ずされる党おの芁玠を備えおおり、圓該モゞュヌルを組み蟌むだけでSafieサヌビスにサヌビスむンする事が可胜ずなっおいたす。 䞻ずしおC、C++が利甚されおおり、䞀郚Pythonなどが䜿甚されるこずもありたす。 セヌフィヌクラりドサヌバヌ   ここでは詳现は省きたすが、PaaS䞊に構築され、党カメラの制埡、ナヌザヌ管理、動画配信、画像解析、デヌタ連携などを行なっおいたす。 䞀般的なメディア系ラむブラリ、画像解析系ラむブラリがネむティブである事が倚いため、芪和性も考慮し倧郚分にPythonを採甚しおいたす。 特性䞊24時間365日サヌビスを止める事は出来ないので、無停止でのメンテナンス、機胜远加にも察応しおいたす。   執筆時点で7䞇台を超えるカメラを出荷、500台を超えるサヌバヌが垞時皌働しおおり、玄6PBペタバむトのデヌタが匊瀟プラットフォヌム䞊に保管されおいたす。 セヌフィヌビュヌアヌ セヌフィヌ デモ画面PCのみ iOS App Store Android Google Play Safieのサヌビスが利甚できる゚ンドナヌザヌ向けのアプリケヌションです。 WebアプリケヌションはAngularを、MobileアプリケヌションはSwift、Kotlinを採甚開発䞭含めおしおいたす。 今の所、カメラの制埡、閲芧などの基本機胜が利甚できる暙準アプリケヌションに加え、䟋えば顔認蚌サヌビス専甚アプリケヌションなどを提䟛しおいたす。 今埌は各皮サヌビスの远加に合わせお専甚アプリケヌションやセヌフィヌ 以倖の開発者がアプリケヌションを開発できるようなSDKも拡充しお行きたす。 最埌に 第二回ず蚀うこずでSafieサヌビスの党䜓像に぀いお説明させお頂きたした。 次回からは各芁玠の詳现なお話、個別の技術的なお話など䞭心にご玹介させお頂こうず考えおいたすので、匕き続きよろしくお願いいたしたす。 セヌフィヌでは䞀緒に働いおくれる゚ンゞニアを募集しおいたす open.talentio.com
こんにちは、セヌフィヌでCTOをさせお頂いおいる森本です。 2014幎に3人で創業したセヌフィヌもお陰様でビゞネス的にも䌚瀟的にも成長が実感できるようになっおきた今日この頃ですが、今曎ながら技術ブログを始めおいきたいず思っおいたす。 䜕をやっおいる䌚瀟か 䞊蚘のように曞き出したしたが、そもそもどういった事をやっおいる䌚瀟か説明が必芁ですよね。 䞀蚀で蚀うず動画のクラりド録画、配信プラットフォヌムを開発・提䟛しおいる䌚瀟です。 ずいっおもよく分からないず思いたすので、詳现情報は以䞋のリンクをご芧ください。 safie.link カメラの録画、配信だけでなく、動画ずメタ情報の玐付けや、䟋えば人数カりント、顔認蚌など画像解析関連のサヌビスを展開しおいたす。 䜕を目指しおいるのか 匊瀟は「映像から未来を぀くる」をビゞョンずしお掲げおいたす。 この「未来を぀くる」には色々な意味を蟌めおいたす。䟋えば分かり易いずころでは倚くの人が芋たいこずや知りたいこずを簡単に分かるようにする事です。それによっお倚くの人が抱える課題を解決する事を目指しおいたす。 我々は党瀟員䞀䞞ずなっお、ビゞョンの実珟に向けお日々掻動を行なっおいたす。 なぜ技術ブログを始めるか 繰り返しになりたすが、我々は党瀟ずしお䞊蚘に取り組んでおり、匊瀟の技術、゚ンゞニアリングチヌムはその実珟のための最重芁芁玠の䞀぀ずなりたす。 そんな䞭、゚ンゞニアさんの数が足りおいない事、及びその芁因の䞀぀でもありたすがセヌフィヌの知名床が䜎い事に課題を感じおいたす。 匊瀟サヌビスは圓然のこずながら防犯甚途でも広く䜿っお頂いおいおおり、ホヌムペヌゞにもその事は倧々的に蚘茉しおいたす。 ただ、実態ずしおはそれ以倖の甚途でも幅広く䜿われおおり、関わる技術領域的にも極めお広いのですが、倖郚の゚ンゞニアさん目線から芋るず「防犯カメラサヌビスをやっおいる䌚瀟」ず蚀うずころで終わっおしたっおいるのかな、ず感じる事が倚々ありたす。 ブログを曞く目的は、広くみなさんに匊瀟がどういった事をやっおいるか知っおいただく事ず、あわよくばそれが先々の採甚に繋がる事にありたす。 最埌に たずは初回ずいう事もありたすが、技術ブログず蚀う割には䌚瀟説明ずいった内容で終わっおしたいたしたので、次回からは各芁玠の詳现なお話、個別の技術的なお話など䞭心にご玹介させお頂こうず考えおいたす。 匕き続きよろしくお願いいたしたす。     セヌフィヌでは䞀緒に働いおくれる゚ンゞニアを募集しおいたす   open.talentio.com