Slide 1

Slide 1 text

Copyright © nextbeat All Rights Reserved nextbeat Tech Bar ネイティブアプリもSvelteで作りたい Copyright © nextbeat All Rights Reserved 株式会社ネクストビート 川井淳矢 12.15 THU 19:00 

Slide 2

Slide 2 text

Copyright © nextbeat All Rights Reserved Copyright © nextbeat All Rights Reserved 2 今日のテーマ ネイティブアプリもSvelteで 作りたい

Slide 3

Slide 3 text

Copyright © nextbeat All Rights Reserved Copyright © nextbeat All Rights Reserved 3 川井淳矢 / Kawai Junya 株式会社ネクストビート(2018/9 ~ now) ● Technology Division Platform チーム 所属 ● Web / モバイルアプリ開発のテックリードを担当 ● 2022年4月からSvelte, SvelteKitを書き始めました 自己紹介 @_jk_nb プロフィール KIDSNA STYLE KIDSNAシッター

Slide 4

Slide 4 text

Copyright © nextbeat All Rights Reserved Copyright © nextbeat All Rights Reserved 4 伏線回収 ネクストビートの基幹事業 保育士バンク!

Slide 5

Slide 5 text

Copyright © nextbeat All Rights Reserved Copyright © nextbeat All Rights Reserved 5 伏線回収 よく見ると

Slide 6

Slide 6 text

Copyright © nextbeat All Rights Reserved Copyright © nextbeat All Rights Reserved 6 伏線回収 よく見ると

Slide 7

Slide 7 text

Copyright © nextbeat All Rights Reserved Copyright © nextbeat All Rights Reserved 7 伏線回収 よく見ると Svelteで書かれている

Slide 8

Slide 8 text

Copyright © nextbeat All Rights Reserved Copyright © nextbeat All Rights Reserved 8 伏線回収 よく見ると 正確には... Scala + PlayFrameworkから Svelte(SvelteKit)に移行中

Slide 9

Slide 9 text

Copyright © nextbeat All Rights Reserved Copyright © nextbeat All Rights Reserved 9 伏線回収 ネクストビートの技術スタック

Slide 10

Slide 10 text

Copyright © nextbeat All Rights Reserved Copyright © nextbeat All Rights Reserved 10 伏線回収 よく見ると 4月から技術移行開始。 10個のフェーズにわけて ようやく残り2フェーズ

Slide 11

Slide 11 text

Copyright © nextbeat All Rights Reserved Copyright © nextbeat All Rights Reserved 11 Svelteについて 技術移行を通して、Svelteを書いて感じたこと(個人的見解) ● キャッチアップが比較的容易 ○ ドキュメント、チュートリアルが豊富 ○ リアクティブな記述が簡単(少し癖はある) ○ 状態管理も公式が提供しており、わかりやすく使いやすい ● フロントのコードがかなり簡潔に書ける ○ マークアップとスクリプトの接続がわかりやすい ○ コードの記述量が少ない ● 今のところ大きなデメリットを感じていない ○ 少なくともAngularよりは書きやすいのではないか

Slide 12

Slide 12 text

Copyright © nextbeat All Rights Reserved Copyright © nextbeat All Rights Reserved 12 ネイティブアプリ ネイティブアプリもSvelteで作りたい

Slide 13

Slide 13 text

Copyright © nextbeat All Rights Reserved Copyright © nextbeat All Rights Reserved 13 ● Capacitor ○ Web標準の技術で書いたコードをネイティブアプリとして動かすランタイム ○ Plugin APIで便利なネイティブの機能を利用できる ○ プッシュ通知やカメラアクセスなど豊富なネイティブ機能を呼び出せる ● Ionic ○ ネイティブアプリ開発に適した UIを提供するフレームワーク ○ 画面遷移もネイティブアプリに近い形で実現できる ● Svelte ○ アプリケーション開発に利用 ○ ルーティングはIonicに任せるのでSvelteKitは使わない Capacitor + Ionic + Svelteでアプリを作ってみる 主に開発に用いる技術

Slide 14

Slide 14 text

Copyright © nextbeat All Rights Reserved Copyright © nextbeat All Rights Reserved 14 Capacitor + Ionic + Svelteでアプリを作ってみる Capacitorの動作検証

Slide 15

Slide 15 text

Copyright © nextbeat All Rights Reserved Copyright © nextbeat All Rights Reserved 15 Capacitor + Ionic + Svelteでアプリを作ってみる

Slide 16

Slide 16 text

Copyright © nextbeat All Rights Reserved Copyright © nextbeat All Rights Reserved 16 ● CapacitorのブラウザAPIをインストールして試してみる Capacitor + Ionic + Svelteでアプリを作ってみる Pluginの動作検証

Slide 17

Slide 17 text

Copyright © nextbeat All Rights Reserved Copyright © nextbeat All Rights Reserved 17 Capacitor + Ionic + Svelteでアプリを作ってみる Pluginの動作検証

Slide 18

Slide 18 text

Copyright © nextbeat All Rights Reserved Copyright © nextbeat All Rights Reserved 18 Capacitor + Ionic + Svelteでアプリを作ってみる

Slide 19

Slide 19 text

Copyright © nextbeat All Rights Reserved Copyright © nextbeat All Rights Reserved 19 ● SvelteKitも特に問題なく動くことを確認 ○ SvelteKitのプロジェクトにCapacitorをインストールすれば良い ○ 単にWebアプリケーションを移植するだけならこれでも十分 ● 今回はIonicのルーティングシステムを使いたい ○ URLベースだけではなく、タブやスタックベースの画面遷移 ○ ヘッダーやボトムタブ、ポップアップなど様々なナビゲーションに対応 ○ よりネイティブアプリっぽい動きが簡単に実現できる Capacitor + Ionic + Svelteでアプリを作ってみる 応用編

Slide 20

Slide 20 text

Copyright © nextbeat All Rights Reserved Copyright © nextbeat All Rights Reserved 20 ● Ionicのルーティングコンポーネントの例 ○ ion-router ○ ion-tabs ○ ion-nav ● 上記のコンポーネントに、コンポーネントを Custom Elementsとして渡す必要がある ○ を使う ■ コンパイルオプションに customElement: trueを指定 ■ 公式ドキュメントを見るといくつか制約がありそう ○ customElement.define()を使う ■ 今のところこっちが良さそう? Capacitor + Ionic + Svelteでアプリを作ってみる ポイント

Slide 21

Slide 21 text

Copyright © nextbeat All Rights Reserved Copyright © nextbeat All Rights Reserved 21 Capacitor + Ionic + Svelteでアプリを作ってみる

Slide 22

Slide 22 text

Copyright © nextbeat All Rights Reserved Copyright © nextbeat All Rights Reserved 22 ● 結論としては作れそう ● 課題感 ○ できれば、IonicのSvelteKitの公式サポートパッケージが欲しいが issueによるとリソースが足りないのでまだ対応予定はないとのこと ○ Ionicとの組み合わせ例が少ない(ほぼない)ので、ある程度調査・検証が必要 ■ https://github.com/Tommertom/svelte-ionic-app ■ このリポジトリが多分 1番有名 ● ただし、Ionicのルーティングシステムは使っていないので 一部の動きはネイティブっぽくない部分もある ● 今後も頑張って調査・技術移行を進めます。 引き続き、ブログやTechBarで共有できればと思います! まとめ ネイティブアプリもSvelteで作りたい