アプリ

アプリ

LINEアプリサンプル

美容院や整体院などの予約システムを想定したLINEアプリサンプルです。予約すると、LINEよりメッセージが届きます。予約直後に予約が確定したことを伝えるメッセージが送信され、予約が近づいたところでリマインドのメッセージが送信されます。新たな会員登録をせずにメッセージが送れるのはLINEアプリならではの機能です。なお、このサンプルアプリは開発用で、LINEのシステム上、開発者以外はこのまま体験いただくことができません。しかし、このシステムはwebアプリにて構築されていますので、LINEの機能は使えないものの、操作感などは以下のリンクにてご確認いただけます。eQOL予約(webアプリ版)
アプリ

LINEアプリの開発手順(2)-リマインドメッセージ

LINEアプリのメッセージは、ユーザーアクションをきっかけに送信されます。例えば予約完了のお知らせは、ユーザーの予約申し込みアクションに基づいて送信されます。では、予約一日前とか2時間前とかにリマインドメッセージを送信する場合にはどうするのか、解説したいと思います。メッセージの送信は基本的にはユーザーアクションをきっかけにする必要があります。最初のメッセージ送信は「ユーザーによる予約」アクションに対して実行されることになりますが、そのメッセージ送信に対する戻り値として、後続メッセージ送信のための「サービス通知トークン」が得られるので、それを後続メッセージを送信で使うことになります。後続メッセージを送信する際に「チャンネルアクセストークン」(LINEアプリにログインしていなくてもサーバーのみで発行可能)を発行し、このアクセストークンをヘッダーに、サービス通知トークンをボディとして記述することでメッセージ送信が可能になります。一方、「予約一日前」とか「2時間前に送信」にメッセージを送信するアクションの起点は、例えばAWS Lambdaなどを使って(予約データ確認とメッセージ送信を行う)AP...
アプリ

LINEアプリの開発手順(1)-メッセージ送信

LINEプラットフォームを利用したヘアサロン予約ミニアプリを制作する機会がありましたので、手順をまとめておきます。審査については別途記事にまとめたいと思います。LINEミニアプリは、(1)LINE APIと(2)(LINEの外にホスティングされた)webアプリ、の2つの構成要素で成り立っています。ここでは(2)のヘアサロン予約のwebアプリはほぼ構築ずみとし、予約確定時にLINEメッセージ送信する機能を追加する状況を想定しています。LINEミニアプリ チャンネル登録LINE Developersに登録、ログインプロバイダー登録(サービスを提供する主体)アプリ名登録(ミニアプリとして登録)以上を行うと、アプリのチャンネルが生成されます。APIの利用にはLIFF-IDが必要になります。分かりづらいですが、LIFFのタブにあるLIFF URLに記載があるので、これを環境変数に設定しておきます。ちなみにLIFFとはLINE Front-end Frameworkの略称です。LIFF URL: {この部分がLIFF-ID}エンドポイントURLには、作成ずみwebアプリのURLを入力します。これで...
アプリ

Supabase + Next.jsアプリ開発(3)-認証機能

Supabaseで認証機能を実装してみます。Supabase + Next.jsアプリ開発(1)で紹介した以下のスクリプトでアプリを作ると、デフォルトでauth関係のフォルダとファイルが生成されますので今回はその内容を理解することに注力します。npx create-next-app -e with-supabaseこれでlocalhost:3000にアクセスすると、トップ画面の下方に以下が表示されます。この指示通り、Supabaseのプロジェクトを作り(作成済みのはず)、環境変数を.env.localにコピペしてリスタートすると、トップページが以下のように変わります。最初のユーザー登録をしろ、ということですのでやっていきます。supabaseのプロジェクトサイトに行って、SQL Editorで以下を実行しておきます。これでユーザー登録用のテーブルが準備されます。 select * from auth.users;localhost:3000/loginにアクセスすると、emailとpasswordでのユーザー登録が求められますので入力してSignUpします。すると登録したメールアドレス...
アプリ

Supabase + Next.jsアプリ開発(2)-ベクトルDB

各社の自社機密情報を参照するQ&Aチャットボットのようなアプリを想定します。ChatGPTのAPIを使用するとして、ChatGPTの学習データにはない各社機密情報についての回答をさせるには、RAG(Retrieval-Augmented Generation)という技術が使われます。詳細は割愛しますが、この技術を使うには「機密情報」を「ベクトル化(Embedding)」しておいて、ユーザーの要請に関連する情報をベクトル検索してChatGPTに提示してあげることが必要で、このアプリで使用するDBは「ベクトル」を扱えることが必須要件となります。幸いなことに、PostgreSQLにはpgvectorという拡張機能があり、Supabaseでも利用できるようになっています。このTopicではその辺りの設定について公式サイトを元に解説していきます。前回Topicで作成したSupabaseダッシュボードにて左メニューで「Database」を選択左メニューで「Extensions」を選択「Available extensions」から「vector」を探し、有効化以上の準備だけで「pgvector」が...
アプリ

Supabase + Next.jsアプリ開発(1)

アプリ開発においては、Googleが提供するFirebaseというBaaS(Backend as a Service)が有名ですが、最近Firebase代替を謳うSupabaseというオープンソースの名前をよく聞くようになっていました。Firebaseとの最も大きな違いは、オープンソースであることと、リレーショナルデータベース(RDBMS、SQL)であるPostgreSQLがベースであることが挙げられます(FirebaseのデータベースであるCloud FirestoreはNo SQLです)。一般にNo SQLの方が高速でスケール性が良いと言われますが、複雑なデータ構造には対応できなかったり、データの一貫性を保証しない、などのデメリットもあり、今でもデータベースと言えばRDBMSだろう、という風潮を感じます。というわけで、この際少し本気で勉強してみたいと思います。Supabaseに登録して、まずProjectを作ります。test_projectとしておきます。SQL Editorのページを選択すると右のような画面になりますので、SQLクエリでテーブルを作っていきます。テーブル名をmy_...
アプリ

Translate Text in Firestore

こんにちは、eQOL(イーキュオル)の山下です。本日は行政等の窓口で使える通訳アプリの開発の際にとても便利だったFirebaseの機能拡張について紹介します。通訳アプリはスマホOSに標準装備されている時代ですが、それでも行政や病院などの窓口で使いやすい専用アプリの需要があります。今回は多国語対応の通訳システムをGoogleのクラウドサービスであるFirebaseを利用してGoogle Translation APIを簡便に利用する方法を紹介します。FirebaseとFirestoreFirebaseはGoogleが提供する開発者向けのプラットフォームで、アプリの開発、改善、運営をサポートする統合ツール群です。Firebaseには多岐にわたる機能がありますが、その中でFirestoreはNoSQLクラウドデータベースのサービスです。スマホネイティブアプリやwebアプリを作成する際のバックエンド機能を実装する際には極めて便利なツールと言えます。FirestoreGoogle Translation API翻訳系のAPIといえば、まず思い浮かぶのはこれではないでしょうか。Googleの翻訳サ...
アプリ

歌詞から曲名を当てるクイズアプリ(ミスチル版)

こんにちは、eQOL(イーキュオル)の山下です。私事で恐縮ですが、家族でMr.Childrenのファンです。youTubeのイントロクイズに飽き足らず、末っ子の次女が中間イントロ(中間でもイントロというのか?)クイズアプリを作ってくれました。ファン歴が最も長い私ですが、子供達に完敗。「歌詞から曲名を当てるゲームだったら勝てる」と宣言し、このアプリを作りました。宣言通り、このゲームで私は家長としての威厳を取り戻しましたが、それ以上にゲームとしても結構面白い。もし貴方が(真の?)ミスチルファンでしたら楽しめること間違いなしです。無料で使えるwebアプリとして公開していますので、ぜひ一度試してみてください。Lyricアプリの制作過程と構成を簡単に紹介します。歌詞データの取得歌ネットというサイトで様々なアーティスト楽曲の歌詞を調べることができます。Pythonのスクレイピング機能を使ってミスチル全曲の歌詞を取得します。2023/11/5現在で258曲が登録されていました。Google Colaboratoryを使用しています。import requestsfrom bs4 import Bea...