自分用のCMSを作ってみた「プログラマのためのCMS」についてkwsk前のエントリで長々と語ってしまった自分用のCMSについて。普通のCMS普通のCMSはこんな感じ。プログラマのためのCMS今回自作したったのはこれ。̄CouchDBにフロントエンドを付けたらこんな感じですな。考えてみたらこれとは逆でコンテンツを書くのにテキストエディタを使うOctopressのアプローチの方がプログラマ向け要素が濃いので、プログラマのためのCMSという表題は考えなおした方がいいのかもしれない。HTTPで提供されるためページのレンダリングに好きなテンプレートエンジンやら何やらが使えるっていうことがある。いう面ではプログラマ向け。JinjaでHTMLをレンダリングしている)あと、コンテンツとプレゼンテーションが粗結合なのでサーバをまたがった複数のWebサイトのコンテンツを一元管理できる。これはまあ・・・プログラマ向けというよりは、とある商業的な用途目的のメリットかもしれないが。いう言葉も考えたので機会があったら使ってみたい。(ものごとに名前をつけることが重要なのであって、それはドクジリアン柔術でもなんでも良いのだ。Eclipseは基本設計が古くてもうどうしようもないんだろうなと思う。Java以外の開発もできる。(プログラミング言語)なんか新しくて便利なプログラミング言語。この世代のプログラミングパラダイムについて言及するとめんどくさい人たちの標的になるのが特徴。前も例えばMVCアプリケーション設計モデルについて語ると自分がガンダムを一番うまく使えると主張するアムロみたいな人たちが湧いたけど今のコレは数学との関わりも深い関係でアムロどころじゃないガチの人達が出てくるので命がけである。6のリリースは2006年12月)。(Javaアプリケーションフレームワーク)バージョンを重ねるにつれ機能を追加しても変更はあまりしないため何年経ってもほとんどのソースがそのまま使えるという手堅さから、Scala向けの新しいフレームワークをあえて選択せずこれを使っている。Overflowで答えが見つかる。(Scala用データベース操作ライブラリ)JDBCは異なるベンダのリレーショナル・データベースに対して同じAPIでアクセスできるうえにSQL内でプレースホルダを使えたりと、それが登場した時期から考えると優れたものではあるのだが、流石に今はちょっと生で使うのは無理なので薄かったり厚かったりする高位のレイヤを通して利用するのが普通。SQLを受け入れると決めた上で極力利便性を提供するというバランスがよく考慮されているのが特徴。ORMでことあるごとに発生するN+1問題やトランザクション境界をまたがって生存したオブジェクトが引き起こす問題を嫌う向きにはこのようなものが好まれるだろう。Framework側に合わせる工夫をして使っている。JSONと相互変換できるようになる。JSONはWebブラウザとサーバとの間でデータを交換するのに使われる一般的なフォーマットで、昔でいうXMLにあたる。XMLより記述が簡素で通信容量を節約できるのが特徴。Javaで実装するためのライブラリ。当然のごとくこれを破る技術もあるわけで、ましてやよく使われているライブラリで生成された画像であれば破りやすいのではあるが、Captchaのある入力フォームにイタズラされる可能性は無いフォームにイタズラされる可能性よりも相当低くなるであろうことは確か。(データベース)Javaで出来た、ローカルファイルやメモリにデータを配置して直接読み書きするタイプのデータベース。データにはSQL(JDBC)でアクセスできる。Java版みたいなものと考えても良い。データベースサーバー要らずで運用できるため開発作業がとてもやりやすい。PostgreSQLなりといった他のDBMSにした方が高性能で運用もしやすいため、H2を採用して何かを作ろうとする際にはそこら辺を先にちゃんと考える必要がある。(スキーママイグレーション)リレーショナル・データベースはスキーマ定義にない項目を保存することができない(例えば姓・名のフィールドしか持たないテーブルにミドルネームを保存することはできない)ので、データベースに保存したい項目が増えた時には項目の追加(スキーマの更新)をしなければならない。ソフトウェアは進化するものなのでそういうことは日常的に起こるのだが、データベースに対して手でコマンドを打っていちいち項目を追加していてはミスがいつか発生する。Flywayは、スキーマの更新がどこまで行われたかをデータベース(のschema_versionテーブル)に保存しておいて、まだ適用されていない更新があった時には自動的にそれを適用するという処理をしてくれる。ActiveRecordのスキーママイグレーション機構を手本にしていると思われる(ただしFlywayが対応するのはスキーマの進化だけで退化はできない)。Flywayが走るようにしておけば良い。Bean定義ファイルに下記のように書いておくだけだ。(HTMLパーサ)HTMLファイルのある断片だけを読み込んでインクルードしたいとか、他所のサイトからパクってキュレーションしてきたHTMLの特定部分を切り出して利用したいとかの処理に使える。BeautifulSoup。(スタイルシート)いわゆるレスポンシブWebデザイン(画面のサイズによって最適なレイアウトで構成要素を表示するようなWebデザイン)を簡単に導入できるスタイルシートと素材集。Webページを作成する際には必須といってもいい存在。(JavaScript用フレームワーク)サーバーとの通信と、画面を通じてユーザーと対話をする部分(Webブラウザで動作する)をJavaScriptで開発するためのフレームワーク。Application)という方式も取れるようになっている。SPAを開発するのに使用される。AngularJS本体に下記のようなモジュールを追加して利用している。textarea要素では本格的なテキスト入力がしにくいので、長いテキストを入力する画面では代わりにこれを使うと良い。高機能な分全てのWebブラウザでキッチリ同じように動かすのが難しいらしく、特定のブラウザで細かい不具合が起こることはある。(Webブラウザ自動運転ツール)Webブラウザを起動して自動運転させるためのツール。Webシステムを開発するさい、自動運転のシナリオさえプログラムすればログインから始まって長ったらしいフォームの入力するといった手でやると面倒な一連のテストを繰り返し自動でできて開発効率が上がる。E2E(エンドツーエンド)テストツール、受け入れテストツールと呼ばれる。2014年11月27日お勧めカテゴリ英語でアニメ観ようずなじみ深い日本製アニメの英語版DVDで、字幕と音声から英語を学びましょうという趣旨のシリーズ記事です。APIを実装してみましょう。嶋田大貴のブログです。