ネイン開発メンバーブログ

サヨナラ、スクリーン。ヒアラブルサービスを開発している株式会社ネインの、開発ブログです

React Native使いがFlutter入門してみた結果

Nainで開発のお手伝いをしている @takahi5 です。

さてNainではアプリ開発にFlutterを導入しています。
僕自身はReact Nativeを普段は使っていますが、同じくクロスプラットフォーム対応のFlutterは気になる技術でした。

先日Nainにて開催されたFlutterもくもく会をきっかけに、環境構築〜チュートリアルまでをやってみたので、その感想を書きたいと思います。
(2時間ほどチュートリアルを触っただけなので間違っていたらごめんなさい汗)

f:id:wasan:20190815083246p:plain

Hot Reloadが爆速

Hot Reloadとは、コードを編集したらその改修が即座にアプリ(シミュレーターなど)に反映される機能です。
通常のiOS/Android開発だと、、コードを変更して→コンパイルして→アプリで確認、、のような流れだと思うのですが、 コードを変更した瞬間にコンパイルとか無しで反映されるので、開発の効率がグンとアップします。

さてこのHot Reload的なもの、React Nativeでも存在するのですが、Flutterのほうが速い印象でした。

また、特筆すべきは「Hot Reload」と「Hot Restart」という概念があり、

Hot Reload:いまの画面で更新が反映される。更新が少ないとき。大体これでいける。
Hot Restart:アプリ再起動して更新が反映される。更新が多いとき。

という2種類があるらしく、React Nativeで体験していたのは「Hot Restart」のほうでした。 「Hot Reload」はアプリ再起動せずに更新されるので爆速です。
遷移の奥底のUIを調整するときなど便利そうです。

標準のUIライブラリが充実

標準のUIライブラリがマテリアルデザイン対応していて、完成度が高い印象です。
標準のコンポーネント(ウィジェットっていうのかな?)を組み合わせていくだけでも、それっぽいUIになります。
さすがGoogle

React Nativeの場合、標準のコンポーネントのままだとイケてないデザインになります。
とはいえNativeBaseやReact Native ElementsなどサードパーティのUIライブラリ群が充実してるので、それらを使えば同等のメリットは得られるかと思います。

なんとなくReact Nativeと通ずる概念がある

ReactはComponentを組み合わせてUIを作っていきますが、Flutterの場合Widgetというものを組み合わせていきます。
チュートリアルをこなした限りでは、ほぼ同じ概念なのかな、と感じました。

Widgetの状態はStateで表現し、Stateを持つWidgetをStateful Widget、Stateを持たないのをStateless Widgetと呼ぶなど、この辺もReactのStateless Componentなどを彷彿させる概念です。

Widgetは必ずbuild関数を持っています。
このbuild関数でUIの見た目を定義しているのですが、これはReactのrender関数に相当するものかと思います。

と言った感じで、Reactと対応付けながら把握していくと意外とスッと概念が入ってきそうな印象でした。

Dartを恐れることはない

Flutterを始めようと思ったときのネックの一つとして、FlutterがDartで書かれていることがあるのではないでしょうか。

おそらく大抵の人はDartを触った経験は少ないだろうし、また新しい言語を覚えるのか..と。

が、触ってみた感じでは意外とスッと入ってきそうな印象でした。

もくもく会の参加者の方も、Dartを特に勉強したわけではなく、Flutterアプリを作りながら覚えたとのことでした。
Java, C#, JavaScriptなどの言語を経験していれば、思ったより学習コストは高くなさそうです。

Flutterもくもく会

NainではFlutterに関する情報交換の場として、もくもく会を開催しています。
次回は9/11(水)に開催予定です。
普段Flutterを活用している方から、まずはチュートリアルから入門してみようという方で幅広く参加いただいています。
お気軽にお越しください♪

connpass.com

自己紹介😱

こんにちは。
株式会社ネインで主にAndroidアプリの開発を行っているKです。


ネインとの出会い


元々ガジェットが好きて新しいものを色々試すということがとても好きだった私はまだ将来に悩む大学生でした。
当時Bluetoothイヤフォンというのは今ほど普及しておらずまだまだ発展途上でやっと完全ワイヤレスがクラウドファンディングで数点出てきたぐらいだったかと思います。
そんな中、私はすでに数十本のBluetoothイヤフォンを試していたので当然普通の機能だけでは満足できず、面白い製品を探しながらKickstarterを始めとするクラウドファンディングサイトを見ていました。
そんな折、偶然MakuakeでAPlayという製品を見つけて出資したのが、ネインとの出会いでした。

Aplayはスマートフォンに届いたメッセージを声で読み上げ、更に声で返信できるという画期的なイヤフォンでした。
自分はPebbleを始めとするスマートウォッチをすでに身につけていて通知をすぐに確認するということの便利さを知っていましたし、スマートウォッチは画面を見るまで何が来たか分からない、時計を見ると「こいつ時間を気にしているな」と思われるなど不便な面も多く声で読み上げてくれるということに惹かれ、その後、ツイッターにてネインのメンバーと連絡を取るようになりました。
最近一部界隈で話題のツイッター就職をかなり早い段階で経験したということになります。

 

ネインで何をしてきたか


大学卒業後、ネインにプログラマーとしてジョインしました。
プログラマーと言っても大した技術があるわけでもなく、OJTを受けながら少しずつわかるようになってきました。

色々な製品を試した経験からAndroidアプリをより良くするために開発をしながら、ハードウェアもより良くするため、AplayやZeeny、ZeenyTWSを製造している工場に出向き、製造の調節などを行っていました。

前回山本がOpen BCIの脳波計測の装置の写真を投稿していましたが、組み立てたのは私です。
これが成形精度が悪いのか組み立てが難しくこちらをつければこちらが取れるという具合に大変な苦労をした記憶があります。
かぶったら最後、外すのにも一苦労でゆっくり外さないと組み立てた箇所が外れるという具合でした。

 

Zeeny製品について

 

最近、ZeenyのAndroidアプリとiOSのアプリ、イヤフォン自体のリーダーとカスタマーサポートを担当しており、日々奔走しております。


特にAndroidアプリは問題が多く、修正を行っております。
できるかぎり早くリリースしたい一方、不具合などが残っているとAndroidアプリのみならず、ZeenyTWSのファームウェアも含めて巻き込んでしまうため慎重にすすめています。
一方でMakuakeで出資していただいた方にまだ出来ていないことがあるのも把握しております。


Zeeny Androidアプリはファームウェアアップデートに対応した次のバージョンを社内でテストを続けております。

 

iPhoneの方は一足先にZeeny for iOSアプリの設定→デバイスからファームウェアのアップデートが出来ます。もし、新しいファームウェアにしても不具合等ありましたらアプリのフィードバックからお知らせいただきますと幸いです!

余談ですが、やはりメールでのやり取りですとユーザーとの距離が遠く感じることが多々あり、Discordなどでコミュニティを作ろうかと考えたりしております。


ちなみにPebbleは最強のスマートウォッチでした。あれを超えるスマートウォッチにはまだ出会えていません。
ぜひ知っている方が居たら教えて下さい!
次は中国深センの出張記を書く予定ですので良ければお楽しみに。

 

ではではまた〜

開発ブログ始めました

開発ブログ始めました

こんにちは、ネイン代表兼CEOの山本です。こちらで、ネインの開発にまつわる情報発信をしていきたいと思います。

ネインはまだ小規模な会社なので、CEOの山本も毎日コーディング作業をしていまして、技術的な部分についてもかなり突っ込んで見ている状況です。

ネインで開発しているもの

f:id:ken-nain:20190802125921j:plain

Zeeny TWS

ネインでは、Zeenyというヒアラブルデバイスと連携するアプリの開発、Zeeny Proという業務用ヒアラブルIoTサービス、Yvというイヤフォン向けアプリライセンスサービス、の3本の事業に対応する開発をしています。

開発要素としては、組み込みファームウェア開発、iOS/Androidアプリ開発クラウドサーバーの開発で、私はフルスタックですが、他メンバーは専門領域に根ざした開発をしています。

得意なのがイヤフォン周りに関する開発で、ネインはQualcomm社のExtension Partnerとして、BluetoothイヤフォンのSoCに絡む開発を得意としています。

開発してきたこと

元々ネインはスマートウォッチスタートアップで、約5年かけて、現在はヒアラブルスタートアップとして成長しています。したがってウェアラブルを活用したユーザーエクスペリエンスに関する試作は多く手掛けてきました。

2015年

2014年当時はSwiftが出始めた頃で、Swift、Watch OSの開発、Android Wearの開発をやり。その絡みでスマートウォッチスタートアップの開発のサポートをスタートしたため、BLEの通信周りのアプリのドライバー開発、Unityを使ったクロスプラットフォーム開発をやっていました。

f:id:ken-nain:20190802130326p:plain

Nain

並行してロボットとウェアラブルの関係についても模索しており、PepperをAndroid Wearを使って操作する、といったことで、スマートフォンを取り出ささないユーザーエクスペリエンス、という点について模索していました。

その中で、Nainというサービスを開発し、人がスマホを取り出さずにどう繋がるか、という点をテーマに、今自分が何をしているか、というのを自動共有するアプリを開発していました。その際には、Facebookに買収されたDBサービス、を使ったり、この頃から出始めたFabricを使い始めてアプリ開発をしていました。ここでは、ネイティブ開発で、Swift、Javaベースでの開発です。

f:id:ken-nain:20190802130229p:plain

Nain

人が何をしているか、というのを把握するためにActivitiMonitoringや、GeofenceなどのAPIを、スマホ、スマートウォッチ側を組み合わせて実装しており、サービスの見た目としては面白かったのですが、ちょっとストーカーアプリっぽくて気持ちが悪い、という点があったので徐々にフェードアウトしていきました。

2016年

1年間事業を進めた2015年末頃に、もっと家の環境と人間がシームレスでつながることができないか、と考えてビーコン活用を考え始めました。

いくつかサービス考え、冷蔵庫の側によったら冷蔵庫が語りかける様なものとか、玄関に入ったらそれを知らせてくれたりとか、フィジカルに曲をタッチすると音楽を再生紙てくれたりなど。BLEのRSSIのどういったレンジでどう反応させるかなど、色々学べたタイミングです。

その当時、ひょんなところから、こういったプッシュの情報って音で聞けた方がよくない?ということから始まったのが、APlayであり、Zeeny。ヒアラブルデバイスです。

気づくと、アップル、ソニー、サムソンなどスマートウォッチを手掛けている会社は軒並みヒアラブルも手掛け始めてきて、みんな同じ感覚でスマートウォッチを経過することで、音の大切さにきづいたタイミングなのかも、と考えていました。

急に考え始めたのが2月で、2月には深センにいて、工場と話始めていました。実はその当時企画していたのが、Bose Framesの様なグラス型デバイスで、そこまで作りきれるパートナーを探しきれなかったりとか、キャッシュフローも潤沢ではなかったので、最小限の価値あるプロダクト開発として、Bluetoothイヤフォンを選択しました。

当時驚いたのが、2000円前後のBluetoothイヤフォンの質が急激に高まってきたタイミングで、それもあってこれは活用できるな、と思って飛び込んだという背景があります。

この開発として、アプリの方はスマートウォッチ絡みのBLEの技術資産を活用でき、アプリとしてはスムーズに立ち上がっていきました。苦労したのは、ファームウェア開発で、試作機としてラズパイも使っていましたが、本格的な製品開発となるとQualcommのSoCの開発スキルが必要になってくるため、開発ボードを買い、開発経験を積んでいきました。

当時、ここまでイヤフォンにスマートな機能を載せようとしていたのは、ソニーBose等の大手や、Bragi、Doppler Labs等だったと思いますが、あまり注目されない中、根幹のソフトを作っていたのが2016年。

さらに当時からヒアラブルの先には何があるか、と考えていたので、当時9軸センサーの試作機を作って顔の動きを捉えて、音声ARナビをするデモの開発をしたり。

当時、キックスターターであったOpen BCIというプロジェクトに出資して、BCI機器を購入し、ヒアラブル、ウェアラブル機器から脳波を取得する開発を進めていました。

f:id:ken-nain:20190801180851j:plain

BCI

ちょうど、受託開発の一環として、TensorFlowを使って物体認識をして、人を区別するなどの開発も行っていたので、脳波と聴いている曲の関連性を学習し、脳波に基づいて選曲をする開発もやっていたので、お金もない中、相当クレイジーな開発をしていたなと。。

2017年

2017年に頑張っていたのは、ヒアラブルのiOS対応です。当時使っていたICはオーディオ向けだったのでBLEをサポートしておらず。BLEサポートするICはそこまで主流ではなかったので、深センの工場もサポートしておらず。

開発を進められる状況まで持ってこれたのが、やっと2017年、というところでした。

続きは、また次回に。