見出し画像

【完全保存版】thirdwebを使ってWeb3 PWAを作ってみよう!

0 はじめに

本日は、thirdwebのデモを使用して、「PWA」のデモを作ろうと思います。

PWAProgressive Web Appの略です。

これにより、Webアプリを自分のデバイスにインストールすることができ、プッシュ通知などを行えるようになります。

1 やってみよう

では、実際に作ってみましょう。

1 git clone を行う

では、まず、git cloneを行い、ディレクトリを移動しましょう。

git clone https://github.com/thirdweb-example/pwa-demo
cd pwa-demo/ 

今回、こちらのGithubを使っています。

2 依存関係をインストールする

次に、「yarn install」依存関係をインストールします。

yarn install

3 開発者モードで有効にする

次に、今回は「next.config.js」のこちらの部分をコメントアウトします。

開発者モードでも実行できるようにするためです。

4 クライアントIDを設定する

次に、「.env.example」をコピーして、「.env」ファイルを作成します。

そして、クライアントIDを貼り付けます。

「クライアントID」がご不明の場合は、こちらの記事から作ってみてください。

今回は「アクセス制御の設定」(Set Access Restrictions)「localhost:3000」を使えるようにするのが重要です。

5 立ち上げてみる

できましたら、「yarn dev」で立ち上げます。

yarn dev

このように立ち上がりました。

6 インストールを行う

では、こちらのボタンを押します。

アプリをインストールしてみましょう。

このように、アプリがインストールされました。

こちらをデスクトップに持っていくと、このように表示されました。

7 表示の形式について

立ち上げると、このようにアプリっぽくなりました。

後で出てきますが、「standalone」という表示をさせています。

8 Googleログインについて

「Login」を押して、Googleログインを行います。

ちなみに、この辺りはすでにPWAの話ではありませんので、参考です。

任意のアカウントを選択します。

このようにログインが行われています。

少し時間がかかる旨が表示されています。

しばらくすると、このように表示がされました。

9 NFTの取得について

「Claim」から「Claim NFT」を押してみます。

しばらくすると、このようにNFTがクレーム(請求)できました。

10 NFTの確認について

「NFTs」を見てみると、このようにNFTが入っていることが確認できます。

2 設定ファイルの確認

では、ここからはコードを見てみましょう。

「next.config.js」を確認します。

1 JSDocコメントについて

/** ~ */ で囲まれているので、JSDocコメントであることが確認できました。

追加情報を提供しているようです。

2 checkJsについて

とはいえ、「tsconfig.json」を見てみると、「"checkJs": true」が存在していないので、特に型チェックは行っていなさそうです。

3 @typeアノテーションについて

そのため、強制はしていなさそうですが、@typeアノテーションを使って、「NextConfig」型と一致することを示唆しています。

4 next-pwaパッケージについて

次に、「next-pwa」パッケージを使用して、Next.jsアプリをPWAに変換するための設定を行なっています。

5 destについて

まずは、「dest」ファイルの出力先を「public」 フォルダに指定します。

6 registerについて

次に、「register」「true」にして、Service Workerの登録を決定しています。

7 Service Workerについて

なお、「Service Worker」とは、ブラウザがバックグラウンドで実行するスクリプトです。

これにより、バックグラウンドでの実行プッシュ通知ができるようになります。

https://ugo.tokyo/about-service-worker/

ちなみに、出力先を「public」フォルダにしたので、このように、「Service Worker」のファイルがこちらにできています。

8 skipWaitingについて

次の「skipWaiting」では、新しい「Server Worker」がインストールされたときに、すぐにアクティブにするかを決定します。

9 disableについて

そして、「disable」の設定で、開発モードの時に、PWAを無効にしています。

今回は開発環境で行いたいので、コメントアウトしました。

10 エクスポートについて

そして、「module.exports」でエクスポートを行なっています。

11 basePathについて

ベースパスは特定のサブパスをアプリケーションのベースURLとして設定するためのオプションです。

ここでは、特に設定されていません。

12 reactStrictModeについて

「reactStrictMode」「true」に設定しています。

これにより、予期しないサイドエフェクトなどの潜在的な問題警告やエラーとして検出できるようにしています。

13 imageのunoptimizedについて

最後に、「image」「unoptimized」「true」にしているので、画像の最適化機能を無効にしています。

3 マニフェストファイルの設定内容について

では、マニフェストファイルを確認してみましょう。

WebアプリPWAとしてどのように振る舞うかをブラウザに指示するためのものです。

1 色の設定

まずこの辺りでは、色を設定しています。

2 表示形式の設定

次に、「display」で表示を指定しています。

「standalone」を選択しているので、ブラウザのUIなどは表示されず、ネイティブアプリのように表示されます。

3 範囲の設定

次に、「scope」「Service Worker」が制御・キャッシュできるURLの範囲を定義しています。

ここでは、「"/"」としているので、すべてのページを制御・キャッシュできるようになっています。

4 スタートURLの設定

次に、「start_url」でアイコンから起動した時に、最初に表示されるURLを指定しています。

5 名前の設定

こちらで、フルネーム省略名を指定します。

6 アイコンの設定

そして、サイズごとにアイコンを指定しています。

4 マニフェストの設定について

最後に、「Head」セクションで設定したマニフェストを設定しています。

これでマニフェストファイルを設定することができました。

今回は以上です。

サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊