2019/09/04
バーコードをスマホ画面に手軽に表示できるPWA「disp barcode」をリリースしました
バーコードをスマホ画面にさくっと表示できるアプリがほしい(仕事で必要)
・パソコン用のバーコード作成ソフトはあるけど印刷が面倒
・Web用もあるけど、スマホ表示に特化されておらず、使いにくい
・スマホのネイティブアプリは意外にない(バーコードリーダーばかり)
...よし、作ろう!
ネイティブアプリ開発はしたことないし、審査も面倒だし、iOS向けは費用もかかる、、、
そうだ、PWAにしよう。
PWAなら、公開するのも使ってもらうのも敷居が低いので。
あとは、自分が使える技術で、なおかつイマドキのものということで、以下を選択。
GitHubにpushしたらNetlifyが自動で拾ってdeployしてくれるので超便利です。
現時点ではPWAとしてフロントエンドだけで動作しています。
Nuxt.jsのPWAで開発開始。
バーコード表示にはvue-barcodeというライブラリ2を活用。
v-inputとbarcodeをバインディングしてあげるだけでコアの部分は完成3。
あとは、localStorageを使って、アプリを終了させてもしばらくの間は4データを保存できるように工夫。
細部は後日更新または別記事で書こうと思います。
dispbarcodeを実装している間に実験した部分的なスタディは、先行してQiitaの記事にしていたものもあります。関連記事としてご紹介します。7
これらの記事を書きながら学んだ内容は、dispbarcodeの「保存したバーコードの一覧表示部分」に活かされています!
初めての個人開発でのリリースでしたが、どのタイミングで、どこまで作った時点でリリースするかは非常に迷いました。
「完璧を目指すよりも、まずは終わらせろ」というザッカーバーグの名言や、「Minimum Viable Product」の考え方から、今回は最低限必要な「バーコードを作成、表示、保存、削除できる」機能を実装したことで当初の要件は達成できたので、リリースする覚悟を決めました。
まだ改良したい点はいくつもあるので、少しずつバージョンアップしていこうと考えています。
GitHub Flowを参考にしてfeatureブランチを切って作業しつつも、自分しかいないのでプルリクは使っていません。featureブランチでローカルで動作確認→stagingに入れて実機確認→masterへマージして本番環境へ。 ↩
JsBarcodeをVue.jsで使いやすくするためのラッパー ↩
データの桁数が増えたときに全体のレイアウトが崩れる問題が発生し、それを回避するのに結構手間取りました。$refを使って子要素を取得し、そのwidthを見てリサイズするなどして対応。 ↩
localStorageの内容は削除されてしまう可能性があります。履歴を削除した時とか。これを回避するにはサーバサイドへの保存も必要になりますが、それにはユーザか端末の識別が必要になるので、現時点では手を付けていません。 ↩
ドメインの直下はアプリではなく説明用のサイトにしたかったので。nuxt.config.js で base を設定すればOK(/app/とか)、、、と思いきや、うまく動かず。とりあえず、Nuxtの中でpages/app/index.vue にアプリ本体を移動し、pages/index.vue をランディングページにしました。(もっと良い解決策がありそう) ↩
1.5系のv-layoutではなく、2.0系のv-rowを使わないとうまく表示できない場所がありました。 ↩
この記事にはコードが全く載っていませんが、紹介した記事にはちゃんとコードも入っています。 ↩