バンクーバーのエンジニアへようこそ。バンクーバーのエンジニアは日本時間で毎週火曜日に更新している北米圏のテック業界やライフスタイルなどについてお届けする番組です。
実況をお届けするのは私たち2人。サンフランシスコのスタートアップでシニアテックリードエンジニアを務めるゆうやと、
エンジニアの海外進出をサポートする企業フロック代表のセナでお送りしております。 今回はゲストの方がいて、
アメリカのスタートアップでCTOをやられている今井さんという方なんですけども、何を聞きたいかというと、前回Virtual CEOのポッドキャストをもとに
ウェブの今までとこれからをちょっと話したじゃないですか。その流れでReact Nativeの今までとこれからをやりたいなと思いまして、実際に今井さんはReact Nativeで開発されているので、その辺の今までとこれからを聞ければいいなと思います。
そうですね。またやっぱり日本での活躍もそうでしょうが、サンフランシスコ海外でReact Nativeベースで開発されているというところも、やっぱりちょっと海外の話も聞いてみたいなと思いますし、
実際そのチャレンジされてその経緯の部分とかも聞いてみたいし、ちょっといろんなことを聞いてみたいと。 はい、もう何でも聞きたいですね。
何でも聞きたいですよね。 はい、それでは今井さんよろしくお願いします。 よろしくお願いします。
どうしましょう。俺今井さんと結構ね、前にクラブハウスで軽くだけお話はした程度だったかなと思うので、結構ほぼ初めましてに近いと思うんですけど、あれですよね、大下さんと今井さんは以前タッチか何かやり取りされてたことがあるっていうふうに聞いてますが。
そうですね。サンフランシスコベイエリアの日本人起業家コミュニティというのがありまして、連絡したことはあります。
なるほど、一緒に仕事とかしてたわけではないってことですよね。 そうですね、はい。
なるほど、じゃあ個人の繋がりということで、お互いもちょっといろいろ知らない部分もあるだろうし、今日ちょっと改めて聞けようと思うんですが、どうしようかな、僕一応自己紹介までしたほうがいいんですかね。
僕、あ、そうだ、今井さんと僕ツイッターで何か知らないけど繋がってて。 はい、多分クラブハウスの時ですかね。
あ、そうだ、クラブハウスの時、あの後多分僕がフォローさせてもらったのかな、多分。
はい、多分そうですね、はい。
だったかなと思うので、そうそう、やべえ俺あの時喋った人だってちょっと思いながら実は今日参加したので、直前まで忘れててすいません。
じゃあお二人はあれですか、どんなことやられてるかお互いは知ってる感じですかね。
俺一方的に今井さんのこと多分知ってるだけで、今井さん多分僕が何やってるかよくわからない感じですよね、多分。
いや、あのー、ご存知してますよ。 あ、ほんとですか。
あとあのポッドキャスターも貸していただいてるんで、はい、あのあれですよね、カナダでのエンジニアリングの、エンジニアのそのリクルーティングっていうんですか。
そうですね。 結構もう長いことやられてるんですよね、10年。
長いこと、そうですね、10年はいかないかな、7年くらいですか多分。
はい、ちょっとずっとやっていて、大島さんもまあうちも一応経由してっていうので今働いてね、アメリカの企業で働いてるっていうのもあるので、
ちょっと海外就職前のサポートをしているのがうちですと。
あれ、こんな宣伝を入れていいのかな、これ。
カナダだったらもうセナさんに行って感じですかね。
そうですね、誰か海外就職したいっていう人で、カナダ経由でもいいなっていう人がいたら教えてください。
だいたい何とかします。
もうSF海外の皆様からすればもうその人たちがいるから俺らの美術何になってるんでもう頭上がんないんですけど。
それでちょっと気になったんですけど、結構いるんですか、ベインエリアというかその辺の会社の人たちで、会社があってカナダで働いてるって方って結構いるんですか。
ここ2年か3年くらいでめっちゃ増えてきたっていうのはありますが、ここ最近ですねやっぱ、それこそ大島さんが使っているPOっていう使い方というか一応手法があって、
それはこっちのカナダ企業が大島さんのビザサポートをするくらいにアメリカの会社で働くみたいなね、そういうやり方があったりとか。
で、それ海外でというか経由だったらもう一人別の人がいたり、あとは前回のポッドキャストに出てもらったアサイさんっていう方なんかも、
ベイエリアに本社があってこっちにブランチがある会社で働いてるっていう人だったりするので、やっぱアメリカとの繋がりは相当大きい街っていうね、時差も一緒だしっていうのがあるので。
でも本当日本人で最近ようやくそういう進出できる人が増えたのは本当に2,3年の話ですね。
ああ、そうなんですね。それ以前、じゃあどうしてたんでしょうね。
いやもうアメリカはまだまだやっぱり厳しい街とか、そうですねアメリカとかシリコンバレーか、サンフランシスコはやっぱり厳しいっていう部分が一番表に立ってて、
挑戦できるレベルの人がまだいなかったっていう方がいいのかな。
あとはスタートアップね、バンクーバーめっちゃスタートアップは多いんですけど、アメリカの方の本社があるような大きい会社さんって結構ビザ周りやっぱ厳しいんで、
そうそう、なのでやっぱり日本人としてっていう部分でそういった会社に雇われるっていうのは結構最近になってようやく出てきたっていう感じですね。
ああ、そうなんですね。
みたいな感じなので、ここ1,2年でようやくアメリカ先生との繋がりが大きくなってきたので、大下さんも含めていろんな人の話をね、こうやって聞けるっていうのがすごくありがたいんですが、今日はちょっとよろしくお願いします。
よろしくお願いします。
メジャーリーガーと話せるんで今日は。
そうそう、今日はね、メジャーリーガーと、俺らからすればメジャーリーガーだから、サンフランシスコはメジャーリーガーだから。
メジャーリーガーの方ほんと、もっと山ほどいるんで、自分はまあなんとかなんとかやってるっていうところですね。
いやいや、それでもね、やっぱりもう、実績が物を言う世界ですからやっぱ。
いるだけでもう全然違いますね、やっぱり。
本当に、まあそんな感じでじゃあ早速ですが、いろいろお話お伺いしていきましょうか。
はい、そうですね、あとセナさんは今後もしかしたらアメリカとかでも同じような感じでやる可能性も僕はあると思うので、
まあそうですね。
今後もアメリカのエンジニアとかも結構関わりが出てくるのかなと思いました。
あ、でもそうだ、それで言うんだったらね、コロナ直前のタイミングで僕実はキヨさんとアポイントメント取らせていただいたことが1回あって、
多分キヨさんは俺のこと知らないと思うんだけど、うちのビジネスパートナーがキヨさんに連絡をして、
なんか結構大きい会社相手にやってそうな感じですね。
そうですね、いわゆるSIR的なところですね。
それがあれですよね、さっきちょっと大島さんとも話題に分かったんですけど、ご経歴上だとIBMご出身ということで。
そうですね、IBMですね。
その時がデータベース周りのエンジニアさんやられてたってことですか?
はい、そうです。
そうなんですね、社内インフラのエンジニアっていうことで。そこが何年くらいですか?3年?
そうですね、IBMは3年いましたね。
またそこからね、いきなり結構方向転換でアンドロイドエンジニアになって、なかなかないなって思いますけど。
そうですね、なんかJavaをちょっと書いてたっていうのと、あとはアンドロイドたまたまアプリも作ってたりとかして、当時。
それは個人ですか?
そうですね、個人でちょっと作ってたりして、たまたまメルカリにアンドロイドエンジニアが足りなかったっていうのがあって。
やっぱり個人で何かやることは大事なんですね、そういうSIやSEの方って、やっぱりプログラミング書いてないことが多いと思うんですけど、仕事とか。
個人で何かアプリ作られたりとかウェブ作られたりとかすると、やっぱ転職はしやすいですよね、やっぱり。
そうですね、だからアンドロイドできますっていう一応、なんていうんですか、証明というか、そういうものになるかなと思うので、だから良かったと思います。
バンクーバーのエンジニアでは皆様からのご相談やご質問をお待ちしております。
Podcastを聞いている方はPodcastページの概要欄のTwitterアカウントへハッシュタグ、シャープバンクーバーのエンジニアを加えてご連絡ください。
バンクーバーはカタカナのエンジニ、まではひらがな、一番最後のやだけ漢字っていうちょっと難しいハッシュタグになりますが、ぜひご連絡いただければなと思います。
または番組ウェブサイトの問い合わせフォームからもご質問を送信できますので、概要欄のURLからご連絡ください。
じゃあ今回の本題に入りましょう。リアクトネイティブについて話しましょう。
リアクトネイティブなんですけども、知らない人いるのかな?僕らのPodcastを聞いている方で。
どうすかね、いないと信じたいところではありますけどね。
いないですよね、おそらく。
間違いない。でもそうね、概要だけはちょっと話ししておきます、一応。
そうですね。今までアプリ開発って2つ種類があって、iOS開発とAndroid開発。
今まではiOSだとSwift、昔だとObjective-C、AndroidだとJava、もしくはKotlinっていうような言語が違うくて、それぞれの技術が必要だったんですけども、
リアクトネイティブっていうフレームワークを使うと、リアクトの技術を使ってAndroidとiOS両方にアプリを作ることができるフレームワークです。
大丈夫ですかね?合ってるかな?
大枠大丈夫じゃないですか。だから結構、一昔前だとやっぱりウェブアプリ作りますってスタートアップがいるとして、
ウェブで作るのか、さっき言ったネイティブで作るのか、それこそ、俺ハイブリッドって言い方がやっぱりしっくりはくるんだけど、ハイブリッドで作るのかみたいなね。
ハイブリッドってもしかして僕がGAWAネイティブと呼んでるやつですか?
そうそう、GAWAネイティブって言うのかな。岩井さん聞いたことあります?GAWAネイティブって。
聞いたことありますよ。
GAWAネイティブって、こっちずっといたからか知らないけど、あんまり聞き覚えがなくて。
そうそう、GAWAネイティブっていうのは、アプリをリリースするんですけど、中身はウェブブラウザーみたいな機能で動いてるっていうアプリですね。
だから、あのフレームワークというか、そっちで言うんだったらコルドバフォンギャップとか、そっち側の話だと思うんですけど。
はいはいはい。
岩井先生にね、ちょっと一個だけトリビアをご用意しておりまして。
はぁはぁ。
うちのオフィスがあるストリート名が、実はコルドバストリートと言いまして。
へぇー。
そう、何を隠そう、コルドバが生まれてるのはそのストリートなんですよ。
あ、そうなんですか、これストリート名なんですか、コルドバって。
そう、これね、コルドバってストリート名から取ったかわかんないけど、そのオフィスがあったのがコルドバストリートだったからっていうので、
そう、アパッチの方に起動されてね、フォンギャップに変わっちゃったけど、それまではずっとコルドバってなって。
だからその時、だからもうコルドバがすごいね、アオユニックフレームワークとかで採用されててすごい有名、まだまだブイブー言ってた時は、
こっちで結構ね、あのバンクーバー出身のフレームワークだわーっつってね、話題にはなったことはあるんですが、
いやー、短い命だったよね。
ふふふふ。
まだ死んでないけど。
まぁそうですね、あの、だから昔はそういうような、あのハイブリッドとかガーネイティブとか呼ばれるのが主流だったんですけども、
それの問題点はやっぱりパフォーマンスが悪くて、なんかモサモサしてたりとか、アニメーションがちょっと微妙だったりとかっていうのを変えたのがリアクトネイティブなんじゃないかなと僕は思ってます。
ゆやさんの説明でもうおおむね正しくて、
まぁけどあのちょっと付け加えると、多分iOSとAndroidを開発するのは結構一般的には多分クロスプラットフォームって言いますね。
クロスプラットフォーム開発で、ハイブリッドっていうときは、あのネイティブとリアクトネイティブを一緒に開発するときに、あのそういうかなと思います。
で、そうですね、まぁリアクトネイティブが何が特別かっていうと、実質的には中身はネイティブのコードが走っていて、
どういうことかというとですね、ネイティブコードのまず話をすると、ネイティブっていうのはメインスレッドっていうのがありますね。
UIスレッドがあって、さらに言うとまああのアシンクロラスなタスクをする別のもう1個スレッドがあるんですけど、
そういうスレッドがあってネイティブは動いているんですけど、リアクトネイティブはそれに加えてさらに2つのスレッドがあります。
1つがシャドウスレッドっていうものと、もう1つがJSスレッドと呼ばれるものです。
このJSスレッドって呼ばれている部分が、いわゆるリアクトのコードを書いて、JSですね、JavaScriptのコードが実行される部分です。
シャドウスレッドっていうのが実はもう1つあって、ここは何かというと、リアクトネイティブでいろんなスタイルとか書くじゃないですか、
そのスタイルを受け渡して計算する、レイアウトの計算する層があるんですね。
それがシャドウスレッドと呼ばれていて、これはFacebookのライブラリなんですけど、
ヨガレイアウトって呼ばれているものがありまして、それはC++で書かれているんですけど、何をしてくれるかというと、
レイアウト情報をJSONでポッて渡すと、それぞれのプラットフォームですね、
iOS、Androidに対応したレイアウトの情報っていうのを吐き出してくれると。
それをネイティブのUIスレッドに渡して、UIスレッドそれを描画しているというのが、リアクトネイティブのざっくりした構成となっていて、
リアクトネイティブっていうのは、実際にリアクトネイティブのプロジェクトを作って、それぞれのネイティブのコードを見てみると、
それぞれ全部シングルビューなんですよね。
Androidだったらアクティビティが1個だけあって、メインアクティビティっていうのがあって、
iOSだったらビューコントローラーが1個あって、その上でいろんな細かいネイティブのビューが動いて、描画しているというところですね。
なので、意外にこれ知られていないんですけど、リアクトネイティブってかなりクラッシュが少ないんですよ。
なぜかというとビューが1個しか扱っていないので、ネイティブ上でビューをいっぱい遷移したりすることによるクラッシュとかそういうのが発生しないから、
結構安定度が高いというのが実はありますというところですね。
そうですね。リアクトネイティブの情報を追いかけたりすると、クラッシュしないというのを歌い文句の一つにしているところがすごく多いし、
あと単純にバンクーバーとかみたいなスタートアップの多い国というか地域の場合だと、やっぱり最初の初期コストという意味ですよね。
ネイティブで開発するのと、どうしてもリアクトネイティブで開発するのとという分で採用しなくちゃいけないエンジニアと管理コストがどうしても違うというところで、
やっぱり議題には上がるかなと思うので、結構そういう意味でスタートアップ向けのイメージが最初は強かったんですが、
最近だとクラッシュしないという利点からなのか、結構大きい会社さんも採用するようになっていて、すごい飛躍的な進化だよなって思いつつなんですが。
そうですね。それで、リアクトネイティブはあれなんですよね。最初のリリースが2015年の3月なんですよね。
だからもう何年前だろう?6年前くらいかな。
えー、意外と経ってるっていう。
そうですね。まあ、かなり新しい技術な感じはしますけど。
僕も2016年、もう出たての頃で、まだAndroidのサポートをしてない頃だったんですけど、にアプリを作ってリリースしたことがあって、日本で。
そうなんですね。
ていうか、Androidをサポートしてなかった時期があるんですか?
ありますよ。最初は、リアクトネイティブのショーケースがあるんですけど、そこにプルリクエストを送って、そこに日本のアプリで唯一載ってたっていうのが唯一の誇りなんですけど。
えー、そうなんだ。知らなかった。
何のアプリですか?
当時、スマホのクレジットカード決済の会社にいて、それの申し込みが結構めんどくさくて、いろんなフォームが長かったんですよ。
それをアプリでポチポチタップするだけで申し込みが終わるような、申し込み専用のアプリをリリースしました。
マイクロサービスみたいな感じなんですけど、そこだけを切り取って出したって感じですね。
へー、すごい。
あれか、コイニ時代ですか?それ。
そうです。コイニ窓口っていう名前なんですけど、もうないと思いますけど。
素晴らしい。じゃあ、意外と大島さんも結構長いお付き合いということで。
そうですね。僕はその後、もうプロダクションレベルではやってないので、いろいろいまいさんにその辺お聞きしたいなと思っています。
で、今までの中で他に代表的なアプリだと、リアクションフィリティブを作ってるのはFacebookなんで、もちろんFacebookは使ってます。
で、Instagramも実は使ってます。まあ、Facebookなんで。実質Instagramは。
さらには、メルカリもそうなんですね。知らなかった。これ、USかな?
そうですね。メルカリのUSアプリは、これがいわゆるハイブリッドアプリということで、リアクトネイティブを部分的に採用しています。
ああ、そんなこともできるんですね。今は。
で、あとはSkypeとか、Discordとかも使ってるっていうので、もうめちゃくちゃメジャーですね。
Discordもなの?らしいですね。ショーケース見ると載ってました。
Discordは、IOSだけリアクトネイティブですね。
確かブログで前に書いてたんですけど、当時だからAndroidの方にはちょっとパフォーマンス的な問題とかがあって、Androidの方は採用しなかったって感じで、
けどまあいまだにDiscordは、IOSは多分リアクトネイティブで使われてるんじゃないかなと。
あとやっぱカナダだと、カナダのShopifyもリアクトネイティブめちゃくちゃ投資してるんで、彼らはすごいですね、リアクトネイティブ使いまくってますね。
俺これ地元のサービスのくせに知らなくて恥ずかしかったんですが、Shopifyそんな投資してるんですか?リアクトネイティブに対して。
してますね。コミュニティへの貢献ももちろんなんですけど、彼らが作ってる新規サービスを全部多分リアクトネイティブでやってますね。
でアニメーションとかをやっぱり彼らはかなり力入れてやっているという感じですね。
スカイプ、スカイプ使ってたんだっけってちょっと思ったんですけど、スカイプはあれですよね、マイクロソフトに買収されてますよね。
そうですね、だいぶ前に。
マイクロソフトがめちゃくちゃリアクトネイティブにも投資してるんですよね。意外な感じなんですけど。
彼らのアプリはかなりリアクトネイティブで書かれてて、CodePushっていうアプリストアを買いさずにアプリを更新するっていうツールがあるんですけど、
マイクロソフトがそれを持っていて、なのですごいリアクトネイティブに投資してるっていう感じですね。
そうね、その機能も結構面白いですよね。今までだと審査出して審査通って、Androidだったらすぐ出せると思いますけど、
iOSだとやっぱり審査問題っていうのが結構あって、この会社も審査通らないとかあったんですけど、そのCodePushでしたっけ、っていう機能でリアルタイムにある程度変更できるようになったんですよね。
そうですね。
それなんかバンとかされないんですか?やりすぎると。
一応制約とかあって、決済周りのところは確かCodePush使っちゃいけないみたいな規約とかはあったような気がしますね。
要はAppleに見えない形で勝手に決済するなよっていう話だと思うんですけど。
Fortniteの二の間になるなってことでしょ?
そういうことなんですかね。
決済システムを自分たちで勝手に作っちゃったから、ブチ切れてAppleが落としたってことだと思うんで。
仕組みは違いの多分そういうことですよね。
CodePushはものすごい便利ですね。
それでどういう時に使いますか?
CodePushは結構Chompの場合だとHotfixに使ってますね。
要はアプリをまず普通にApp Storeで出すじゃないですか。
出してバグが見つかりましたという時にHotfixを作るんですけど、それはCodePushで出すみたいな運用でやってますね。
App Storeに申請出して待ってリリースってやったら、それだけで2日とか場合によってはかかるじゃないですか。
それを速攻で直してすぐ出せば、次の起動時にはその問題はユーザー側では解決してるっていう。
Web的な感じですよね。Webもすぐに直して出すっていうスタイルですけど。
純ネイティブのちょっと痛いところですよね。その申請して時間かかるっていうのが。
大きい会社とかだと小さいバグでも起きると致命的になるかもしれないので、その機能があるからリアクトネイティブを使うっていうこともやってそうな気がしますね。
大手の会社が結構リアクトネイティブに本当に寄ってるなってこの代表的なアプリ見て思うようになったんですけど、やっぱそこら辺がすごく影響してそうな感じしますよね。
僕結構衝撃的だったのが、2018年かな、当時Airbnbが結構リアクトネイティブを使っていて、それを辞めるっていうポストみたいなのを見て、
それで今後他の人たちもリアクトネイティブを辞めるのかどうかみたいなことを考えたと思うんですけど、なんか事件というかね。
ありましたね、そういうのも。Airbnbはめちゃくちゃ、そもそもリアクト自体にすごいコントリビューションしているんですよね。
彼らのESLintとかのプラグインもAirbnbのやつが結構デファクトみたいになっているところとかもあって、
リアクトネイティブももちろん彼らやってたんですけど、結果的に採用を見送って辞めたっていうのがあって、
彼らのブログ、読んだら多分わかるんですけど、彼らもハイブリッドアプリケーションを作ろうとしていて、
全部ネイティブがあってリアクトネイティブの部分もあるってあるんですけど、やっぱりそこの開発の難しさっていうのが非常に大きかったっていうのが、
彼らの諦めた理由の一つというのと、あとはAndroidの問題ですね、パフォーマンスの問題があったっていうところがあって、
最終的に辞めたんだけど、一番大きな理由はAirbnbの採用力がすごく強くなって、ネイティブのエンジニアをたくさん雇えるようになったっていうところですよね。
もともとAirbnbはWebスタートしていて、Webエンジニアがめちゃくちゃ多かったんで、
リアクト使ってたから自然的にリアクトネイティブをやってみようやっていう感じだったんですけど、
結果的にどんどん普通にネイティブエンジニアが増えてきて、もうリアクトネイティブというかWebエンジニアがやる必要はないよねっていうところで、
組織の課題感としてネイティブエンジニアいないっていう問題がなくなったから、じゃあいいかっていうふうで辞めたっていうところですよね。
やっぱりネイティブの方がどうしても人員差がなくちゃいけないコストが大きいイメージがすごく強いんで、
それが容易に払えるようなあんだけの会社になったらもういいよねっていうことってことですよね。
そうですね。
悲しいな、お金で解決したみたいな感じ。
でもAndroidのパフォーマンスに課題があったっていうのが初耳というかね、さっきのAndroid最初サポートしてなかったって知らなかったけど、
そんなパフォーマンス周りでAndroidは課題もりもりな感じなんですか?今も。
今はかなり良くなっていますね。
やっぱり2017、2018年のAndroid対応し終わった後ぐらいの後ってリアクトネイティブが停滞してた時期だと自分は思っていて、
一周もすごい溜まってたんですよ。めちゃくちゃ一周溜まってたんですけど、全然誰も管理してなくて、
Facebookのチームの人もいるけど、ちょっと対応できてないっていう感じで、
結構開発は滞ってたんですけど、そこで結構Facebookが抵抗入れをし始めたのが2018年末ぐらいですね。
彼らがまず一周で、これすごい話題になったんですけど、リアクトネイティブの嫌いなところを教えてくれっていう、
What do you dislike about React Native?っていう一周をですね、リアクトネイティブに立てて、
これが結構バズっていろんな人がフィードバックを出したんですよね。
一周が全然解決されないとか、いろんなアンドロイドの問題だったりとか、
アプリのリフレッシュの問題とかいろいろあったんですけど、それらを全部フィードバックを受けて、
彼らがそれが2019年の2月ぐらいに、全部そういう一周をプライオリティをつくって、
順番に対応していくっていうことがあって、そこからものすごいリアクトネイティブは進化したっていうふうに思ってますね。
なるほどね。そのスレッドちょっと見てるけど、すごいな。
ボロクソにみんな言ってますね。
ボロクソに言ってますね。大丈夫か、これ。俺心折れないかなって。
ぐらいですね。この一周立てたシーポージャーっていう人は、クリストファー・ナカザワさんですよね。
クリストファー・ナカザワっていう名前なんですけど、確か奥さんが日本人で奥さんの名字を取ってるんですよね。
っていうトリビアがあるんですけど、彼はジェストを作ってる人ですね。
テスティングフレームワークのジェストを作って、最近フェイスブック辞めちゃったんですけど、
彼が入ったのはかなり大きいなと思っていて、フェイスブックのリアクトネイティブチームに。
すごいそこからコミュニティの雰囲気も変わってきて、すごくよく回り始めたなというふうに思ってますね。
なるほどですね。じゃあこの2018年の末っていうのが結構転換期だったということですね。
プロダクトの仕様としてすごい凝ったことをやりたいってなった時にネイティブの実装必要になってくるかなっていうところはたまに出てくるかなと思います。
今井さんが今までブリッジ書いた経験とかありますか?
めちゃくちゃブリッジ書いてますね。Chompが結構既存のライブラリでできないことをいろいろやっていたので。
例えばカメラとかですか?
そうですね。カメラは特殊なことをいろいろやっていたので自前で実装していましたね。
あとはカメラのスティッカーとかそういうのもあるんですけど、スティッカーの管理とかもキャッシュを作ったりとかするってなった時に、
リアクトネイティブもちろんキャッシュみたいのはないので、自分でネイティブでLRUキャッシュみたいのを実装しているみたいな感じですね。
これIOSとAndroid両方?
そうですね。
最近たまにリアクトネイティブの求人とかでネイティブも書ける人募集みたいなのがあるのってそういうことなのかな?
そうだと思いますね。結局リアクトネイティブも、例えばアプリをリリースするってなった時にアプリのアイコンを設定するとか、
あるいはアップストアに置くとか、結局そこでネイティブの知識が必要になるんですよね。
だから全く知らない状態でやるとなると結構大変なのかなという気はします。
今まではリアクトネイティブの今までとリアクトネイティブの進化みたいな話をしたんですけど、これからのリアクトネイティブってどうなってくるのかなと思っていて、
代表的な質問の一つとして、フラッターってあるじゃないですか。
フラッターも多分人気になっているのかなと思うんですけど、それはどうなのかなっていうのがまず気になっています。
フラッターをほぼ触ったことがないので何とも言えないんですけども、結局すごい大事なのは組織的な課題とかプロダクト的な課題として何を解決したいかというのが結構大事だなと思っていて、
組織として、例えばスタートアップのケースですけど、スタートアップだとやっぱりプロダクトをスピード感を持って開発していきたいと、
早くイテレーションを回して、だけどエンジニアリングリソースがすごい限られていると、
フロントエンドのウェブをかける人はいるけれども、モバイルをやる人はそもそも採用がまだ全然できていないよとか、
そういうような課題があったときにリアクトネイティブっていうのがいいソリューションになるのかなと思っていて、
リアクトネイティブ、JavaScriptで書かれているから採用に当たっても比較的しやすいかなと思っていて、
フラッターはダートですよね、ダートのエンジニアってどれぐらいいるのかちょっとわからないんですけども、
そういうのを検討したときに技術選定の一つの軸として捉えられるといいのかなと思っていますね。
まあそうですよね、採用コストっていう部分ですよね、結局は。
もともとスタートアップで例えばですけど、iOSエンジニアがすでにいるとかだったら、普通に素直にiOSを使った方がいいですよね。
だからそこのときにリアクトネイティブを選ぶにはならないけど、
もしかしたら早くイテレーションを回したいっていうのの中にアプリをコードプッシュみたいな形でどんどんアップデートしていきたいとなったら、
もちろんリアクトネイティブはいいのかもしれない。
そういうことですよね、引き続きっていう感じですよね、
今までもネイティブとリアクトネイティブの採用コストの違いってすごく取り上げられることが多かったと思うけど、
できればフラッターを比較対象に上げたとしても同じことが言えるってことですよね。
そうですね。
なるほど、ということはバンクーバーみたいなそういう小さい町地帯かもしれないけど、
スタートアップが多い地域からするんだったらリアクトネイティブの方がやっぱり注目度は今後も高いのかな。
そうですね、やっぱりリアクト自体が人気すごい高いじゃないですか。
そうなんですよね、求人数見ても運営の差だから。
リアクトネイティブってやっぱりリアクトを書いてたらすごい取っ付きやすいので、横転がしやすい技術だと思うんですよ。
今後もある程度リアクトの人気が続いている限りはリアクトネイティブも採用されていくんじゃないかなと思ってますね。
リアクトっていう部分にフォーカスを置くんだったらリアクトアングラビューみたいないろんなフレームワークの論争はあったと思うけど、
日本もほぼほぼリアクト一挙になりましたしね、北米国においては。日本だとちょっとわかんないけど。
日本だと多分ビューが強いですね。ビュー並べるっていうのがなぜかデパクトみたいになっているっぽいですね。
まあまあ別にいいんだけどもですね。
じゃあ他の今後のリアクトネイティブのパフォーマンス的な部分とか、機能自体の部分ってどうなるんですか。
そうですね、リアクトネイティブが今のフェーズというかこれからのロードマップ的なところで言うと、
今そのパフォーマンスのところをですね、もうネイティブと同等以上にしていこうという企みがありますね。
プロジェクト自体は2019年ぐらいから始まっているんですけど、
FiberというUIフレームワークというか、リアクトネイティブに使われるフレームワークみたいなのを実装を進めようとしていて、
これ何かというと、さっきそのシャドースレッドっていうのがありますって話をしましたよね。
JSONでデータを渡してっていう話をしたと思うんですけど、そこのデータを渡すところっていうのが非同期で処理されるんですよ。
その非同期で処理されるっていうことで若干のディレイが発生するんですね。
そこがレンダリングのパフォーマンスに影響をしているっていう話があって、
このFiberは何をしているかっていうと、JSI、JavaScript Interfaceと呼ばれているんですけど、
リアクトがブラウザ上でDOM経由でC++を直接呼ぶように、
リアクトネイティブも直接C++のコードをJSONを介さずに呼ぼうっていう企みなんですよね。
そこを同期的にデータを受け渡ししてビューをレンダリングするっていうことで、
そうするとめちゃくちゃ早いですよねっていう目的で、そういう仕組みを搭載しようとやってますね。
あとはJSエンジンを、それまではiOSだとJSコアだと思うんですけど、
サファリとかで使われているJavaScriptのエンジンを使っているんですけど、
それをHelmetsっていう名前のJSの独自のエンジンを搭載していて、
これはリアクトネイティブに最適化されたJSエンジンなんですよ。
それすごい早いんですね。
これをiOSもAndroidも両方とも使うことで、さらにパフォーマンスを向上させるっていうようなことをやっていて、
今まだリアクトネイティブバージョン0.64だったかな?だったんですけど、
この辺のやつが実装が終われば、いずれ1.0が出るんじゃないかなというふうに思ってますね。
ついに待望のですね。
待望の。
なるほどね。
じゃあ結構レンダリング前の課題点克服が一時のテープを切ることになるかもしれないってことですよね。
そうですね。
個人的にはリアクトネイティブで作られていれば割とパフォーマンスはいいなって思うんですけど、
これ以上パフォーマンスが良くなるのはすごいなと思いました。
そうですね。今でもそんなにほとんど問題ない気がするんですけど。
そうですよね。なんかあまり遜色ないとは思いますけど。
iOSとかだと。だけど貪欲なんですかね。
ここまで来るとね、なんかネイティブを採用する意味って果たして何になるんだろうっていうちょっと疑問がふと思いかべやするんですけど。
そうですね。グッドクエスチョンですけど。
ネイティブを採用する理由っていうのは、ネイティブのそれぞれに特化した機能とかっていうのがあって、
そういうのってどんどんアップデートされていくので、やっぱりそういうのを使って開発した方が生産性が高いとかそういう話はあるので。
デバイス独自の機能をもっと深く使おうとするんだったらネイティブをっていう話ですよね。
そうですね。
なるほどな。結局そこの差はまだあるのか。
難しいですね、そこは。
ハイブリッドが流行しだしたときって結局その辺のカメラ機能とかが使えるようになるよう、
ウェブ開発でもねっていうのは訴え文句の一つがあったと思うんですけど、
そのレベルじゃなくやっぱりネイティブの方がまだそういう独自機能っていう部分だったら使えるものが多いってことですよね。
特にカメラ周りなんかは本当にアンドロイドなんかはものすごい実はいろんなことがネイティブだとできるんですけど、
今出回ってるリアクトネイティブのライブラリーだと最低限の機能しかないんで、
例えばGoogleの提供しているカメラアプリがあるんですけど、
ああいうものはリアクトネイティブでは実装できないので、
これやっぱネイティブだからできるっていうところですね。
さっきチョンプさんの方でブリッジ書かなくちゃいけなかったっていうのね、
さっき言ってましたけどそういうカメラ周りの話でしたっけあれって。
そうですね、カメラ周りは。
なるほどね、そういうイメージなのか。
逆に言えばネイティブの機能をゴリゴリ使わないアプリ、
コミュニティアプリとかSNSとかだったら全然リアクトネイティブで十分だってことですよね。
十分ですね。
もう一個メリットがあるとすると、リアクトネイティブ for web っていうのがありまして、
これはリアクトネイティブのコードを使ってwebが書けるっていうやつなんですよ。
なのでリアクトネイティブで普通にコードを書いたらそのままwebをそのままリリースできるっていう。
それは便利ですね。
Twitterのプログレッシブのアプリがそれで作られてるんじゃなかったでしょうか。
そうです、Twitterの新しいUIはリアクトネイティブ for web で作られてますね。
なるほどね、格好の的というかね、あんなシンプルなUIの実装やったらそれは良いでしょうって話でもするかもしれない。
思想が面白くて、もともとリアクトネイティブってwebの技術を使ってアプリを出せるのに、
そのフレームワークを使ってまたwebを作るっていう謎のことを知る。
間違いない、リアクトってなんだっけみたいな。
だからそれぐらいリアクトネイティブってもしかして完成されているフレームワークなのかもしれないですね。
Facebookだとリアクト360っていうのがあって、ARの機能をリアクトネイティブで作るっていうやつですね。
Facebookが作っているわけじゃなかったかもしれないです。別のスタートアップだったかもしれないですけど。
Facebookで作っているんだとリアクトVRですね。VRの機能をリアクトでかけるっていうやつで、
リアクトを知っていたら結構いろんなプラットフォームでいろんなものが作れるっていう世界があるっていうところですね。
それはFacebookの野望だと思うんですよね。
面白いですよね。リアクトVR出た時、バンクーバー実はVR界は結構有名で、
そうなんですね。
市場がすごく大きくて、VR市場はここ5年くらいで何倍だったかな、5,6倍くらいに伸びているっていうのがニュースになってたんですけど。
リアクトVRも出た時、コミュニティー界隈ですごい話題になってて、リアクトどこ目指してるんだろうなって。
数年後にはARとかができるじゃないですか。ARのグラスとかもFacebook開発してますけど、
その時に彼らはプラットフォームを握りたいと思うんですよね。
今はAppleとGoogleに握られてるけど、悔しい思いしてるけど、ARの分野で彼らFacebookがプラットフォームを持てれば、
これはかなり無敵ですよね。
そこでいくらでもやりたい放題できるっていうのが、多分戦略なんだと思います。
デベロッパーサイドから見ても、リアクトベースで開発できるんやったら、参入コストとしても結構低いでしょうしね。
間違いないです。
なるほどね。いや面白い。リアクトの野望がちょっとかやま見えるお話と。
さらにもっと言うと、今後のモバイルの開発ってどうなってくるかなって気になっていて、
さっきちらっと言っていただいたんですけど、純粋な開発、SwiftとかKotlinとかを使った開発は、
どんどんリアクトネイティブに置き換えられていくんじゃないかなと思っているんですけど、
そういうことはないってことですよね、さっき話したと。
そうですね、やっぱり固有のものがどんどん出てきているので、
ただ結構面白い流れみたいなのができていて、
このやっぱりリアクトのステート管理っていうかデータフローですよね、
フラックスから始まってリラックスとかってできていると思うんですけど、
とかあとは宣言的なUIのコンポーネントの書き方とかっていうのがすごくいいっていうことで、
ネイティブ側にもどんどんどんどんそれが広まっていて、
それを使った機能みたいなのが開発機能ですね。
開発機能がiOSにもAndroidにも最近提供されるようになったっていう、
逆輸入というか。
へー、勝手に敵対しているのかなっていう。
そうですね、お互いのいいところを真似ていこうっていうのがあって。
素晴らしいことですよね、でも。
はい、だからそのネイティブ開発って言っても、
結構その今のリアクトの開発というか、
ウェブの開発に近いものになる可能性はあるかなと思いますね。
それあれですか、JSX的な感じでビューをかけるとかっていうのは。
そうですね、SwiftUIとか、
ジェットパックコンポーズっていうのがAndroidが最近出たんですけど、
ほんとついたぶん1ヶ月ぐらいですかね。
これはJSX的ではないんですけど、
宣言的にこのコンポーネントがこうなってこうなってみたいのをつらつら書けて、
リアクトとかを書いている人には見慣れた感じで書けるのかなという、
すごく似た文脈なんですよ。
ウェブからそういうネイティブにいいアイデアがいくっていうのは結構あると思いますよね。
リアクティブプログラミングの文脈もRXJSから始まって、
それがRXJava、RXSwiftとかに来たので、
そういうのは結構あるんですよね。
ネイティブの開発は結構変わってきている気がします。
そうですよね、さっき話したコードプッシュとかまさにウェブっぽいですし、
そんな感じですかね、基本的にリアクトのネイティブ自体に関しては。
さらにちょっと、
セナさんとかフロックで留学とか就職とかを専門にやっているので、
リアクトネイティブの求人の話とか、その辺を聞いてみたいんですけども。
これね、でもそうなんですよ。
フロックというか、僕らのところに話とか相談が来るのね。
大島さんなんかもそうかもしれないけど。
やっぱり結構ガリガリ日本でエンジニアやってましたとかいう人ももちろん多いし、
今からこの業界目指したいんですけどということも一定数はいるしっていう状況で。
よくね、結構、
日本でアンドロイドエンジニアずっとやってましたっていうね、
例えば人がうちの都をたたいて、
海外だとリアクトネイティブの求人めっちゃ多いっぽいですけど、
バンクーバーとか西海岸の方なんですけど、
リアクトネイティブの求人すごく多いから、僕もそっちの方ね、
なんかちょっと移るべきなのかなとか。
あとはリアクトネイティブで今までずっと書いてた人は、
今後求人の推移ってどうなっていくと思います?とかって結構質問が来るんですよ。
ただまあね、僕もちょっと別にそのプロフェッショナルってわけじゃないから、
今多いから今も今後も多いんじゃね?とか、