Googleアカウントでのみ認証するNode.js製はてな匿名ダイアリークローンを公開した

  • 0
    いいね
  • 0
    コメント

    タイトルの通りなのですが、特定のドメインのGoogleアカウントでのみ認証するNode.js製はてな匿名ダイアリーを作ってOSSで公開しました。

    スクリーンショット 2017-07-17 17.07.38.png
    ログイン時の画面

    コードは

    で、ISCライセンスで公開してあります。実際に立ててあるインスタンスは、

    です。N高等学校のGmailのドメイン、nnn.ed.jpのGmailアドレスでないとログインできず日記が書けない、はてな匿名ダイアリークローンとなっています。

    技術としては

    • 認証: Google OAuth2
    • 言語: Node.js
    • DB: PostgreSQL
    • CSSフレームワーク: Materialize

    以上を用いています。

    N高等学校課外授業/N予備校 プログラミングの入門コースで教えている技術だけで作ってみました。ですので、SPAとかではなく愚直にテンプレートエンジンpugとHTMLフォームだけで作成してあります。SPAじゃないのでスマホでも意外とサクサク動きます。

    基本的に全ての技術は、

    以上で学べる技術となっていますが、CSSフレームワークだけは、入門コース内ではBootstrapですが、今回はMaterializeとなっています。とはいえ利用方法としてはそこまで変わりません。

    GitHubのコミットログ見てもらえれば、大体1~2日ぐらいで実装しているのが見てわかると思います。こういうちょっとしたCMSみたいサイトならばこなれてくると短時間で実装できるようになっていきます。

    ちなみに現在、N高等学校課外授業/N予備校 プログラミングの入門コースは、以下のコースで一部無料公開されています。

    以上の第一章の最初の半分ぐらいを無料で見ることができます。

    なお、2017/9/30まで初月無料で体験できますので、ぜひN予備校プログラミングを試していただければと思います。ひとつきたったあとは引き続き月額1000円で学べ、入門コースを終えるとこういうものがサラッと作れて運用できるだけの技術が身につきます。

    また入門コースの全4章のうち最初の1章は、「高校生のための プログラミング」として書籍化されておりますので、どうしても紙媒体で学び始めたいというかたはこちらの方も利用下さい。

    以下、具体的なアプリケーションの説明。

    匿名ダイアリーの仕様

    単一ドメインのGoogle認証だけを許可する、はてな匿名ダイアリークローン。 全ての日記はパブリックに公開されるほか、匿名性はホスト主によってのみ遵守される仕組みになっている。 トラックバックでバックリンクが作れる他、トラックバックをURLをタイトルに入れる、返信の日記を書くボタン機能を持っている。 自身の日記は編集、削除できる。また、IDで指定された人のみが削除人となり、削除を実施することが可能なようになっている。

    現在、各種文言がN高等学校向けにカスタマイズされたものとなっているが、利用する際にはフォークして適切な文言に変更すること。また、著作権はすべて運営者に帰属する内容となっている。その投稿時の承諾事項も利用者の用途に合わせてカスタマイズできる。

    セットアップ

    Node.js 6.11.1 以上で動作。Node.jsをインストールの後、クローンして npm install で環境用意。ローカルにPostgreSQLのDBを用意する必要がある。 文言、DBの設定、許可ドメインなどカスタマイズできるところはすべて、このconfig.jsに集約してあるので適宜編集のこと。 HerokuのPostgreSQLでも大丈夫だが、しっかり運用しようと思うと無料枠では難しそうなので要注意。安いVPSで運用したほうがコスパは良い。

    起動コマンド

    Google Developer Consoleよりアプリケーションを作成して、GOOGLE_CLIENT_IDとGOOGLE_CLIENT_SECRETを発行し、

    env NODE_ENV=production PORT=8000 GOOGLE_CLIENT_ID=xxxxxxxx-xxxxxxxxxxxxxxxx GOOGLE_CLIENT_SECRET=xxxxxx-xxxxxxxxxxxxxx GOOGLE_CLIENT_CALLBACL_ROOT='https://domain/' npm start 2>&1 | tee application.log
    

    以上で起動するだけとなっている。