Slide 1

Slide 1 text

夢のクロスプラットフォーム開発 Ionic Meetup #17

Slide 2

Slide 2 text

https://capacitorjs.com/blog/mobile-apps-with-tailwind-css-nextjs-ionic-and-capacitor この記事読んだことある人はいますか?

Slide 3

Slide 3 text

<目的> この記事に夢を感じたので 実際になにか作って発表しよう!

Slide 4

Slide 4 text

<目的> この記事に夢を感じたので 実際になにか作って発表しよう! 途中まで作りました

Slide 5

Slide 5 text

自己紹介 ● 名前:榊原宏祐 ● ID:scrpgil ● 株式会社キネカ ● マッチングアプリ開発 ● Web AAビューワー開発 ● Ionicヘビーユーザー(仕事 & 趣味) ● 最近、ASCII.artドメイン取得

Slide 6

Slide 6 text

目次 ● クロスプラットフォームとは? ● 夢のクロスプラットフォーム ● 実践編

Slide 7

Slide 7 text

第1部 クロスプラットフォームとは?

Slide 8

Slide 8 text

一般的なモバイルアプリ開発 複数のプラットフォームに対して、別々に実装が必要。 当然、プログラマー、デザイナーの工数も2倍。 プログラマー 言語・FW プラットフォーム

Slide 9

Slide 9 text

クロスプラットフォーム開発 一つのFWから、複数のプラットフォームへ展開可能。 プログラマーも、デザイナーも1人で済む(ことが多い) プログラマー FW プラットフォーム

Slide 10

Slide 10 text

フレームワークの恩恵 フレームワークが各プラットフォームのUIの差分を吸収してくれる。 デザイナーはどちらか片方のデザインに集中できる。

Slide 11

Slide 11 text

アプリとWebの違い モバイルアプリ Web ● 高品質な体験を学習させやすい ● リテンションさせやすい ● シェア、拡散させやすい ● Google検索から流入できる ● インストール不要ですぐに使える アプリとWebは競合せず、どちらも良いところがある 両方のプラットフォームでサービスを提供できれば理想である。

Slide 12

Slide 12 text

Webへの対応 主要なクロスプラットフォームFWはWebにも対応。 ただ、Webを深堀りすると対応はもう少し話は複雑である。 プログラマー FW プラットフォーム

Slide 13

Slide 13 text

Web開発で考えること HTML~CSSなどのコンテンツをサーバーから配信す る必要がある。 SNSでのシェアや検索への登録のために、動的に書 き換えることも必要。 また、表示速度も重要。 HTML、JS、CSS、画像 etc... Webサーバ Webブラウザ

Slide 14

Slide 14 text

Web開発で考えること Webアプリケーションフレームワーク(WAF)を利用することが多い。 WAFが各コンテンツ(HTML、JS、CSS)を動的に書き換える。 HTML、JS、CSS、画像 etc... Webサーバ Webブラウザ

Slide 15

Slide 15 text

● 画像の最適化 ● ファイルシステムルーティング ● サーバーサイドレンダリング(SSR) ● 静的ファイル生成(SSG) ● APIルート 最近のWebアプリケーションFWがもってる機能 アプリには不要だが、Webでは欲しい機能も多くある。 Webで展開する時、できればこれらの機能を使いたい。

Slide 16

Slide 16 text

第2部 夢のクロスプラットフォーム

Slide 17

Slide 17 text

クロスプラットフォーム(Capacitor)を 使いながら、Webも最新のトレンドを 使って開発したい

Slide 18

Slide 18 text

最近、流行ってるフレームワーク ● Next.js: Webフレームワーク ● Tailwind: CSSフレームワーク ここにクロスプラットフォームを統合させる。 ● Ionic:クロスプラットフォーム向けUIフレームワーク ● Capacitor: クロスプラットフォーム

Slide 19

Slide 19 text

https://capacitorjs.com/blog/mobile-apps-with-tailwind-css-nextjs-ionic-and-capacitor Capacitorブログの記事 ● Ionic作者Max Lynchが書いたブログ記事。全て取り入れた構成を実践している。

Slide 20

Slide 20 text

各スタックの紹介 Capacitor:アプリ全体とネイティブレイヤー Next.js:Web/Reactアプリ Ionic:ツールバー、ナビゲーションなどのプラット フォームUI Tailwind:コンテンツのスタイル

Slide 21

Slide 21 text

構成図 Web API HTML、JS、CSS HTML、JS、CSS AppStore API クライアント クライアント アプリ サーバー バイナリ

Slide 22

Slide 22 text

IonicとTailwindの使い分け サービスのメインとなるページは、カスタムされた UIになることが多い。 IonicではなくTailwindが活躍する機会が多くなる

Slide 23

Slide 23 text

IonicとTailwindの使い分け 単純なリストページでは、 Tailwindを使用しない。 IonicのUIコンポーネントをそのまま使う。 いつIonicを使うか、いつTailwindを使うかは、 サービスの仕様により使い分ける。

Slide 24

Slide 24 text

注意点 このプロジェクトの1つの注意点: アプリとして動かすためには、クライアント側で実行できるように、 Next.jsのExportコマンドを使用する必要が あります。つまり、その時は SSRが行われません。 SSRと完全に静的なNext.jsアプリを連携させる方法は公式にはなく、無理にやる場合は、複雑な構成を必要 とする。 また、Next.jsルーティングとIonic Reactのルーティングが競合するため、使い分けが必要になります。 ※Next.jsルーティングは、Ionicが持つ非線形ナビゲーションと画面遷移の状態管理を持っていないため。 実践運用する場合は、事前に検証してから使いましょう https://github.com/mlynch/nextjs-tailwind-ionic-capacitor-starter

Slide 25

Slide 25 text

第3部 実践編

Slide 26

Slide 26 text

Kaozo ● テキストを簡単に共有できるサービス ○ リンク共有するページとしないページを使い分け れば、SSRしながらIonicも利用できる。 ● Figma:bit.ly/3vR6Fjf ● Demo:kaozo.aahub.org

Slide 27

Slide 27 text

試したかったこと ● Web版、アプリ版でランディング or オンボーディングページの出し分け ○ Capacitor.isNativeを使って、アプリ用のオンボーディングページを表示

Slide 28

Slide 28 text

ご清聴ありがとうございました