PWAの基礎知識(その8)「Push API/Chrome編」
PWAを構成する技術要素の一つにプッシュ通知があります。Push APIがそうで、該当URLを開いていなくても通知を受けられる仕組みです。 Push APIには幾つかの実装方法がありますが、今回はFCM/GCMを使ったGoogle Chrome向けの実装を紹介します。 Firebaseでプロジェクトを作成する FCMを使うので、まず最初にFirebaseでプロジェクトを作成します。...
View ArticlePWAの基礎知識(その9)「Push API/VAPID編」
Webブラウザにプッシュ通知を送れるPush APIは魅力的な機能ですが、各ブラウザによって実装が異なっていたり、Firebaseでプロジェクトを登録したりするのが手間でした。それを共通化し、さらにプロジェクト登録不要で使えるようにする仕組みがVAPIDになります。 今回はこのVAPIDを使ったPush APIの使い方です。 必要なもの...
View ArticlePWAの基礎知識(その10)「Service Workerとのメッセージ送受信」
PWAは幾つかの技術要素で構成されますが、その基本とも言えるのがService Workerです。Service Workerがなければオフライン対応もアプリとしてのインストール、プッシュ通知もできません。なお、Service WorkerはWebブラウザとは別なプロセスのJavaScriptとして実行されます。 今回はそんなService...
View Articlevideo/audioタグの映像を記録するRecording a media elementの紹介
現在のHTML5ではvideoやaudioタグを使って動画、音楽などを再生できるようになっています。しかし、これらのデータはストリーミングで流したり、getUserMediaを使って取得することしかできませんでした。 そこで登場したのが Recording a media elementです。これは...
View Articlefor in/ofの使い分け
新しく追加された構文のfor/ofですが、for/inとの違いが分かりづらく、間違えてしまう人は多いのではないでしょうか。そこで実行結果を含めて使い分ける場面を紹介します。 ハッシュの場合 ハッシュの場合、ofは使えません。そのため、inだけです。 このようにデータを取り出せます。返ってくるのはキー部分になります。 どうしても of を使いたい場合は Object.keys を使う方法があります。...
View ArticlePWAの manifest.json で実現できること
PWA(Progressive Web App)では manifest.json というファイルが肝になります。このファイルの有無と Service Worker 、そして manifest.json の記述内容によってアプリとしてインストールできるようになります。 今回は manifest.json の中でも、ぜひ知っておきたい設定を紹介します。 テーマカラーが指定できる...
View ArticleLighthouseでのPWAにおけるチェック項目について
サイトがPWAに正しく対応しているかどうか計測する際にはGoogle Chrome拡張のLighthouseを使うのが基本です。今回はProgressive Web App Checklistで提示されているPWAのチェックリストに沿って、どういった項目がチェックされているのかを紹介します。 HTTPSになっているか...
View ArticlePWAにおけるキャッシュの更新方法
PWAで一番厄介な問題と言えばキャッシュではないでしょうか。開発中などで、キャッシュを更新したい時にできなかったり、キャッシュを読み込んでしまって修正が反映されずにバグ解決に時間を取られるかも知れません。 そこでちょっとしたTipsを紹介します。 Service Worker登録時の工夫 それは registration.onupdatefound...
View ArticleAngular/React/VueでのPWAの始め方
今回は有名どころのWebフロントエンドフレームワークにおけるPWAの導入方法です。結論から言えば、新規アプリであれば導入は難しくなさそうです。 Angular Angular CLIを使うのが基本です。まずAngular CLIをインストールします。 ついでAngularアプリを作成します。 そして作成したAngularアプリの中で、 @angular/pwa を追加します。...
View ArticleWebブラウザ上でディープラーニングを体験できるライブラリまとめ
ディープラーニングというと計算量が多く、GPUを使って動作するイメージがあります。WebブラウザにはWebGPLがあり、そこではGPUが使えます。それもあって、Webブラウザ上で使えるディープラーニングライブラリが増えてきました。今回はそれらをまとめて紹介します。 TensorFlow.js...
View ArticleWeb Componentsを使いやすくするためのライブラリまとめ
まだ今ひとつ流行りきらないですが、Web Componentsは今後のWebにおいて広まっていく技術の一つです。コンポーネント化することで再利用性を高めるのはもちろん、各コンポーネントの独立性が高くなることでデザインの影響範囲を限定したり、公開されているWeb Componentsを利用しやすくなります。 今回はWeb Componentsを使いやすくするためのライブラリを紹介します。...
View ArticlePitalium ExplorerをDockerで動かす
先日Pitaliumがmavenに登録されたことで使い始める敷居がぐっと下がりました。そこで前回はPitaliumがMaven対応したのでDockerと組み合わせて使ってみる | hifive開発者ブログとして、PitaliumをDockerベースで試す方法を紹介しました。 Pitaliumの動作自体はDockerで完結しますが、その結果ファイルを確認するPitalium...
View Article複雑なService Workerを作る際にはimportScriptsを使おう
Service WorkerはWebブラウザ側で実行されるJavaScript(メインスレッド)とは別で実行されます。バックグラウンド処理に使うこともできますし、メインスレッドで行うと画面が固まってしまうような重たい処理を実行させることもできます。 そんなService...
View ArticlePWAでWeb APIを使う際の注意点
Webアプリにおいて、Web APIを使わないことはほぼ皆無でしょう。PWAにおいてももちろん同じようにWeb APIを使って実装されるでしょう。しかし、幾つかのハマりどころがあるので注意が必要です。 キャッシュ時にはヘッダー情報などが使われない キャッシュは以下のようなフォーマットで実装されます。 単純にURLをキーとして、そのレスポンスを登録するだけなので、Web...
View ArticleGoではじめるWebAssebmly その1「Hello World」
WebAssebmlyはWebブラウザ上でバイナリファイル(テキスト形式もあり)を実行できる環境です。JavaScriptと異なりコードの漏洩がなく、実行速度も高速というのがメリットです。 WebAssebmlyは元々Rustで開発することが多かったですが、最近では様々なプログラミング言語が対応しています。その一つがGoです。Go...
View ArticleGoではじめるWebAssebmly その2「JavaScriptイベントハンドリング」
WebAssebmlyはWebブラウザ上でバイナリファイル(テキスト形式もあり)を実行できる環境です。JavaScriptと異なりコードの漏洩がなく、実行速度も高速というのがメリットです。 WebAssebmlyは元々Rustで開発することが多かったですが、最近では様々なプログラミング言語が対応しています。その一つがGoです。Go...
View ArticlejQueryの代わりにdocument.querySelectorを使う
jQueryはIDやクラスを指定してDOMエレメントが取得できるので便利に使っている人は多いかと思います。しかし、DOMの取得だけであれば素のJavaScriptでも簡単にできます。それがdocument.querySelectorです。 他にもIDを指定する document.getElementById 、クラスを指定する document.getElementsByClassName...
View Articlehifive と Onsen UIを組み合わせてスマートフォン/タブレット向けのUIを簡単に実現する(タブ &ナビゲーション)
Onsen UIというモバイルアプリ向けのUIフレームワークがあります。HTML5とJavaScript、CSSを使ってスマートフォンアプリを作るハイブリッドアプリ用のUIフレームワークになります。UIをネイティブアプリ風にしてくれるのはもちろん、画面のスワイプであったり、リスト表示などをネイティブアプリ風の操作にしてくれます。 そんなOnsen...
View ArticleGoではじめるWebAssebmly その3「GET系ネットワーク処理」
WebAssebmlyはWebブラウザ上でバイナリファイル(テキスト形式もあり)を実行できる環境です。JavaScriptと異なりコードの漏洩がなく、実行速度も高速というのがメリットです。 WebAssebmlyは元々Rustで開発することが多かったですが、最近では様々なプログラミング言語が対応しています。その一つがGoです。Go...
View ArticleGoではじめるWebAssebmly その4「POST系ネットワーク処理」
WebAssebmlyはWebブラウザ上でバイナリファイル(テキスト形式もあり)を実行できる環境です。JavaScriptと異なりコードの漏洩がなく、実行速度も高速というのがメリットです。 WebAssebmlyは元々Rustで開発することが多かったですが、最近では様々なプログラミング言語が対応しています。その一つがGoです。Go...
View Article