アプリ起業:認証のプロトタイプをつくろう!

アプリ起業:認証のプロトタイプをつくろう!

アプリ起業、ノーコード自動化に役立つ、プロトタイプ制作についてシェアします。

認証プロトタイプとは

なんちゃってAPI認証。

ヒトコトで表現すると、そんなアプリを半日でつくりました。ここでいう「認証プロトタイプ」とは、他のアプリにログイン機能を提供する試作品を指します。

ごくごくシンプルにすると、以下の図のようになります。

外部認証機能を提供するプロトタイプ

モバイルアプリから、ユーザ登録、ログイン、ユーザ情報の取得、データの取得などを可能にします。

認証プロトタイプをつくった理由

つくった理由は、みんなのアプリ起業をサポートしたいという気持ちです。そして、Integromat 2.0で提供される、APIへの準備です。

(API解禁されたら、アプリ起業・自動化、とっても盛り上がると思います!)

通常、こういった機能は、APIを開発したり、提供されている有償のAPIにアクセスすることで実現します。

少し、技術的な話になりますが、Reactのような画面系フレームワークから、サーバーサイドAPIにアクセスするようなイメージです。

しかし、けっこうな専門知識や開発の手間が必要です。

慣れているディベロッパーにとって、AWSのAPI GatewayやLambdaを使ってAPI開発するのは朝飯前でしょう。GoやDjangoのRESTフレームワークを使うこともできるでしょう。

最近では、ローコード系のWayScriptなど、ラクできるサービスも多いです。

しかし、サクッとプロトタイプをつくりたいノーコーダーには、別の道もあります。

ハイスキルなノーコーダーであれば、Bubbleをつかうでしょう。筆者はIntegromatのパートナーなので、IntegromatでAPIのモックアップを開発しました。

モックアップとはいえ、プロトタイプですから、ちゃんと動きます!

認証プロトタイプの詳細

前提として、API機能が提供されるまで、IntegromatではWebhookという機能を使います。

ユーザー登録のシナリオ

以下は、アプリからユーザー登録Webhook(URL)にPOSTリクエストしたときの、処理の中身です。

Screenshot 2021-02-20 at 3.32.54 PM.png

つまり、メールアドレスとパスワードを登録する。成功すると、トークンと呼ばれるキーが自動生成されるようになっています。

トークンとは、メールアドレスとパスワードの代わりに使う「カギ」のようなものです。

実は、この4つのモジュールをつなげるだけで、そこまで実装できます。

パスワードのセキュリティは、少し簡易的ですが、sha256というハッシュ関数をつかって、パスワード本体をそのまま格納しないようにしています。

例えば、以下のような文字列になります。

>>> crypt = hashlib.sha256(email.encode('utf-8')).hexdigest()
>>> crypt
'ab7b7020504d7a392c54e2dc8efa756af3b0ae825ffa47692e7b21aa30b36f88'

Screenshot 2021-02-20 at 3.58.47 PM.png

トークンも同じで、わかりやすい文字列や、予測可能なハッシュにならないよう(簡易的に)意味のわからない長い文字列にしています。

ログインのシナリオ

次は、ログイン判定のシナリオです。こちらは、もうちょっと複雑です。

Screenshot 2021-02-19 at 5.05.37 PM.png

モバイルアプリで、メールアドレスとパスワードを入力したときの処理です。

システム(Integromat)は、データベースにユーザーが存在するか調べます。いなかったらエラー。いたら、ユーザー登録時に生成されたトークンを渡します。

これによって、ログイン以降の処理(例:投稿内容の一覧を取得するなど)にメールアドレスとパスワードを送信する必要はありません。

少し技術的な話をすると、セッションIDのような役割を果たすのがトークンです。厳密にいうと、トークンはCookieを使ったセッションではありませんが、役割は似ています。

どちらかというと、昔のガラケーのセッション(の扱いと実装)に似ています。ガラケーはCookieがなかったので、トークンのようにセッションを使っていました。

今、Cookieレスなんて議論されていますので、トークンを使えると、本開発や実用最小限のプロダクトをリリースする際、GDPR準拠もラクになるかもしれません。

このシナリオのポイントは、JSONモジュールです。

Integromatでは、データをカンタンにJSONとして読み込んだり、生成したりすることができます。

Screenshot 2021-02-20 at 4.18.25 PM.png

上記例では、メールアドレスとトークンを返却しています。

{
"Email":"mana@ethical.works",
"Token":"QzYTkwYRmODE2WO...........",
"Password":"UNDEFINED!"
}

返却されるJSONは、上のようになります。ちなみに、稼働させるときは、メールアドレスの返却は不要です(笑)

ログイン画面イメージ

以下は、Adaloというノーコードを使った、簡易ログイン機能です。

Screenshot 2021-02-20 at 3.44.49 PM.png

この画面で、メールとパスワードを送信すると、ログイン・シナリオが起動し、成功の可否を返却します。

この例では、成功すると「Home」画面のテキストが表示され、失敗すると真っ白な画面になります。

ちなみに、このAdaloを使った外部連携は、開発途中のプライベート・ベータ版なので、まだ正式リリースはされていません。

しかし、同じことは別のノーコードやフロントエンドから可能、ということです。

いきなり専門的にはなってしまいますが、他のテスト方法として、APIクライアントであるPostmanを使った開発も可能です。

Screenshot 2021-02-20 at 4.31.13 PM.png

こうして開発しておけば、IntegromatにAPIアクセスできるようになったとき、アプリ開発がラクです。すでに、ロジックやシナリオの構成が頭に入っているからです。

シナリオの粒度

オススメの粒度は、ログイン、登録、リスト表示、といった小さなレベルでシナリオ(ロジック)を分けておくことです。

イメージは以下のようなシナリオ構成です。

Screenshot 2021-02-20 at 4.23.45 PM.png

よく、海外のユーザーやパートナーで、巨大なシナリオのトラブルシューティングを依頼している例を見かけます。筆者的にはオススメしていません。

これは、実際の業務に置き換えて考えれば明白です。

ひとつの承認フローが、10個も条件分岐していたり、処理ポイントが30個もあったらどうでしょうか?

例えば、予算の承認を得るまで、まさに「清々しいまでにブルシットで気の遠くなる」フローに、精神的苦痛を感じるのではないでしょうか?

わたしたちのアプリ起業・自動化は「シンプル」で「カンタン」で「ラク」である必要があります。それは、なにもしないで成功するという意味ではありません。むしろ…

みんなが難しくしていることをカンタンにして成功する

という起業や自動化です。よって、開発するアプリや自動化もシンプルであると望ましい。そういうロジックです。

それでは、ハッピー・オートメーション!

ノーコードで自動化を!

Integromat日本コミュニティへの参加はこちらから