初学者がぶつかる、ユーザー登録機能の4つの壁

SNSやWEBサービスに必須のユーザー登録機能ですが、これが初学者にとっては鬼門なんです。
僕も最近、ユーザー登録機能実装にチャレンジして大いに苦しみました。

そこで、なぜ苦しんだのか考えてみたところ、4つの壁があったことに気づきました。

今回は、初学者がユーザー登録機能を実装するための4つの壁について紹介します。

もくじ

  1. ユーザー登録機能って何が難しいの?
  2. HTTPプロトコルとPOST・GETメソッド
  3. モデルの実装
  4. セッション管理
  5. セキュリティ
  6. まとめ

ユーザー登録機能って何が難しいの?

さて、ユーザー登録機能の何が難しいかということからお話します。
僕が思うに、ユーザー登録機能の難しい点は4つあります。

HTTPプロトコルとPOST・GETメソッド

1つ目は、POSTやGETなどのHTTPメソッドを区別して使う必要があることです。
僕も初めは、HTTPメソッド?POST?GET?なにそれ???、という状態でした。

残念ながら僕らは日常生活の中でプロトコルやメソッドを意識することが無いんですよね。
本当に便利な世の中です。

とはいえ、作る側になろうと言うのであれば、無視するわけにはいきません。

ざっくりと概要を解説します。
インターネットの世界では、僕たちがこのブログのようなWEBページにアクセスするために、HTTPプロトコルというルールを使っています。

プロトコルとは通信のルールを意味します。言語のようなものだと思ってください。
もしも、WEBページを持っているサーバーと、アクセスしたいクライアントがそれぞれ別の言語を話していたらやり取りは上手くいきませんよね。

WEBサーバーとクライアントが正しくやり取りをして、WEBページを表示するためには、共通のルールが必要なのです。
これがHTTPプロトコルです。

POSTやGETは、このHTMLプロトコルの持つルールの一つです。
どちらも、ブラウザからWEBサイトにデータを送信するためのメソッドです。

POSTとGETの違いをとても簡単に説明すると、URLに送信データを含めるかどうかの差です。
一般的に、検索フォームに入力した情報などはGET、パスワードなどの情報はPOSTを使用する場合が多いです。

ユーザー登録機能の実装では、このPOSTメソッドをGETメソッドとは区別して使用する必要があるので、初学者が混乱しやすいと言えます。

プロトコルやネットワークについての基礎知識を身につけるための教材としては、こちらが定番です。

マスタリングTCP/IP 入門編

最低限必要な知識が網羅されているので、基本情報などの資格試験対策としてもおすすめの一冊です。

モデルの実装

次に、2つ目のつまづきポイントを紹介します。
それは、モデルの実装です。

ユーザー登録機能を実装するということはすなわち、その登録情報をDBに格納する必要があります。
その際、DBの環境構築やモデル設計、SQLやフレームワークについてある程度習熟しておく必要があります。

幸い、最近の多くのプログラミング言語は便利なフレームワークを持っているため、ちょっとした実装を行うだけならそれほど学習コストは高くないです。
しかし、それでもある程度はDBについて知識を持っておく必要があるため、やや難易度が高く感じることでしょう。

セッション管理

3つ目は、セッションの管理です。
セッション管理とは、簡単に言うと一度ログインしたらしばらくログインしなくてもいいようにするための機能のことです。

この機能を実装してあげないと、ページ遷移のたびにログインが必要になります。
つまり、Amazonで商品のページを開くたびにログインしないと買い物ができなくなるようなものです。
それはあまりにも不便ですよね。

この問題を解決するために、ログイン情報をしばらくの間保存しておきます。
この機能がセッション管理です。

セッション管理に関しても、有名なフレームワークなら大抵は簡単に行える機能がついています。
多少は混乱するかもしれませんが安心してください。

セキュリティ

最後はセキュリティです。
作成したアプリケーションを公開しないのであればあまり気にしなくても問題はありませんが、せっかく作ったアプリケーション、公開してみたいですよね?

アプリケーションを公開する際に忘れてはいけない、しかし難しいのがセキュリティです。

シンプルなユーザー登録機能を公開するだけでも、たくさんのセキュリティリスクが存在します。
SSL通信かどうか、クロスサイトスクリプティング対策やSQLインジェクション対策はできているか。
ディレクトリトラバーサル対策は?生のパスワードをDBに保存してないか?

などなど、本当にたくさん確認すべき項目はあります。

セキュリティの分野は、初学者がいきなり始めるには大変かとは思いますが、もしも今後もアプリケーションを作っていくのであれは、避けては通れません。

こちらの書籍は、一般的なアプリケーションの脆弱性とその対策などについて丁寧に書かれている良著です。
ぜひ、一度読んでみてください。

安全なWEBアプリケーションのつくりかた

まとめ

アプリケーションにユーザー登録機能を実装するまでには、

・プロトコル
・データベース
・ネットワーク
・セキュリティ

という4つの壁がありました。
ですが、最近のPython、Ruby、PHPなどの有名フレームワークは、これらの実装を楽にしてくてる機能が備わっています。

ですのであまり身構えることなく、プログラミングをエンジョイしていきましょう。