TECH PLAY

セヌフィヌ株匏䌚瀟

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

å…š249ä»¶

こんにちはセヌフィヌ株匏䌚瀟のサヌビス開発郚 モバむルチヌムの北本です。 䞻に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