一周して親子テーマ構築からシングルテーマ構築に戻ってきた話

テーマの継承=親子テーマの概念があるa-blog cmsでは、複数のブログで構成されたウェブサイトを製作する場合、子ブログのテーマはルートブログの子テーマとします。

フォルダ構造をざっと書くと以下のとおりです。子ブログ「ニュース」の親ブログには「sample」というテーマが指定されています。
a-blog cmsは「テーマ名@親テーマ名」でテーマの親子関係ができますから、ニュース用のテーマは「news@sample」とすればよいわけです。

            sample ┬ テンプレート
                         ├ テンプレート
                         ├ テンプレート
                          ・・・

news@sample ┬ テンプレート
                         ├ テンプレート
                         ├ テンプレート
                          ・・・

ですが最近、他の人が製作した親子テーマを使わない「シングルテーマ構築」を見る機会があり、試してみたところ、開発者によっては、親子テーマよりもメリットが大きいかもしれないと感じました。

シングルテーマ構築とは

手法としては、特に凝ったものではなく、かなり昔からあったものです。私自身、Movable Typeで試したことがあります。

テンプレート内にインクルードを書き、ファイル名の一部に「ブログ名」もしくは「ブログID」を引数として渡します。
a-blog cmsで、詳細ページ用テンプレートの場合こうなります。

@include("/_entry/entry_blog_%{BID}.html")

コードネームを取得する変数「%{BCD}」を使って、より直感的なファイル名にしても良いと思いますが、a-blog cmsはルートブログではコードネームがない(NULL)ので「entry_blog_.html」というファイル名になってもよいのかは考える必要があります。

フォルダ構造は以下のようになります。画面ごとに「_top」「_index」「_entry」のフォルダがあり、現在訪問しているブログのIDをキーとして、表示するテンプレートを切り替えます。



シングルテーマ構築のメリット

やったことがない人から見ると複雑そうに感じますが、大規模なウェブサイトほどメリットがあります。

修正漏れが出にくい

親子テーマで構築したときに問題となるのが、子テーマの修正漏れです。親テーマと子テーマはテキストエディタや統合開発環境でファイル一覧を見た場合、かなり離れた場所に表示されます。このため、複数人で開発したり、数ヶ月語に改修をしたときに見落としが出やすくなります。

ファイルを探しやすい

テンプレートが画面ごとにひとつのフォルダに入っており、かつ一意のファイル名になっているので、ファイル名を検索して修正する作業がスムーズです。 親子テーマの場合、「index.html」を探そうとすると、テーマの総数分だけファイルがヒットすることになります。 カテゴリー単位でディレクトリを作っていると、ますます大変なことになります。

他の条件分岐を併用できる

親子テーマの場合、振り分けるのはあくまでブログ単位であって「ルートカテゴリーがitemsのエントリー」などのカテゴリー単位の振り分けは併用できません。
a-blog cmsの場合、「コンフィグセット」機能が追加されたので、カテゴリーごとにテーマを変えることもできるようにはなったのですが、テーマだけではなく同様にコンフィグに含まれている編集設定なども変わってしまうので、あまり現実的ではありません。

シングルテーマ構築のデメリット

説明が必要

CMS構築にそれほど詳しくない人には、事前説明が必要になります。最低でも、ブログIDとコンテンツの対照表がないと、ブログIDの調べ方がわからない人にはどうしてよいかわからないでしょう。

ルールはやはり子テーマ(a-blog cmsの場合)

スマートフォンではテンプレートを差し替える、などの「ルール」機能を利用する場合は、子テーマでなければなりません。

ELSE分岐が面倒(a-blog cmsの場合)

インクルード時にファイル名が一致していなければならないため、「ではない」を条件とした分岐が難しいです。

えっ?IFブロックを使って、こうすればよいのでは…と思うかもしれませんが、

<!-- BEGIN_IF [%{BID}/eq/2] -->
@include("/_entry/entry_blog_%{BID}.html")
<!-- ELSE -->
@include("/_entry/entry_blog_not2.html")
<!-- END_IF -->

a-blog cmsはIFブロックを使用した場合、条件に合致していないコードも処理されます。なので、このような書き方をすると、実質2ページ分の読み込みが発生して処理が遅くなります。

ELSE分岐はこのように、条件に合致しないテンプレートに、さらにインクルードを書くことになります。

_entry.html

@include("/_entry/entry_blog_%{BID}.html")

entry_blog_2.html 以外のブログIDのテンプレート

@include("/_entry/entry_not_blog_2.html")

なお、自作のグローバル変数を作成する知識があれば、 %{IS_NEWS} のような特殊な条件でtrueを返すグローバル変数を作ったり、特定のカスタムフィールドの値をテンプレートファイル名に使ったりできるので、大幅に有用性が上がります。
その場合はa-blog cmsのアップデートやサーバー移転の際に、オリジナルのグローバル変数を定義している /extension/acms/Hook.php を上書きしないよう、資料を書いて共有しておく必要があります。

まとめ:これでいいのか…?

メリットのところで書いたとおり、シングルテーマ構築は、私的には便利でした。途中、ディレクターさんが急ぎの文言変更でテーマを編集しましたが、フォルダ階層を登ったり降りたりしなくて良いので、作業しやすかったようです。

この構築手法は、a-blog cmsの公式テーマの管理画面のカスタムフィールドでは昔から使われています。ですが、公開側のテンプレートについては、ドキュメントでもこのような手法は解説していないので、オレオレカオステーマになってしまわないか、このまま採用し続けて良いものかという迷いがかなりあります。うぇびんたんいつも迷ってますね。

このへん、他の製作者さんの見解を知りたいので、SNSのコメントなどいただけると、とてもうれしいです。


投稿者名 うぇびん 投稿日時 2019年07月31日 | Permalink

a-blog cmsの一時的なテンプレート差し替えについて考える


地味なTIPSなのですが。
a-blog cmsのインクルードは、themesからのパスで記述すると、他のテーマのファイルを参照することができます。

冒頭の図のように、theme_a から theme_b にある file_b.html を参照する場合は以下のとおりです。

@include("/themes/theme_b/file_b.html")

これを利用すると、テーマの関係を無視することができます。

と書いた時点で、CMSの構築に慣れている人は悪い予感しかないと思います。実際、これの多用はおすすめできません。なんのために「テーマ」という概念があるのかわからなくなります。

ですが、これを活用できる状況もあります。

  • 期間限定で、特定のページを大幅に差し替えたい
  • サイト公開後の一定期間だけ、ティザーサイトを公開したい

などで、一時的に退避する本来のページも、別URLで閲覧できるようにしたい場合 です。

実際の手順とともに解説します。

※本来のページを移動する必要がない、かつ、一部のユーザーだけ見られれば良い場合は後述します

テーマ間インクルードの使用例

まず、ティザーサイト用の子テーマを作成し、本来のページと同じファイル名で差し替え後のページを作成します。
ここではわかりやすくするために親テーマ名を公式の site2019 、トップページを _top.html にします。
本来のページは top_02.html に退避させます。

teaser@site2019
  ├ _top.html
  └ top_02.html

一般的な親子テーマの継承を考えると、この構成にした時点で、親テーマの _top.html はティザーサイト用のテーマに上書きされ、参照できなくなります。
このため、退避した top_02.html には親テーマと同じコードを書かなければなりません。

もしもティザーサイトを公開中に top_02.html だけを編集して、それを忘れたままテーマをもとに戻すと、トップページに巻き戻りが発生してしまいます。

ここで、テーマを超えたインクルードを使います。

top_02.html のファイルを空にして、冒頭の、他のテーマを参照するインクルードを書きます。

@include("/themes/site2018/_top.html")

これで、ティザーサイト用のテーマ側で、親テーマのトップページを編集することはなくなるので、期間が終了したらテーマをもとに戻すだけで済み、安全な撤収ができます。

一時的な差し替えへの様々な対処

ウェブ制作に最適化されたa-blog cmsは、一時的なページ差し替えには、テーマ間インクルードの他に様々な対処法が用意されています。

参照テンプレートを変更するURLコンテキストを使う

退避前のページが非公開で良い場合、改修後のページをチェックしてほしい場合に使えます。URLの末尾に /tpl/(テンプレートファイル名) を追加すると、指定したテンプレートに同じデータを反映したページを見ることができます。

条件分岐を使う

ログインしているときだけ退避前のページを表示したいときに使えます。ただし、更新担当者は常時ログインしているので、この方法だと難色を示されるかもしれません。

ルールを使う

cookieや端末で動的にテーマを差し替えたい場合に使えます。期間も設定できるので自動終了できますが、管理画面から設定するので、a-blog cmsの構築に慣れていないとルールが適用されていることに気づきにくいです。しっかり情報共有をしなければなりません。

以上、いろいろな手段が考えられるのですが、ファイル1点くらいの入れ替えであれば、テーマ間インクルードが一番共有もしやすいように思います。ファイルを見たら、一行しか書いていないので、親テーマをそのまま読み込んでいることがすぐわかります。

いつもの手法や、開発元が推薦している手法にこだわらず、現在のプロジェクトの状況でもっとも良い方法を選定したいものです。


投稿者名 うぇびん 投稿日時 2019年07月20日 | Permalink

a-blog cmsでシステムで処理できない曜日表記に対応する

2019-07-06追記
文中で「a-blog cmsのIFブロックは、エントリーの基本情報の日付は条件分岐で判定できますが、カスタムフィールドの値を校正オプションで変換したあとの日付はできないようなのです。」と書いていましたが、できます。死にたい。訂正してお詫び申し上げます。
いずれにしても、SetRenderedで変数化しておいた方が、サイト内の複数箇所で利用しやすいことは代わりありません。


曜日が丸囲み漢字になっている


画像のようなカンプを受け取りました。曜日が「丸囲み漢字」になっています。

丸囲み漢字はユニコードで表示できないことはありませんが、CMSで扱うのは困難です。かといって、画像を書き出してimg要素にしたり、CSSの:after疑似要素で丸を重ねたりすると工数が増えます。
カッコ囲みに変更させてもらおうかと思ったのですが、全体のデザインとのバランスを考えるとデザイナーさんの希望を叶えたいところでした。

実装した経緯を記事にしておきます。
お急ぎの方は「解決方法」からどうぞ。
WordPressでの解決方法もあります。こちらへどうぞ。

※文章の都合上「日付型カスタムフィールド」と書いていますが、普通の文字列です。a-blog cmsは、Y-m-d形式であれば日付フォーマットを適用できる仕様です。

マークアップ

望ましいと考えられるマークアップは以下です。
この記号は「日本語表記の略語」ですから、abbr要素でマークアップして、title属性に国際表記を付与します。lang属性も入れようかと思いましたが、文書自体が日本語だと宣言しているのでやめました。

<p>
<abbr title="Monday">&#12938;</abbr><br>
<abbr title="Tuesday">&#12939;</abbr><br>
<abbr title="Wednesday">&#12940;</abbr><br>
<abbr title="Thursday">&#12941;</abbr><br>
<abbr title="Friday">&#12942;</abbr><br>
<abbr title="Saturday">&#12943;</abbr><br>
<abbr title="Sunday">&#12944;</abbr>
</p>

上記のコードを表示すると以下のようになります。







a-blog cmsの「共通設定」を試してみる

a-blog cmsの「コンフィグ>共通」設定には、曜日をどのように表示するかという設定があります。通常は「日〜土」の普通の漢字表記ですが、任意の文字列に変更可能です。
この文字列は、エントリー関連モジュールの {date#week} 変数で表示できます。



じゃあ下のように書けばいいよね、と思ったのですが…

<p>
<abbr title="{date#l}">{date#week}</abbr>
</p>

ここで問題が発生しました。
今回は、日付型カスタムフィールドで日程を表示している箇所があったのです。

{entry_sample_date}[date('l')] → Sundayなどの英語表記

{entry_sample_date}[date('week')] → PHPのdate関数にはないので何も表示されない

a-blog cmsの日付型カスタムフィールドの場合、使えるフォーマットは「PHPのdate関数と同じ種類」となっています。このため、先程のa-blog cms独自のフォーマット変換は適用されません。

改めて、プログラムでの処理を考えることになりました。

出し分け方を考える

プログラムでの処理の流れを考えるとこのようになります。

  • エントリーの曜日を取得
  • PHPのDateフォーマットの「N」に変換し、1〜7の数値を取得
  • 数字を条件にabbrでマークアップした記号を出力

WordPressの例

WordPressであれば、get_post_time関数を利用することになるでしょうか。ifを使おうかと思いましたが、配列をそのまま呼び出した方がスマートですね。

<?php
    $week_mark = array(
        '<abbr title="Monday">&#12938;</abbr>',
        '<abbr title="Tuesday">&#12939;</abbr>',
        '<abbr title="Wednesday">&#12940;</abbr>',
        '<abbr title="Thursday">&#12941;</abbr>',
        '<abbr title="Friday">&#12942;</abbr>',
        '<abbr title="Saturday">&#12943;</abbr>',
        '<abbr title="Sunday">&#12944;</abbr>'
    );
    $week_number = get_post_time( 'N' ) + 1;

    // 番号に該当する曜日記号を出力
    echo $week_mark[$week_number];

?>

同様の処理をa-blog cmsのIFブロックで行おうとしたのですが…また、カスタムフィールドならではの問題が発生してしまいました。

<!-- BEGIN_IF [{date#N}/eq/1] -->
<abbr title="Monday">&#12938;</abbr>
<!-- ELSE_IF [{date#N}/eq/2] -->
<abbr title="Tuesday">&#12939;</abbr>
・・・

a-blog cmsのIFブロックは、エントリーの基本情報の日付は条件分岐で判定できますが、カスタムフィールドの値を校正オプションで変換したあとの日付はできないようなのです。

できます。失礼いたしました。

<!-- BEGIN_IF [{entry_sample_date}[date('N')]/eq/1] -->
<abbr title="Monday">&#12938;</abbr>
<!-- ELSE_IF [{entry_sample_date}[date('N')]/eq/2] -->
<abbr title="Tuesday">&#12939;</abbr>
・・・

さすがにちょっと悩みましたが、先月の合宿のハンズオンでやった、SetRenderedの利用が参考になりました。

カスタムユニットを動的化してみよう | 2019春合宿 | ハンズオン | a-blog cms developer
https://developer.a-blogcms.jp/hands-on/camp2019spring/entry-3132.html

解決方法

最終的に、以下のように構築して解決しました。これであれば日付でもカスタムフィールドでも対応できます。

1. 曜日用のテンプレートを作成する

vars_week.html」というテンプレートをテーマ内に作成し、以下の通り記述します。それぞれの変数名は「label_week_(数字)」で、数字は月曜日から日曜日まで、1〜7とします。

<!-- BEGIN_SetRendered id="label_week_1" --><abbr title="Monday">&#12938;</abbr><!-- END_SetRendered -->
<!-- BEGIN_SetRendered id="label_week_2" --><abbr title="Tuesday">&#12939;</abbr><!-- END_SetRendered -->
<!-- BEGIN_SetRendered id="label_week_3" --><abbr title="Wednesday">&#12940;</abbr><!-- END_SetRendered -->
<!-- BEGIN_SetRendered id="label_week_4" --><abbr title="Thursday">&#12941;</abbr><!-- END_SetRendered -->
<!-- BEGIN_SetRendered id="label_week_5" --><abbr title="Friday">&#12942;</abbr><!-- END_SetRendered -->
<!-- BEGIN_SetRendered id="label_week_6" --><abbr title="Saturday">&#12943;</abbr><!-- END_SetRendered -->
<!-- BEGIN_SetRendered id="label_week_7" --><abbr title="Sunday">&#12944;</abbr><!-- END_SetRendered -->

2. テンプレートを読み込む

曜日を使用する可能性があるテンプレートの冒頭で、この変数群テンプレートを読み込みます。

@include("/vars_week.html")

3. 変数を呼び出す

通常のエントリーの日付であれば以下のように記述します。

<!-- GET_Rendered id="label_week_{date#N}" trim="1" -->

Y-m-d形式のカスタムフィールドで、フィールド名が「entry_sample_date」であれば以下のように記述します。

<!-- GET_Rendered id="label_week_{entry_sample_date}[date('N')]" trim="1" -->

補足:校正オプションの自作

今回はやりませんでしたが、a-blog cmsは校正オプションを自作できますから
「Y-m-d形式の文字列を渡すと、先述のWordPressの場合の処理を通して、丸囲み漢字を返す」
という校正オプションを作ってしまう手もあります。

ただし、拡張を自作する場合は将来のバージョンアップやサーバー移転の際に漏れが出ないよう注意が必要です。

まとめ

こうして、丸囲み曜日を文書的にもシステム的にも問題なく表示できるようになりました。今回はたまたま丸囲み曜日でしたが、「弥生」とか「神無月」のような日本の古い月表記、a-blog cmsがサポートしていない言語の曜日表記にも使えますね。

なお、今回の場合、解決までに30分程度だったので問題なかったですが、時間がかかりすぎるようならカッコ囲みにさせてもらうなどの相談をしたほうが良いと思います。どのくらいかかりそうか、詰まったときに解決のヒントになりそうな引き出しがどのくらいで出てくるかで、そのあたりのバランスを考えています。

a-blog cms Traning Campのハンズオンは、毎回参考になることが多いので助かってます。アーカイブがあるのでぜひ見てみてくださいね。

https://developer.a-blogcms.jp/hands-on/


投稿者名 うぇびん 投稿日時 2019年06月30日 | Permalink

a-blog cms Training Camp 2019 Springに参加しました

2019年5月17日・18日の二日間、今年も半年に一度の「a-blog cms Training Camp 2019 Spring」に参加してきました。

https://ablogcms.doorkeeper.jp/events/87478/

前回は東京での開催となりましたが、今年の春はいつもの国際センターとベースキャンプ名古屋が会場です。
参加するともらえる、公式Tシャツも新しくなったので早速二日目に着ました。

一週間遅れになりましたが、イベントの主な内容と、最近のa-blog cmsコミュニティの動向をレポートします。


a-blog cms awards 2019授賞式



今回のCampの最大の見どころは「a-blog cms awards 2019」の結果発表でした。
a-blog cmsの公開事例をレポートも含め募集する、という、これまでにない本格的な公募企画です。a-blog cmsに限らず、CMSの構築を仕事にしている方なら参考になる事例集サイトにもなりました。ぜひ、サイトを見てみてください。

https://www.a-blogcms.jp/awards/

受賞した4サイトの雑感としては以下です。

影響?

この企画があった影響なのか、イベントの「ユーザー発表」の内容がいつもと大きく変わりました。
いつもは最新事例の紹介が中心ですが、新しい技術を試した実験的なレポートや、a-blog cmsを使い始めて三ヶ月の感想など、未来を見ている発表が多かったです。こんな事ができるのか…!という驚きも多く、活気があるCampになったと感じます。

リーグラフィさん


写真:水越祐介(株式会社リーグラフィ)

リーグラフィの水越さん

私は「いえズーム」で応募しましたが見事に落選しました。全力でレポートを書いただけに悔しくて商品のiPad Proを自腹で買ってしまったくらいです。

https://www.a-blogcms.jp/awards/case/iezoom.html

ですが、同じ札幌のリーグラフィさんがデザイン賞を受賞したのはとてもうれしいことでした。
リーグラフィの水越さんと平澤さんは、CSS Nite in Sapporoのサイトを共同運営していることもあり、だいぶ前からa-blog cmsの勉強会や協業を通して情報交換をしています。

今回、リーグラフィさんがawardsにたくさん素晴らしい事例を応募したので、いろいろな事情で勉強会の維持が難しい北海道のウェブ業界でも、検索などを通して注目してもらえるだろう、と願っています。

すずきカレーさん

ユーザビリティ賞を受賞した「リフォームのヤマハナ」を制作したのは愛知県の制作会社、ルーコの鈴木(すずきカレー)さんです。
汎用テーマを使用しているので一見オーソドックスですが、その裏側はCMS構築をしている人なら驚くような気配りにあふれています。「a-blog cmsは、PHPを書かずに高度な管理画面のカスタマイズが可能である」という事例でもあります。

鈴木さんは、かなりの古参ユーザーです。a-blog cmsに関する有用な記事を多数公開し、フォーラムでの投稿数もダントツで多いです。…が、非常に謙虚な人で、いつも申し訳なさそうにしていて、目立とうとしません。
先日、鈴木さんのインタビューが公開されましたが、やっぱり自分のことを「パワー控えめ」と言っています。awards受賞で、すずきカレーさんがもっと注目されればいいなあと思っています。

「 a-blog cms がクライアントの架け橋に。」”パワー控えめ”でも確かなスキルと信頼関係を築ける | ユーザーインタビュー

ユーザー発表の感想

非常に多くの発表があったので、一部の感想のみ書きます。すみません。

Ver.2.10について(アップルップル伊藤さん)

a-blog cmsは、アップデートが活発なCMSです。伊藤さんによる最新バージョンの紹介を毎回楽しみにしています。   2.9系までは新機能の追加が多かったのですが、2.10は根幹に関わる既存機能の見直しが行われました。

  • メディア機能の拡張
  • 管理画面スタイルシートの改良
  • サブカテゴリーの追加
  • コンフィグセットの追加(コンフィグの使い回しが可能に)

私は既にいくつかのサイトを2.10にアップデートしていますが、これだけの変更をして、テーマへの影響が最小限だったのがすごいです。

メディア機能は、WordPressと遜色ない機能になりました。伊藤さんのスライドを抜粋すると以下のとおりです。

  • 画像・ファイルの一元管理
  • メディア機能画面で画像の編集が可能になった
  • トリミングの際に被写体を指定できる
  • SVGに対応
  • ファイルに公開ステータスを追加
  • メディアを使うMedia_Bannerモジュールの追加

ただし、既存の画像ユニットからメディアユニットへの移行は工数がかかるし、両方を混在させると混乱のもとになるので、必ずしも採用しなくても良い、新規案件ならアリかも、といった話をされていました。

ここぞというときに使えるCSVインポート(ヘルツ筒井さん)

筒井さんの発表は、a-blog cmsのCSVインポートの事例と、活用する利点についてでした。
a-blog cmsはCSVインポート機能を標準で搭載しています。もちろん、プラグインは不要です!カスタムフィールドはもちろん、テキストやマークダウンであれば、ユニットとして移行することもできます。

他のCMSで運用されていた、コンテンツが多いサイトの移行の際は、CSVインポートが活躍します。また、新規追加だけでなく更新も可能なので、カスタムフィールドをスプレッドシートで編集して一気に書き換えるということもできます。

カスタムフィールドのデータを表敬式でPDFに書き出す方法(SUZULABO太田さん)

まったく知らなかったのですが、テキスト形式でデータを送ると、クライアントサイドでPDFを生成するスクリプトがあるのだそうです。

クライアントサイドでPDFを生成できる「pdfmake」を使ってみる | Tips Note by TAM

この「pdfmake」のデータをa-blog cmsのカスタムフィールドで生成して、表形式のPDFにして返すという事例の発表でした。
複雑な会員情報や食品のアレルギー情報の提供などをするコンテンツに大いに使えそうな技術で、久しぶりに何か理由をつけて実装してみたくなる発表でした。

a-blog cmsの初心者向けコンテンツを整備してる話(アップルップル井斉さん)

開発元の一番若い社員さんは、二年目の井斉さんと菅原さんです。今回は井斉さんの発表について書こうと思います。

井斉さんはこの一年間、a-blog cms関連の初心者が見るコンテンツの整備を進めていました。アップルップルに入社して、自分が学習をはじめたときに、チュートリアルのページ構成がわかりにくかったことがきっかけだったそうです。

プログラミング的思考に慣れていたり、他のCMSで豊富な構築経験があると、ちょっとくらい、文章の流れがずれていても理解できるようになります。また、書く側も反復学習とか文章の構造にに視点をおいて書くようになります。
ですが、そういう補完ができない初心者には、初心者向けの文書構造を考える必要があるのです。そういった、初心者の目線をまだ覚えている人にしかできない施策を説明されていました。

製品紹介動画は、すべてAdobe XDのアニメーションで作ったもので、ナレーションも井斉さん自身が声を当てている力作です。

もうひとりの菅原さんの発表も、すずきカレーさんの管理画面カスタマイズの基礎を解説した内容なので、a-blog cmsがこれからな人は見てほしいです。

私の1年間とa-blog cmsだからできる簡単UI対応 - Speaker Deck

グループワーク「a-blog cms川柳」

Campでは、毎回適当に班決めをして行う、グループワークがあります。昨年春はクイズ、昨年秋はかるた大会で、今年はどうなるのかと思ったら「川柳」でした。

限られた文字数で意味が通る文章にして、かつ、ウケを狙うというのはけっこう難しいです。私と、大阪のエバンジェリストの坂本さんがいる班ではこうなりました。3つのうち2つが内輪ネタです。

田村しか 使っていない レイアウト
だけだと、ワクグミの田村さんをdisっているようにしか見えませんが、レイアウト機能は新規作成の工数が高すぎて、頻繁に使用している田村さんしか有効活用できていないので、他のCMSのウィジェットのような、もっとシンプルな機能にしてほしいという要望が込められています。
私個人は、サイトの根幹に関わる設定が、エクスポートしにくいデータベース依存になってしまうという懸念もあります。

内輪ネタって、コミュニティの信頼関係を伝えるものでもありますが、躊躇います。初心者が多いWordPressコミュニティでは、よく「内輪ネタが多すぎてひく」という感想があって悩んだりしていると聞きます。私と坂本さんは、同じ班のはじめて参加した人たちに言葉の整理をしてもらったり、川柳に出てきた人のことを紹介したりしていました。

なお優勝は「その機能 有償ならば できますよ?」でした…
大規模案件あるあるですね…

私にとってのCamp


川邉さんの描く、謎のユルいイラストのファンです


今回は、関わっている人たちを軸にCampのレポートを書きました。ああまた長くなった。4時間もかかっています。

私が半年に一度、遠方から参加している理由は、もちろん最新情報を得るためでもありますが、私の精神的健康のためです。私が日々自宅から配信していることが、他のユーザーに届いていることを確認するのが目的になりつつあるのです。

金沢の15VISIONのデザイナー、川邉さんはウェブ制作だけでなく、商業漫画、イラスト、動画、最近はPythonにまで手を出しはじめている人です。
ですが、私について「うぇびんさんは、金沢でa-blog cmsの勉強会があることをTwitterで教えてくれて、それがきっかけでa-blog cmsに出会って、15VISIONに入った」と言います。川邉さんの最近のスキルを見るにつけ恐縮してしまいます。

それでも、こうして私が札幌でコツコツa-blog cmsの情報共有を続けていることが、日本の誰かに届いているというのはうれしくもありますし、今後も続けると思います。今回も「Twitterでa-blog cms関係のツイートを見ていたら悟空みたいにワクワクしてきた!」と言って参加された方がいました。

a-blog cmsはもうすぐ、リリース10年になります。既に国内のCMSでは屈指の機能とコミュニティを有している、安定したCMSになりました。
興味がありましたら次は8月くらいになりそうですが、札幌のCMS Mix「a-blog cmsの回」に来てください。
次回のa-blog cms Traning Campは11月ですよ!


投稿者名 うぇびん 投稿日時 2019年05月25日 | Permalink

クイズメーカーでWordPressとMTとa-blog cmsのクイズを作った感想


今日からウェビングスタジオの2019年の営業開始です。宜しくお願いいたします。

今年もいろいろとCMSで変わったことをするつもりですが、正月休みにさっそくやっていました。
簡単にクイズを作れるサービス「クイズメーカー」で、WordPressとMovable Typeとa-blog cmsの横断知識がないと満点を取れないというクイズを作って公開しています。

すべての知識がなくても、どれかが詳しければ6割は正解できるようにしています。興味がある方は挑戦してみてください。

https://quiz-maker.site/quiz/play/JtfVPB20190102113456

裏付けを取る

軽い気持ちで作り始めたものの、10問揃うのには丸二日かかりました。問題が正しいかの裏付けを取らなくてはならなかったからです。

例えば4問目の「以下のうち、初期状態でダッシュボードに『最近の投稿』が表示されているCMSはどれか。」はすべてのCMSの最新バージョンのダッシュボードをチェックしなくてはいけませんでした。自社開発のa-blog cmsは、しれっと機能が増えていたりするので…

それを逆利用したひっかけ問題もあります。

思ったより正解率が低い

横断知識が必要なものの、すべて選択方式にするなど、個人的には割と簡単にしたつもりでした…が、正解率は現時点で40%くらいです。ううむ、問題文が分かりづらかったのだろうか。正直すまんかった。

WordPressの基本用語を問う1問目の回答率が、これを書いている時点で33%でした。
私は勉強会で、初心者の人には用語は無理に覚えなくていいと話しています。しかし実務で頻繁に使うようになり、テクニカルディレクションをする場合は話は別です。基本用語の正確な使用は、資料作成の際に、読み手=更新担当者の理解度に直結します。MTユーザーが多かったのかな?と思いつつも、この結果はちょっと残念です。

全く同じ機能は少ない

横断知識を問う問題を作りはじめた段階で、CMS間で機能の概要は同じでも、完全に同じとは限らないということに気付いてけっこう悩みました。

特にテンプレートタグは、細かいオプションが異なるとか、適用範囲が異なるとかの障害が多く、思ったより問題を作ることができませんでした。「これはどのCMSのタグ?」なんて簡単すぎますし…

10問目の問題文に「各CMSの記事中には、常に一点の画像もしくはアイキャッチが存在する前提とする。また、属性は無視する。」という冗長な前提が書いてあるのもそのためです。WordPressのthe_post_thumbnail関数は属性も出力するためです。
更に細かいことを言うと、10問目のMovable Typeは、このタグだけでは期待した動作にはなりません。前後を「記事中にアップロードされたアセットを呼び出す」ブロックタグで囲む必要があります。ここで間違えて「ファンクションタグ」と書こうとしてMovable Typeの公式ドキュメントを調べに行ったのは内緒です。

「クイズを作る」というブレインストーミング

このような高難度クイズになってしまいましたが、せっかくなのでもっとたくさんの人にやってみてほしいです。

クイズを作りながら「CMS間の横断知識を書いたサイト」を作るための構想を練っていました。これは数年前から考えていたことで、「○○をするには△△のCMSでどのようにすればよいか」というのをまとめたいのです。クイズのような軽いものは、ちょうどいいブレストになるなあと思いました。

何かをしたことをきっかけに、新しいアイディアが芋づる式に出てくるかもしれません。迷いも多いですが、私もいろいろ手を動かしてみようとおもいます。


投稿者名 うぇびん 投稿日時 2019年01月07日 | Permalink