---
title: ブログのバックエンドを作り直した&CLI版フロントエンドを作った
tags: []
categories: ["Dev", "Blog", "CategoLJ2"]
date: 2014-03-02T06:38:17Z
updated: 2014-03-02T06:38:17Z
---

前回blogのフロントエンドを作り直して、Single Page Applicationにしたが、今回はフロントエンドをそのままにバックエンドを[完全に作り直した](https://github.com/making/categolj2-backend)。全てREST APIで提供。Richな管理画面付き。

![image](https://raw.github.com/making/categolj2-backend/master/screenshots/ss-entries.png)

ちなみにこの管理画面は「はじめてのBootstrap」の第5章で説明されているやつです。

<a href="http://www.amazon.co.jp/%E3%81%AF%E3%81%98%E3%82%81%E3%81%A6%E3%81%AEBootstrap-I%E3%83%BBO-BOOKS-%E6%A7%99-%E4%BF%8A%E6%98%8E/dp/4777517993%3FSubscriptionId%3DAKIAJ7Y2FDFBWLT5HCQA%26tag%3Dikam-22%26linkCode%3Dsp1%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4777517993"><img src="http://ecx.images-amazon.com/images/I/51kPHdtTVpL._SL160_.jpg" title="はじめてのBootstrap (I・O BOOKS)"></a>


扱えるリソースは以下

* 記事(Entry)
* リンク(Link)
* ユーザー(User)
* アップロードファイル(File)


またOAuth2に対応してリソースアクセスに対する認可制御を行っている。ユーザー名・パスワードからアクセストークンに交換する方式を採用した(Resource Owner Password Credentials)。

HTTP Sessionを使わないステートレスなアーキテクチャになった。

BlogのバックエンドがThin Serverになり、REST API + OAuth2という標準的なプロトコルでやり取りできることにより、容易にクライアントを作ることが出来る。

一例として、[Go言語でCLIフロントエンドをつくった](https://github.com/making/categolj2-cli)。Web上の管理画面のUIとは全く異なり、記事ファイルのダウンロード/アップロードができて、ローカルで直接ファイルを編集する形になる。FTPみたいな感じ。Markdownエディタと組み合わせて開発すると強力。（この記事も[mou](http://mouapp.com/)で書いている）

    $ catego post hoge.md

で記事を新規作成できる。いい感じ。

Thin Server Architectureにすることで、UIの可能性は無限大になる。クライアントアプリの種類によって適切なUIを考えたいところ。次はiOSかな〜。

今のアーキテクチャは↓な感じ。

![image](https://qiita-image-store.s3.amazonaws.com/0/1852/5ac2909e-5d28-a861-6c39-1548af68e806.png)
