実は仕様まわりがだいぶふわっとしてるので、その辺をいろいろ考えてみましょうか。
じゃあ、まず
理想郷を考えてみましょう。(笑)
意味もなく画像にしてみました。(笑)
そう、思ったんですけど
「メールアドレスが必須」という状況はなるべくなんとかしなくてはならないと思っていまして。
大体の場合、いわゆる「アカウント登録」って重荷になるのでなるべく簡単にすべきなんですよね。
それを避けるため、
シングルサインオンを採用したいとほんとは思っているんですよね。
メールアドレスの代わりにFacebookなどのSNSアカウントでログインできるようにしましょう、と。まぁこのへんはEmailやパスワードをnull可にすれば実装できるんですかね。
Laravelにも標準で機能がついています。さすがにLINEはないんですけど、LINEにもほんとは対応したいなぁ・・・・・・。まぁ、AttemptメソッドでemailじゃなくてSNSのIDカラム値なんかで走査すれば、最悪上手く行かなくても自前でなんとかできそうではありますね。
で、まず登録の障壁をなるべく低くして、いざ契約開始って時に住所などを登録させるような形でいけばいいかなぁ・・・・・・って思います。
とりあえず、新規登録画面はどっちにしろビジュアルだけは作り直すつもりですしね。
ちなみに登録のSTEP2の段階でアカンストを生成する、って言ってますが、住所や年齢といったパラメーターを入れる前にもうアカウントを作っちゃいましょう、と。
シングルサインオンで登録することを考えた際、さすがにhiddenフォームかなんかでSNSのアカウント情報を引き渡すのは危険すぎるし、可能であれば全部サーバー側で処理したいという思いがありまして。
セッションを使うことも考えたんですが、セッションは別に安全ってわけじゃないと思いますし、住所は必須情報とはいえ
最初にいきなり入力させるのは障壁になるなと思って、スキップして後で入力することを認可することにしました。
さて、ここで問題なのですが
メールアドレスを必須にしたくないって思うと、どう解決したら良いと思いますか?
メールアドレスを必須にしないような実装、って考えると、考えられるのは以下の2パターンですね。
1.別途「ID」カラムを利用し、メールアドレスを「ハンドシェイク時に必須」とする
IDでのログインに対応すればメールアドレスは必須じゃないですね。ただ信頼性の高い連絡手段がないと困るのでメールアドレスは必須とする、という実装ですね。
たぶん現状はこの方針で行くつもりなんですが、やっぱメールアドレスって一般の人にとってはネックになると思うんですよね・・・・・・。参入障壁は下げたい・・・・・・実装が簡単になるから開発者としては嬉しいんだけれども・・・・・・。
あとメールアドレスだと確認メール送んなきゃいけないのもキッツいですね。
2.連絡手段をアプリ+公式ページとし、メールアドレスはサブ扱いにする
ほんとはこうしたい、んですよね。
ハンドシェイクは別にURLが送れればメールでなくても構わないので、
何か一つ連絡できるものが登録されており、ハンドシェイク送信先設定がされていれば必須としないという実装にしたいわけですね。
ただ、当然のようにtwitterなんかだと1日250通までとかって制限があって、あんまり実用的ではないんですよね。
となるとアプリ通知しかないなぁって感じはしますね。SNSアカウントとかも、まぁ使えるのはせいぜいLINEぐらいかなぁとは思うんですよね・・・・・・。
つまり実装はしんどそうだからしたくないですね。
そもそも、実際のところアプリはリリース時には確実に必要なんですけど、あんまり僕が自分で書きたくないんですよね・・・・・・。まずスキルがないし。書けないとは言わないけど、時間が非常にかかって宜しくないと思われるんですよね・・・・・・。
まぁ一応Monacaとかいうサービスを使えば、HTMLをアプリ化できるので、暫くはそういった
HTMLをアプリ化するという手で誤魔化していきたいなぁとか思うんですけど、PHPでそれができるのかは不明ですね。
多分無理じゃね
まぁ、WebViewしかないな、って感じはしますね。ログインできるようなAPIを用意すれば、アプリ自体にIDとかパスワードを記憶させれば、あとは普通にウェブブラウジングとして実装できますね。
で、これにオマケとして通知機能とかを追加でつければいい感じですかね。プッシュ通知の実装は大変そうですけど、軽く調べてみたらアプリ側じゃなくてサーバー側であれこれする感じに見える・・・・・・?
ただ、メールアドレスだけでハンドシェイクをするのはちょっとアレかなぁって感じもするので、通知はページの方でもやるかなぁ、って感じですね。
まぁ、プッシュ通知自体は
以前に実装したことはあるし、取り入れるかなぁ。
仕様が固まってない状態で書き進めるのもよくないんですけど、ぶっちゃけ後で変わることが容易に想像できるしなぁ・・・・・・。
デザイン部分は他人に丸投げしたい・・・・・・。丸投げできるようなコードを意識して書く他あるまいね、、、