concrete5最新版のすごいところを新婚さんにたとえて考えてみた – concrete5 Advent Calendar 2016

ども、エンジニアになった当初は手続き型プログラミングでツリー型データベースを使っていて、ローカルのデータの移動は磁気テープだった隊長です。

昨日の concrete5 Advent Calendar 2016 は、武井くんの concrete5(5.7.x)アドオンを作成した時に準備したこと でした。ぜひマツヤマンスペースで簡単なアドオン作成ハンズオンでも開催していただきたいw

 

え〜14日め、本来のタイトルは「concrete5最新版のすごいワクワクするところをエンジニア的に言ってもわかりにくいと思うので、新婚さんが新居に引っ越す前のワクワクに例えて考えてみた」なんですが、長すぎるから端折ったら、それはそれでなんだかわからなくなってしまいました。あと新婚さんいらないやん!かもしれないですが、まあそこはお察しください。

 

プログラムの仕事

こうしてみた時に、もともと存在している情報をどのように加工したりするか? または、こんな情報を集めたいからどんな入力フォームにするか?ってことを考えてプロクラムを作り、データベースを設計するわけなんですが・・・今時はそんな野暮ったい感じじゃないよと言われるかもしれません。よく我が家で話題になるのが手続き型プログラマがオブジェクト指向って理解できんのか?ってこと。うっさいわい。

 

Expressデータオブジェクト

concrete5の最新版リリースノートを自分で翻訳したのは、こんな用語がいっぱいあって、ちんぷんかんぷんだったから。

concrete5 8.0 Release Notes :ねこみみ的意訳

concrete5 8.0 Release Notes :ねこみみ的意訳

 

こんな用語を学者や博士みたいに述べられても、一般の人にはありがたくない。もっといろんな人になんかすげー!!って思ってもらうのには、わかりやすく咀嚼しなきゃだめだよなって、ずーっと前から思ってたの。英語もわからん、ベータ版使ってもエラーでまくりでなんだかわからん。

そんな感じなので、実際のものを作るのはあとになると思いますが、概念だけならなんとか説明したいと思いました。

 

WordBench千葉でMySQLの話をした時の「タンス」

インスタンスとかじゃないっすよ箪笥の方。

CMSを使う時にはどうしてもデータベース(DB)のお話をしなきゃいけない。けど普段使う人にはあまり概念がわからない。
そこでDBをわかってもらうために「DBは箪笥、テーブルは引き出し、インデックスは収納を知ってるお母ちゃん」理論を展開したわけです。
そこで今回の新理論は。…

 

「Expressデータオブジェクトの勘所は無印良品のユニットシェルフの活用法」理論です。

 

無印良品のユニットシェルフ

https://www.muji.net/store/cmdty/section/T20005

私が28年前に結婚した時も収納を無印良品で揃え、松山のアパートでも無印良品を中心に収納を設計しました。…だからお察しくださいと(ごにょごにょ

そんな私がExpressデータオブジェクトの記事を見ながら悶々としてた時、目に付いたカタログ

 

そうか…自由にカスタマイズできるけど、基本的にはここに掲載されてるケースや引き出し(属性)を組み合わせて収納…

 

Expressデータオブジェクト
無印良品のユニットシェルフ

…と定義するとして

データオブジェクト
シェルフの種類と名前
属性
ユニットシェルフに組み合わせできる収納(グッズ)
属性のハンドル
収納のラベル

引き出しの中が見えにくいタンスと違い、さまざまな組み合わせで、わかりやすくラベリングする。素材のシェルフにして、どんな引き出しを使おうか?カゴ?硬質パルプ?半透明の?って考える。

でもその家ごとによって収納のルールが違います。だから、Expressデータオブジェクトがこうあるべきというルールはなく、サイトごとのルールを決めて使うことが大事ですよね。

新婚さんなら、このルールを決める時には、新生活を思い浮かべわくわくしませんか?

 

ものを的確に収納するための入力フォームもデータオブジェクトにある。そこから上手にコンテンツを取り出し表示させるExpressデータの表示ブロックも存在する。コードは最小限でwebサービスを作る土台が出来てしまう。

作業のワークフロー的にも、とりあえずお客さまに入力する情報がもうあるなら、とりあえず入れてもらって、その間にうまく出力するデザインでサイトを作るとかできちゃうじゃなーい!!

とか思ったりしたんだけど、ダメかしら?

 

 

もちっと真面目に。

concrete5はブロック単位でデータがあるわけですが、ブロックは単体で存在するのではなくページに紐付いています。

すると多くのデータを集め保存しようとすると、膨大なページが存在することになります。(例えばconcrete5日本語フォーラムとか)
そんな今までのコンクリだと、サイト内の情報の再利用しようとするとページを読み込んでその属性を表示とかなんだかやぼったくなっちゃうかもしれない。

ページに依存しないデータが存在すると、サイトマップで管理する時の見やすさがなくなるかもしれません。でもメリットもありますよね。

例えば、オーダーメイドなお店で、ベースになる商品説明はページ単位で行っても、さまざまなオプションを作る時には、Expressデータオブジェクトがあるととても重宝しますよね。あとから変更になってもデータオブジェクトを変更するだけでいいですし。

製作者からしても、データ設計が管理画面で見えて、sqlコマンドなんて覚えられない!わからない!というデザイナーでも視覚化してると情報を共有しやすいです。

だからその手前の「Expressデータオブジェクトの概念」を多くの人に共有できたら、ディレクターさんもconcrete5を選択肢に入れてくれるかもしれないし、多くの人が勉強会に足を運んでみんなで使ってくれるようになったら嬉しいなって思うねこみみエバンジェリストなのでした。

よし、作例をちゃんと作って説明できるようにしよう。

最後にお知らせ

今週土曜日に、CMSもくもく会ということで千葉コワーキングスペース201さんをお借りして、勉強会を行います。年末で皆さんお忙しいと思いますが、一言なんか聞きたい!お酒飲みたい!でもいいですので、おこしください。

いろんなCMSもくもく会 in 千葉

 

たぶん私はこのExpressデータオブジェクトを使った地図情報サイトを構築作業(準備までかな)をしてると思います。v8で一番作りたかったのがこれなんですよ。GoogleのAPI使っていろいろ自分の旅のためのサイトを作りたくてねw

WordPressでも地図アーカイブサイトを作ってますけど、趣味でやったのをちゃんとクライアントワークで活かしてる実績があるので、今回もアプリでも作ったりと夢が膨らんでますが、まあ、そんな何か自分のCMSの宿題を持ち寄って作ったり、AdventCalenderの記事を書くネタを他の人に聞いたり、夕方はゆっくり食事したりしましょう。

concrete5だけにしなかったのは、別々の日に設定できなかったからなので、特に他意はありません。

 

そういや今日は12月14日でしたね

しろ「今日ハ赤穂浪士討チ入リナンダッテ!」
タイニー「餅入リ?」

 

さて、明日の concrete5 Advent Calendar の当番はsngazmさんです。デザイナー向けのお話のようで、楽しみです!