• Vue.js と REST API で WordPress のテーマを作ってます。

    Vue.js と REST API で WordPress のテーマを作ってます。

    Angular2 + WP API で作られた WordPress のテーマ、Wallace WordPress Theme というプロジェクトがありましたが、それにならって、WP API ベースの WordPress テーマを作っていますVue.js の勉強もしたかったので、Vue.js + Vuex + Vue Router という作りになっています。作っている最中に、Universal Router の方が良いなぁって思いました。

    Github:  torounit/Aetherium: A next-generation WordPress theme built with the Rest API and Vue.js .

    Aetherium で エーテリウム とか エセリウム って読んでます。

    デモ

    Aetherium Demo です。テーマユニットテストのデータを放り込んであります。

    機能

    Service Worker を用いてオフラインサポートしてます。これがやりたくて SPA みたいなことわざわざテーマ上でやっています。Workbox つかってます。Service Worker やキャッシュはログイン時には削除されます。

    また下書きなどのプレビューなども行えます。

    パーマリンク設定を「基本」以外に設定しないと動きません。自由なパーマリンク設定にも対応しているはずです。

    所感

    イベントレポート:WordPress Meetup Tokyo #34 – AMA Session with Joe Hoyle and Bryce Adams – Capital P の記事でもありましたが、WordPress テーマとして、SPAを作るのはいろいろトリッキーです。WordPress の URLのパラメーター全てに対応したりとかするのは難しいですね。add_rewrite_rule とかは考えないことにしてます。

    また、テンプレートタグと呼ばれている関数と同じようなモノを再実装する必要があります。また、option 等 WP API から取得出来ない情報がいっぱいあるので、wp_script_add_data でそういった情報を大量にJS側に渡しています。

    いろいろ面倒ごとも多いですが、サポートする機能をある程度限定すれば、テーマでというのも出来るかなとは思いました。

    メリットとしては、プレビューなど、WordPress としての使い勝手を変えずに、SPA にしたり、PWA 対応をしたり出来ることですね。Smart PWA という WordPress にオフラインサポートを追加するプラグインをリリースしていたりはしますが、HTML を毎回キャッシュするのはあんまり効率も良くないですし、テーマの変更等があったときに、ページごとにデザインが違ったり等の問題が発生します。SPAの場合はHTMLは変わらないので、REST API の戻り値をキャッシュすればコンテンツのキャッシュが出来るのは容量を食い潰さなくて良いですね。

    正直今のところ趣味以外の理由を見つけられていませんが、細々と開発していこうかなと思います。フィードバックスター待ってます。

  • WordCamp Osaka 2018 でローカルコミュニティの話をしました。

    WordCamp Osaka 2018 でローカルコミュニティの話をしました。

    Photo by NExT-Season

    2017年10月7日の JAWS-UG 仙台 秋祭り – Publishing on the AWS – でローカルコミュニティの話をさせていただく機会がありました。

    それを下敷きにいろいろ具体的な取り組みとか最近の成功と失敗なども含めて、WordBench 長野の取り組みと、コミュニティづくりについて考えたこと。というテーマでお話しさせていただきました。

    WordPress のコミュニティに限らない話が出来るといいなーと思いながら登壇内容を作ったので、

    なのでこういったリアクションを頂けたのは嬉しかったです。

    当日話しきれなかったこととか

    月に1回でなにかをするということ

    別にペースはそれぞれで良いとは思うのですが、ちょっと大変だなーくらいのペースでやったからこその気付きかなと。やっぱり期間が空いてしまうと大がかりなモノをやりがちというか、大変だから数を減らそうというより、大変だから気楽にやれる形を探そうとしたことでいろんな発見があったなと感じます。

    司会が1人と集まれる場所があればそれはもうイベントなので、後の要素は全ておまけってくらいの気持ちでやるのもありなのかなと。

    自分や家族の予定や、会場などの都合でなかなか難しいんですが、準備にかかる労力を減らすことで頻度が増やせるのであればトライしてみても良いのかなと。「前回失敗したから次はこうしてみようかな」みたいなかんじで気楽にPDCAを回せる気はしてます。

    休憩時間でのコミュニケーション

    今のところ15分程度の休憩を、最初の会の説明や参加者の自己紹介の後、セッションの間に取ってます。

    1. 開会の挨拶・説明 (10分)
    2. 自己紹介タイム (15分)
    3. 休憩 (15分)
    4. セッション1 (30分)
    5. 休憩 (15分)
    6. セッション2 (30分)
    7. 休憩 (15分)
    8. セッション3 (30分)
    9. 閉会

    みたいなかんじでやってます。

    PA等の手伝いをしていたときに教わったことなのですが、人って静かな場所だとすっごい話しにくいんですよね。結婚式とかでもご歓談の時間で音楽が流れると思いますが、あんな感じで音があるといいんですよね。

    ただし、音楽の著作権やJASRACへの申請などいろいろ考えないといけないことはあります。そこら辺は会場のひとに聞いてみて下さい。市の施設や会社のオフィスの場合JASRACと契約してることは希だと思いますので、そのときは、radiko.jp でFMとかを流すのが良いのかなと。

    また、自己紹介の後の休憩とかのアクションで空気が決まるのかなと。ぼーっとしてても暇なので自分も参加者の人に話しかけに行ったりします。司会が参加者に交じって話しに行くことは、「話して良い時間なんだ」というメッセージになるので、意識的にやっています。登壇者が接続確認とかであたふたしてる時間とかちょうど良いとかなと。2回目以降とかは割と適当にしてます。勝手に話してくれるので。1人で来た人が暇そうにしていることがあったりするので、余裕があるときはその人に「なんで来たのー?」みたいな話をしにいったりすることもあります。

    初回の休憩の後はすぐ静かになるんですが、3回目とかだとなかなか静かになりません。そういうのもみていて楽しいなと感じる今日この頃です。なので、だいたい時間が押してしまうので30分〜1時間程度は余裕のあるスケジュールで告知するのが良いのかなと。このあとにお子さんを迎えに行く人も居るかもしれませんし。とりあえず時間があったら雑に座談会でもするかー位のことは考えてます。閉会の前に座談会 (30分) って枠を作っておくと良いかもしれません。

    子連れの人への対応

    子連れで来てくれる人が居たり、お子さんが生まれた友人がここ最近増えたのでよく考えるようになりました。

    赤ちゃんでも何でも連れてきて良いよーとは質問されたら答えています。子連れでも来てくれるのは嬉しいですし、子どもが居るから行けないってなっちゃうとなかなか会う機会が減っちゃうし、それは寂しいなーと。

    ただ、例えばお子さんが泣いてしまったときとか僕何も出来ないです。そういうときに皆が寛容であるとかそれも含めて楽しむ雰囲気作りとかは大事だなと思っていますがそこら辺はまだまだ試行錯誤です。また、例えば授乳室とか母子室みたいなのを用意するってのはなかなか難しいです。

    そもそも自分にそういった経験が全くないのでどうしたら良いのか正直全く解らないです。知識も資格も無いですし、何かあったときに責任がとれる訳ではないので、イベントの告知等で「子連れOK」とは書けないなーというのが率直な気持ち。なのでどうしたらいいの?どうしたら参加しやすい?ってのは聞きたいなぁと。自分だっていつかそういう立場になるかもしれませんし。たぶん人それぞれ全然違うんでしょうし、お子さんの年齢などで答えが違ってくるんだと思います。こうすれば良いよ!なんてシンプルな結論は無さそうですがいろいろトライアンドエラーが出来ればいいのかなと。

    今後とか

    思いとか目的とかは当然一番最初に考えることでそれは大切なのですが、それをどうやって伝えるのか、どうしたら伝わるのかという視点も大事だなーと。具体的な取り組みとしてその場にどう実装していくのかというのは共有していきたいなと思ってます。会場・地域性・キャラクターなどのパラメーターの影響も大きいですし、再現性の無い話がたぶん沢山ありそうなので、いろんな知見とか経験を持ち寄って話せれば良いのかなと。

    思いやりとかそういうのも大事だなとは当然思うのですが、ちょっとした取り組みで大きな変化があったりするのが面白いです。面倒くさいかもしれませんけど見方を変えてみると面白さが転がってるんだなぁと思います。OSSと同じように不具合とか改善できる部分はずーっと存在してるので、考え方は似てるんじゃないかなと思ったりしてます。WordPress のコミュニティ以外の話でも通じる話は多いと思うので、いろいろ考えていきたいなぁと思う今日この頃です。

  • WordBench 長野と自分とコミュニティと。

    こういう自分の考えみたいなのを書くのは苦手というか、小学校とかで感想文を書かされたときは、いつも放課後過ぎても書き出せず1時間以上居残りをさせられていた人間なので、まとまりのない文章だと思いますがご勘弁ください。

    WordPress のコミュニティや、そもそもITのコミュニティに参加するきっかけが WordBench だったという人も多いと思いますが、地方住まいの僕には WordCamp Tokyo 2011 であり、Custom Post Type Permalinks といったプラグイン開発でした。3年前までは、WordBench 関係のイベントより、WordCamp への参加の方が多かったですし。

    それをきっかけに、翌年も WordCamp Tokyo 2012 も参加しました。そこで、ブース出展されていた、ファーストエレメントのみやざわさんと出会い、WordBench 長野第1回勉強会を開催したのが僕と WordBench とのファーストコンタクトだったと記憶しています。そこから挫折などもいろいろありながら1年や2年に一度のようなペースで紆余曲折いろいろありながらやってきたなぁと。

    その頃から思い起こせば、WordBench や WordPress のイベントに興味を持ってくれる人達の属性もずいぶん変わったなぁと思う今日この頃です。無料で情報発信できるツールもここ数年でたくさんありますし、WordPress が一番手軽なツールだった時代ではないんだなーと。Instagram とか Medium とか note とか Qiita とかほんと凄い気楽ですし。

    「WordBench」とは何なのかというのはいろいろ思うところはありますが、wordbench.org という SNS であったり、それに関わる人が作るコミュニティだったり、イベントの名前であったり。

    僕自身は、「WordPress に関わる、興味がある人が集まる場」という理解をしていますが、WordPress の管理画面のイベント情報を見て、WordBench 長野のイベントに来てくれる人には、WordBench = イベントなんだろうなーと。

    毎回、前説的な時間を作ってコミュニティですよーこういうSNSありますよーみたいな話はしてますが、辞書に載っている言葉じゃないので各自思い思いの理解をしているのが現状なんじゃないでしょうか。

    WordBench 長野と僕の関わりの歴史は、先日の WordCamp Osaka 2018 でお話しさせていただいたので、スライドの方をご覧下さい。

    WordBench サービス終了によせて

    https://wordbench.org/2018/06/14/wordbench-is-closing/

    先日、リリースがありましたが、最近 WordBench 長野 でイベントを開催する際にお世話になっているコワーキングの方や、そこでよく一緒になる Drupal 使いの人などからいろいろご心配いただきました。WordPress Meetup とか、別のイベントでまたちょっとご相談しますという話をしたら、「名前が変わるだけでしょ?」と。そーではないんだけど、まぁ外から見たらそーだよなーと。WordPress のローカルなコミュニティだということは変わらないはずですし。

    WordBench や WordPress Meetup や近所の WordPress のイベントに参加する人は「WordPressの話を誰かとしたい」「WordPress仲閒と交流したい」という目的で参加しているのだと、WordBench 長野でいろんな人と交流する中で僕はそう感じている次第です。なので、参加される人にとってはただ名前が変わったと言うことでしかないのでしょう。自分が参加しているWordPress のローカルなコミュニティに、WordBench 長野だとか、WordPress Meetup だとかの名前がついているだけというか。

    とりあえず、長野は相談しながら、WordPress Meetup への移行の準備を進めてみようかなというところです。移行をする中で、実際に動かしていく中でいろいろ問題点など出てきたらフィードバックをしていければいいのかなと。せっかくの機会ですし、グローバルのコミュニティのチームとかがどんなことを考えているのかを、知る機会でもありますし。出来れば車輪の再発明はしたくないですし。そういうノウハウの集約的なことをする場が今までなかったので、そういう意味でもいいきっかけだなと。

    WordBench 長崎と私 – モンキーレンチ ということでキタジマさんが書いていますが、

    再始動させて、運営者 / 参加者という壁をなるべくなくして、ということをやっていた状況で、Meetup へ移行するハードルというのは結構高いなと思っていて、僕が主導して長崎も Meetup に移行するぞ!とやると、これまで以上に WordBench 長崎(今後名称かわるけど便宜上)が「僕のもの感」がでるというか。や、もちろん私物でないことは当たり前にわかってて、長崎という地方で長崎の人に見られたときにどう見えるかという話です。誰かが長崎で WordBench 長崎やりたい!ってなったときに、僕に聞いてみないと、となる気がするんですよね。Meetup への移行まで主導すると特に。ただの思いこみかもしれませんが、でもそうなっちゃうと嫌だなと。そうならないように再始動させていろいろ考えてやっていたので。

    WordBench 長崎と私 – モンキーレンチ

    ようやくキタジマさんがいうところの「僕のもの感」が減りだしたなーと WordBench 長野では感じるこの頃です。まだいろいろ足りないなーと思いつつ。

    キタジマさんの懸念には、誰かが 長野で Meetup やりたい!ってなったときに、そこら辺をうまくハンドリングしてくれる仕組みが既にあるようで、むしろもっと気楽になるんじゃないかなと。6ヶ月以上イベントを主催していない場合 WordPress Meetup のグループではなくなるようですし。いろいろと解りやすくなって良いんじゃ無いかなとは思ってます。(参照:When a Group Leaves the Chapter Program – Make WordPress Communities

    とりあえず、いろんな人に相談しつつ、最近参加してくれるようになった人達を混乱させないような移行の仕方、その形を探って行ければと。

    コミュニティの力で大きくなったという WordPress であり、そんなモノだからこそ、僕自身が WordPress に興味があるウチはそういう活動に関わっていきたいなーとぼんやりおもってます。

    コミュニティのとコミュニケーションの語源は同じだという話を WordCamp Osaka でさせてもらいました。コミュニティってコミュニケーションをする場なんだと思います。

    そんな話を人前でさせてもらっておいて言うのもなんですが、いわゆる「コミュ障」という側の人間だよなーと自分自身のことは認識していて。友人にもよく言われますし。オンラインもオフラインも正直得意じゃないですし、日本語を書くよりプログラムとか数学とかの読み書きとかそっちの方が得意だし性に合ってるなーと思います。

    言語というのも考えを伝えるツールとしてはなかなか不便だなーと。言語化するのってめちゃくちゃ大変なんですが共通のインターフェースなんで頑張って使うかーという感じです。思ってることの10%くらいが伝わればまぁ上出来かなと。

    そんなでもまず何かしら情報を発信しないと伝わりようもないですし、言いたいことが正しく伝わってる気もしないので、頑張って言葉を尽くさないといけないなと。思いがあるなら下手なりに頑張って書かないとなと。キャッチボールもドッジボールも下手な人間ですが。それでもコミュニケーションをへの努力はしていかないとはじまらないなーと。コミュニティですし。

    そんなことを思いながら駄文をダラダラと書いています。こういうのを読むのも書くのもすっごい面倒くさいんですけど、たぶんそういう面倒くささがコミュニケーションなのではないかなと。

    まぁ面倒くさいと散々言ってますが、そういうのが実はなんだかんだ好きだからコミュニティに参加したりしてるんだと思います。そんなこと言ってる自分自身が一番面倒くさいんですけど、しょうがないのでそんな自分とあきらめて付き合って行こうと思います。

    ホントにまとまりの無い文章でびっくりしてますが、ポエムみたいなものとしてご笑読いただければと。

  • 100% GPLライセンスについて

    WordPress のテーマやプラグインをダウンロードしたり、WordBench や WordCamp などのイベントに参加したりするとたびたび言及される 100% GPL という言葉があります。WordPress 以外では聞かない言葉だと思うのでざっくり要点だけ。

    GPL ライセンス

    オープンソースソフトウェアで採用されるライセンスのひとつです。使用許諾条件などと訳されたりします。ソフトウェアを使う上で守るべき約束事です

    4/19追記:「利用許諾条件などと訳します。使用許諾条件と違い、ソフトウェアを利用(再頒布)する際の許諾条件です。」とのことです。

    WordPress もこのライセンスを採用しています

    GPL ライセンスの場合はユーザーに

    • どんな目的に対しても、プログラムを望むままに実行する自由 (第零の自由)。
    • プログラムがどのように動作しているか研究し、必要に応じて改造する自由 (第一の自由)。
    • 身近な人々を助けられるよう、コピーを再配布する自由 (第二の自由)。
    • プログラムを改良し、改良点を公開し、それによってコミュニティ全体が恩恵を受けられるようにする自由 (第三の自由)。

    を許諾します。この自由を保障する為に、

    • 改変物・派生物にさらなる制限を設けてはいけない。

    という規約があるんですね。つまりGPLライセンスが適用されたソフトウェアになります。

    あくまでソフトウェアに関するモノであって、WordPress で書かれた記事のライセンスが自動的にGPLになるとかそういうことは無いです。

    そのほか、無保証であること、著作権表示などのきまりごとはありますが、詳しい話は GNUオペレーティング・システムと自由ソフトウェア運動 を見るのが良いかと思います。

    フリーソフトってわけでは無いんですね。係争事例とかもあったりするようです。

    好き勝手に使えるわけでも無いんですが、オープンソースのライセンスというのはユーザーが自由に使えたり、改造したりすることを保障する為にこのようなルールがあるんですね。

    自由を保障するためのルールということです。

    100% GPL とは

    100% GPL について | WordCamp Tokyo 2014

    100% GPL ってなんだって話なんですが、要はテーマとかプラグインなどに含まれる全てのファイルをGPLに適合するようにしましょうという話です。

    PHPファイル等は、WordPress が提供する関数を使ったりする場合、それは派生物と見なされるので、GPL ライセンスが適用されるのですが、CSS や JavaScript、画像やフォントなどは独立したものなので、GPLライセンスにしなければならないということはありません。( WordPressのデフォルトテーマを改造した場合、CSS などをコピペしたりするならばそれは当然GPLになります。)

    Bootstrap などの CSS フレームワークをテーマに同梱する場合などを考えるとわかりやすいのではないでしょうか。WordPressとは独立したプロダクトですよね。MITライセンスなので同梱することに問題は無いわけですが。

    なので、テーマやプラグインに含まれる CSSや JavaScript や画像等に対して、GPLより強い制限を設けることも可能なわけです。その場合自由に使えないじゃ無いかという話が出てしまうわけです。例えばテーマ同梱されている CSS 商用利用不可なライセンスならば、そのテーマを用いて会社のウェブサイトを作ったりできないわけです。

    Snow Monkey の作者のキタジマさんの記事が詳しいです。非100%GPL有料テーマからの移行キャンペーンをおこないます! – Snow Monkey

    そんなわけで、WordPress はコミュニティのルールとして、100% GPL を求めているわけです。WordPress.org に掲載されるプラグインテーマはこれに準拠する必要がありますし、WordBench 等の WordPress コミュニティ運営イベントでは、100% GPL に適合しない WordPress プラグインやテーマを配布または宣伝する人物をスピーカーにすることはできません。スポンサーなども出来ないです。

    100% GPL Vetting Checklist – Make WordPress Communities

    面倒くさいなと思われるかもしれないんですが、WordPress の管理画面の /wp-admin/freedoms.php に「自由について」と言うコンテンツがありまして。

    WordPress はフリーかつオープンソースのソフトウェアで、世界中のボランティアの開発者たちの分散型コミュニティによってつくられています。WordPress はそのライセンス、つまり GPL のおかげですばらしい、世界観が変わるような権利を備えています。

    こういった哲学に基づいて WordPress は作られてるので、わざわざ 100% GPL 等といった話があるわけです。

    別に 100% GPL じゃなくても訴えられるということはありませんが、コミュニティとしては 100% GPL を採用している人やプロダクトを応援したいということです。

    色んな考え方は有ると思いますし採用するもしないも自由だと思いますが、個人としては、WordPress にはお世話になっていますし、コミュニティ関わっていきたいので、大切なことだなと思う今日この頃です。

    参考

  • WordBench Nagano Special 2018 !!! を開催します。#wbnagano

    WordBench Nagano Special 2018 !!! を開催します。#wbnagano

    去年の今頃は、WordBench Nagano vol.6 "WBNagano Special!!!" ということで、沢山の方にお越し頂きました。

    今年も、WordBench Nagano Special 2018 !!! とタイトルも微妙に変更して開催します。県外の方などもお招きして楽しい会になるんじゃないかなとおもいます。

    参加登録は Connpass のイベントページからどうぞ!

    セッションなど

    こんな感じのセッションを予定しています。

    WordPress のいまとこれから(仮)

    REST API や Gutenberg など、WordPress は進化し続けています。これからの WordPress について一緒に考えてみませんか?

    Kite @ixkaito

    WordCamp Kansai 2015 実行委員長。WordPress コアコントリビューターなど、多くのオープンソースプロジェクトに貢献する一方、Wockerなど、自身でも数多くのオープンソースソフトウェアを開発。

    はじめてのGutenbergブロック開発

    WordPress 5.0 から実装予定の Gutenberg ではオリジナルのブロックを追加する事ができます。 現行エディタで行っていたクイックタグ追加ボタンのような機能をGutenbergでどのように実装するのか?実際に実装してみた感想などをお話します。

    石川栄和 @kurudrive

    株式会社ベクトル 代表取締役。WordPressテーマ「Lightning/BizVektor」開発者。 最近はスプラトゥーン三昧で順調にウエスト・体重共に増幅中。

    超雑記ブログならではの運営の裏側について

    WordPressで超雑記ブログを5年運営しています。「ジャンルは絞る」「覚え易い名称で」などのセオリーをことごとく守っていないけれど、代わりに記事ごとのユーザー環境やリファラがさまざまでおもしろいので、データ解析してご紹介します。ブログを運営してる/したい、という方に楽しんでいただけたら幸いです!

    *you @ateitexe

    非IT企業でWeb担&業務アプリ作ってるプログラマ。WordPressでのブログ歴5年。小学生と保育園児を抱えるお母さん。MSOffice系の書籍を執筆しています。ドラクエ11はいいぞ。

    コンテンツ制作におけるメディアの最適化と品質について

    ばかなひとは言いました「WordPressに大きい画像とか動画アップロードできないんだけど」。 それはWordPressのせいではありません。コンテンツがどう見られているか、メディアをどう表示すべきか考えていないからです。 …というような小咄をします。

    GOUTEN @gouten5010

    WordBench大阪モデレーター。フロントエンドエンジニア。

    通常の登壇ではスベらないことに定評があります

    どうやってるの?案件で確認する要件と見積り

    Webサイト一つ制作するとしても、細々な要件や希望によってかかる時間はそれぞれ違ってきます。要件が決まっている場合は問題なくても、要件が決まっていないこともしばしば。そんな時に、私ならこの項目を確認している!という点と、その時に見積りをどのようにしているというお話をします。

    長谷川 広武(´°ム°`) @h2ham

    HAMWORKSの代表取締役。テクニカルディレクター・フロントエンドエンジニア。

    札幌でデザイナー向けの勉強会「SaCSS」の主催・運営をしています。

    むずかしくないデザインの話

    デザインとはなんでしょうか、なんだと思いますか?わたしにもわかりません。しかし15年ほど「デザイナー」としてやってきたことについてお話しします。異論は認めます。

    角田綾佳 @spicagraph

    フリーランスでデザイナーとイラストレーターをしています。たこ焼きを焼くのが得意です。

    WordPressで困った時にやるべきことと、困らないために備えること

    WPの構築や運用でトラブルが起きた時、まず何をしますか?

    WordBench京都運営してて「こんなのあったんですか!?」って言われることが多かったものを紹介します。

    岡本秀高 @motchi0214

    WordCamp Kyoto 2017 実行委員長。WordBench 京都 モデレーター。

    デジタルキューブのエンジニア。通称太鼓の人。 WordPress日本語フォーラム世話役をひっそりやってます。

    懇親会

    会場内で食事を用意して、懇親会を行う予定です。( 2000円程度 )

    また、懇親会中にライトニングトークを予定しています。登壇したい方はぜひご連絡下さい。

    イベント概要

    日時

    2018年2月3日(土)

    12:30 開場・13:00 スタート。18:00 終了予定です。

    場所

    松本市の縄手通りのコワーキングスペース SWEET WORK さんにて行います。

    駐車場などは近隣の有料駐車場等をご利用下さい。開場のすぐ近くにあります。

    申し込み

    席数に限りがありますので、イベントページより参加登録をお願いします。

    WordBench Nagano Special 2018 !!! – connpass

    ご参加お待ちしてます!

  • 2017年の登壇とか振り返り

    気がついたらあっという間に年末です。ほんと早い。というわけで今年1年をなんとなーく振り返ってみようかなと。

    WordBench 長野を毎月やったり、それ以外にも別のイベントにも登壇させて頂いたりで毎月スライドを作りまくった気がします。

    というわけで、いくつか振り返っていこうかなーと思います。

    WBNagano Special!!!

    僕が、太鼓の人こと、WordBench 京都のモデレーターの岡本さんに深夜のゴールデン街で面倒くさい絡みをしたとかしないとか、そんなことから始まったイベントでした。大勢の参加者さんにお集まり頂き、ほんとに楽しかったです。手伝ってくれたみなさまや、足下の悪い中集まって頂いたみなさまには本当に感謝でいっぱいです。

    振り返ってみるとこのイベントをきっかけにいろんなことが動いたなーと思います。このイベントをきっかけに常連になってくれたり、モデレーターになってくれたり。

    普段 WordCamp 等でしかなかなか話せない人たちとゆっくり話せたり違った一面が見れたのも楽しかったです。

    というわけで来年は、2/3に WordBench Nagano Special 2018 !!! と題してやる予定です。よろしくお願いします !

    長野市で WordBench 長野

    今まで長野市で開催したことが実は一度も無かったんですよね。WordBench長野なのに。まぁ長野県広いので…

    また空気感が違って面白かったです。ジャスティス岡本さんに久々にお会いしていろいろ昔話をきいてみたりコミュニティの話をいろいろ聞いた気がします。

    また来年は何度かやりたいですね。

    WordCamp Kyoto 2017

    セッションチームの元締めみたいなのをやらせてもらいました。皆様にほんとに助けられながら無事つとめを果たすことが出来ました。

    前日にいろいろテンパったりしましたけどそこら辺はまた次回以降に活かして行けたらなぁと思います。

    ライトニングトークを全く聞くことが出来なかったのは唯一の心残り。

    WordBench 男木島

    WordCamp Kyoto が終わった後、そのまま男木島へ。主に西川さんの家の工事?を手伝った思い出。

    https://www.instagram.com/p/BV37cOFDlVa/

    ご飯もめっちゃ美味しかったし楽しかったんです。

    ただ、疲れと日頃の運動不足のせいで男木島散策がなかなか出来なかったのがちょっと残念でした。島という字になぜ山が入っているのかを身体で理解しました。そんなわけでまた来年お邪魔したいなーと。

    SaCSS Special13 

    あのSaCSSで喋る日が来るとは…って思いました。北海道も初めて飛行機も初めてというある意味修学旅行生的気分でした。

    JavaScript の話ってあんまりしたことが無かったですし WordPress じゃない話というのもなかなか無い機会だったのでいろいろと新鮮な体験でした。

    松本空港の離着陸にはまだ慣れません。あれめっちゃ恐い。

    WordCamp Tokyo 2017

    トロハムという謎のユニットを結成して2人で(´ ºムº `)さんと2人で登壇させてもらいました。

    WordBench 長野がきっかけなのかどうかはわかりませんけど、長野で見かけた人がちらほらと。なかなか嬉しいもんです。

    JAWS-UG 仙台 秋祭り – Publishing on the AWS

    仙台のおかんに拉致されました。せっかくの機会ですので、地方のITコミュニティというテーマに焦点を合わせて、WordBench 長野などで日々思ったことや気付いたことをつらつらと。

    懇親会は半分くらいしか覚えてないんですがFacebookでシェアされた動画を見る限り多分楽しんでいたようです。久々にあった友人や後輩や先輩に「あの動画めっちゃ面白い」って言われたときはとにかく恥ずかしかったです。はい。

    WordFes 2017

    SaCSSで一緒に登壇した森田さんに「名古屋って駅はよく通るんですけど降りないんですよねー」って言ったら、「みんなそうやって・・・」みたいなことを言われた(うろ覚え)ので、ちゃんと名古屋も行かねば!ということになりました。

    当日は日頃の行いのせいか、プロジェクターがトラブってしまいましたが、スタッフの皆様のおかげでなんとかやりきれました。

    リベンジというわけでは無いですが、WordFesで話したカスタマイザーの話を、1月13日のWordBench 名古屋でもう少し掘り下げてみようかと思います。

    そういえば、ウイークエンド中部って番組が朝やってましたけど、長野県じゃやってないんですよね。長野県は中部じゃ無いのかーってぼーっと思ってました。

    NSEG に初めて参加した

    長野市を中心に2010年から定期的に開催されているNSEGという勉強会に初めて参加してきました。

    JAWS-UG関西女子会 AWS re:Invent2017 re:cap &機械学習祭り!

    件の動画が好評だったらしくお呼ばれしました。どういうことなんだろう。

    機械学習はまだ囓ってみた程度なのでこれもまたどうしようと頭を抱えた結果、数学の話をしました。

    説明がいまいちピンとこないけどコード見たら理解できたとか、その逆とか、テストを読んだらわかったとかそういう、視点というか攻め方とかを変えてみるとスッと腹に落ちるって経験は皆さんあるんじゃないかなと思います。

    • そういう道具として昔やった数学が使えるかもよ?
    • あの数式を理解すればもっとすんなり理解できるかもよ?
    • 今だったらプログラミングの知識で数学のことが理解できるかも?

    みたいなことが伝わればいいなーっておもいながらしゃべりました。

    もし次があったら端折った部分を話を掘り下げるか、微分積分か、関数(写像)の話とかします!

    まとめ的ななにか

    思い出せばホントに色んなところで喋る機会を頂き、ありがたい1年だったなぁと。

    100回の参加より1回の登壇という記事をKiteさんが書いていましたが、その通りだなと改めて感じました。続けていけば中長期的には何かしらの利益はあるんじゃ無いかなと思う次第です。

    得に地方だと近所にイベントが少なく、遠方のイベントに参加する場合、なかなか良い感じの出費になる場合もあるかと思います。交通費にもれなく宿泊費もついてきたりします。なのでなおのこと、もしイベントなどに参加する際はそういう機会で積極的にトライしてみるのはよいのかなと思います。どーせ出費するのであれば、腹をくくって登壇に積極的に応募してみたほうが、より"お得な買い物" なのでは無いかと。

    なので、もし遠方から参加するを見かけたら易しく接してあげて下さい。タダでさえアウェー感にビビってるはずなので。

    来年もこういう機会は積極的に出て行きたいなと思います。スケジュールと金銭と体力が許す限りは出て行ければなと思いますのでよろしくお願いします。

    また是非こちらに来る際は

  • Customizer API と Selective Refresh を使う。

    Customizer API と Selective Refresh を使う。

    WordPress が最近注力しているカスタマイザーですが、コレをちゃんと使うといろいろ便利なことが出来ます。

    たとえば、バナーを3つ管理するカスタマイザーのセクションを作ってみます。

    functions.php にはこんな感じのコードを書きます。

    /**
     * Customizer Setting for Banner.
     *
     * @param WP_Customize_Manager $wp_customize
     */
    function my_banner_customize_register( WP_Customize_Manager $wp_customize ) {
    
    	$wp_customize->add_panel( 'banners', array(
    		'title' => 'Banners',
    		'priority' => 140,
    	) );
    
    	foreach ( range( 1, 3 ) as $index ) {
    
    		$id = 'banner_' . $index;
    
    		/**
    		 * Add setting section.
    		 */
    		$wp_customize->add_section( $id, array(
    			'title' => sprintf( 'Banner %s', $index ),
    			'panel' => 'banners',
    		) );
    
    		/**
    		 * Set default value for customizer.
    		 */
    		$wp_customize->add_setting( $id, array(
    			'default'   => get_parent_theme_file_uri( '/images/' . $id . '.jpg'  ),
    			'sanitize_callback' => 'esc_url',
    			'transport' => 'postMessage',
    		) );
    
    		/**
    		 * For Selective refresh.
    		 */
    		$wp_customize->selective_refresh->add_partial( $id, array(
    			'selector'            => '#'.$id,
    			'render_callback'     => 'my_banner_render',
    		) );
    
    		/**
    		 * Control form setting.
    		 */
    		$control = new WP_Customize_Image_Control( $wp_customize, $id, array(
    				'label'          => 'Upload an Image',
    				'section'        => $id,
    			)
    		);
    		$wp_customize->add_control( $control );
    
    	}
    }
    
    add_action( 'customize_register', 'my_banner_customize_register' );
    
    /**
     * Banner markup for customizer preview.
     *
     * @param WP_Customize_Partial $partial
     * @param string $id
     */
    function my_banner_render(  $partial = null, $id = '' ) {
    	$image = get_theme_mod( $partial->id );
    	if ( $image ): ?>
    		<img src="<?php echo esc_url( $image ); ?>" alt="">
    	<?php
    	endif;
    }

    テンプレート側

    <?php foreach ( range( 1, 3 ) as $index ): ?>
    	<?php
    	$id = 'slide_' . $index; ?>
    	<div  id="<?php echo esc_attr( $id ); ?>">
    		<?php my_banner_render( null, $id );?>
    	</div>
    <?php endforeach; ?>

    基本的な設定

    WP_Customize_Manager::add_section

    カスタマイザーのセクションを追加します。複数の設定をまとめる場合は、後述のpanel の ID を設定する必要があります。コレを設定しない場合は、panel の設定は不要です。

    WP_Customize_Manager::add_setting

    テーマ設定を記述します。設定値のデフォルト値、サニタイズの関数を設定します。

    ここで設定したIDでテーマオプションが保存されます。get_theme_mod でそのIDを指定すると取り出せます。'transport' => 'postMessage' を指定すると、通常プレビューがリロードされるのですが、それを止めることが出来ます。代わりに JavaScript で値を取得出来ます。(後述)

    WP_Customize_Manager::add_controll

    設定を変更するためのUIを定義します。WP_Customize_Control (もしくはそれを継承したクラス)のインスタンスか、連想配列を引数に持ちます。

    WP_Customize_Control の引数を設定すると、テキストボックス・テキストエリア・ラジオボタン・セレクトボックス・ページ選択など様々なUIが追加できます。

    WP_Customize_Control のサブクラスには色んな種類があって、色を指定するUIを追加する、WP_Customize_Color_Control や、画像を指定する、WP_Customize_Image_Control なんかがあります。

    任意の設定

    WP_Customize_Manager::add_panel

    複数のカスタマイザーの設定をまとめるヤツです。これのIDを各セクションに指定すると、セクションをグループ化できます。

    Selective Refresh を使って、部分的に更新する。

    上記の設定を使えばカスタマイザーを使うことは出来ますが、変更するたびに、プレビューがリロードされて、ちょっともっさりするかもしれません。

    そこで、Selective Refresh を使うと、Ajax を用いて、部分的に更新することが出来ます。

    		/**
    		 * For Selective refresh.
    		 */
    		$wp_customize->selective_refresh->add_partial( $id, array(
    			'selector'            => '#'.$id,
    			'render_callback'     => 'my_banner_render',
    		) );

    WP_Customize_Manager::selective_refresh::add_partical に対して、セレクタを指定し、その内部のコンテンツをレンダリングするコールバックを指定すると、それでその部分が Ajax で部分的に更新されます。

    また、コレを使う場合、add_setting 時に、'transport' => 'postMessage' である必要があります。

    要素が更新されたときに、JS を使う。

    function my_banner_customize_preview_js() {
    	wp_enqueue_script( 'my-banner-customizer', get_template_directory_uri() . '/js/banner-customizer.js', array(
    		'customize-preview',
    	), false, true );
    }
    
    add_action( 'customize_preview_init', 'my_banner_customize_preview_js' );
    
    $(function () {
    
    	if (wp && wp.customize && wp.customize.bind) {
    		let api = wp.customize
    		api.selectiveRefresh.bind('partial-content-rendered', function (partial) {
    
    			if (partial.container) {
    				// 要素が存在する場合の処理。
    			}
    			else {
    				// 要素が存在しない場合の処理。
    			}
    		})
    	}
    })

    カスタマイザーのプレビュー画面で、wp.customize というオブジェクトが渡されます。コレを使うことで、カスタマイザーの変更をJS で取得することが出来ます。 

     torounit/fesdemo にそれらを実装したサンプルがあるので、参考程度にどうぞ。また、torounit/vanilla でもカスタマイザーで機能を実装しています。

    カスタムフィールドで頑張ってるケースも多いとは思うのですが、一度覚えてしまえば、カスタマイザーはかなり強力です。WordPress の標準のAPIでかなりのことができますし、Selective Refresh を使うとプレビューでのカスタマイズがスムーズになります。一度触ってみてはいかがでしょうか?

  • NSEG94 に参加してきました。

    NSEG94 に参加してきました。

    NSEG という長野のIT勉強会があるのですが、フリーテーマのプレゼン大会ということで、WordBench 長野 の話をしてきました。

    NSEG とは

    NSEG 長野のIT勉強会

    長野県で2010年から開催されているITの勉強会です。最近は主に長野市を中心に開催されています。JAWS-UG NAGANO 、Python Boot Camp 等と共同開催したり、いろいろなテーマの会をやっています。

    そんなわけで、今回の NSEG94 でも本当にいろいろなジャンルの話があって楽しかったです。

    はなしたこと

    というわけで、WordBench 長野 や県内外のコミュニティ、WordCamp の話などをしてきました。

    WordPress のことは皆さんご存じでしたが、WordBench というものを知っているという人はほとんど居らず、なかなか意義のあることだったのかなと。Wordって着けば WordPress のイベントって思うのは WordPress の人だけだよなーとも思いつつ。

    実際に翌日のWordBench 長野のイベントにも参加して頂いた方もいて嬉しかったです。

    県内の他のコミュニティとこうやってゆるく連携していけると、違った発見もあったり、いろいろ楽しいのかなと思います。

    NSEG のみなさま、ありがとうございました!また時間を作って遊びに行きたいと思いますので、よろしくお願いします!

  • Vanilla 2.2.0 をリリースしました。

    Vanilla 2.2.0 をリリースしました。

    Vanilla

    Vanilla 2.2.0 をリリースしました。

    ギャラリーの CSS や、背景画像のCSS 等の不具合を修正しました。また、フォントなどの多少の変更を行っています。

    また、フロントページと、投稿サムネイルが設定されているページで、ヘッダーを透明出来る機能を追加しました。カスタマイザーから設定できます。このサイトで有効になっているので、スクロールしたりしてみて下さい。

    BackstopJS でのテスト

    BackstopJS を Circle CI 上で動作させて、見た目の部分の回帰テストを行うようにしました。https://circleci.com/gh/torounit/vanilla を見るとテストの様子が確認できます。

    ぜひさわってみてくださいー。

    Source: torounit/vanilla: Simple WordPress theme for blogging 

  • WordFes Nagoya 2017 でテーマの話をしました。

    WordFes Nagoya 2017 でテーマの話をしました。

    10/28 に行われた WordFes Nagoya 2017 にて、珍しくテーマの話をしてきました。

    テーマを作ったことがある、現在進行形で作っている人向けにテーマの話をするってのはあんまり無いのかもとふと思いつつ、そんな人向けの話が出来れば良いなーと思いました。

    内容とか

    WordPress が使いづらい・・・と言われることもありますが、大抵はエディタから画像の位置が設定できないだとか、本にはこう書いてあるのに・・・みたいなことだったりするんじゃないかなと感じます。

    そうなってしまう原因は、だいたいテーマに必要なCSSが書いていないとかが原因だったりします。

    そういうわけで、自分なりにやり方を考える前にとりあえず、WordPress が推奨しているやり方をまずは知りましょうというものです。

    Required – Theme Review Team — WordPress 、Theme Handbook はまず読んでみるというのは大切なのでは無いかと思います。

    カスタマイザーについて

    また、カスタムフィールドを使うのも良いのですが、何でもかんでもカスタムフィールドでやるのも考え物だと思っていて、せっかくカスタマイザーというものがあるので、それの使い方を知っておくというのは大切なのではと思います。

    torounit/customizer-demo は当日やるはずだった簡単なデモと実装のサンプルです。 

    torounit/fesdemo が当日サクッとデモしたやつです。

    ちょっと内容がモリモリだったので、当日お伝えしきれなかった内容もあるかと思います。そんなわけで、11/19に WordBench 長野 vol.13 WordPress 勉強会を開催します。観光ついでに是非どうぞ。

    Fes に参加した感想

    名古屋のイベントに参加も久しぶり、登壇は初めてだったのですがご飯も美味しかったし、ベースキャンプ名古屋も快適でした。VR触らしてもらいましたけど、コレはヤバイってなりました。

    WordFes 自体も盛り上がり、懇親会も楽しかったです。当日プロジェクターのトラブルなども有りましたがサクッと対応して頂いて助かりました。

    決して近いわけじゃ無いですが、電車1本で行けるので、そっちの方でも積極的に連携して行ければいいなーと思いました。

    当日の深夜の生放送は無茶ぶりされてしんどかったです。そのお詫びに実行委員長や、座談会の司会をされていたイケメンが各地のWordBenchに参加するというコトになりました。酔って変なことはするもんじゃないですね。

    まぁ理由はどうあれ、こういった横のつながりみたいなのが出来てくると良いですね。

  • macOS High Sierra にアップグレードしたらUSBキーボードが動かなくなった場合の対処法。

    先日、とうとう macOS High Sierra にアップグレードしたのですが、なぜかUSBキーボードが反応しなくなってしまいました。

     

    Bluetooth接続のマウスは生きていたので、とりあえず Amazon でキーボードをポチったのですが、その後、そんなことをぼやいていたら、WordPress界隈でお世話になっている木谷さんから情報を頂きました。

     

     

    iMac High Sierra Upgrade – USB Keyboard not rec… | Official Apple Support Communities

     

    first aid をすると直るなんてそんなアホな・・・とか思いながらとりあえず、普通に起動して、first aid を実行してみたら直りました。びっくり。

     

    たまたま僕のケースでは有効だったのかもしれませんが、トラブったときは、SMC とNVRAMのリセットに加えて、first aid もとりあえず実行してみると良いのかもしれません。

  • JAWS-UG 仙台 秋祭りで、「 WordBench長野から見たローカルコミュニティとコミュニティ活動について」という話をしました。

    JAWS-UG 仙台 秋祭りで、「 WordBench長野から見たローカルコミュニティとコミュニティ活動について」という話をしました。

    10月7日に行われた、JAWS-UG 仙台 秋祭り – Publishing on the AWS – にお誘い頂きまして。ですが正直、JAWS-UG のイベントに参加したことも無いですし、AWS とはせいぜい amimoto 使ったり EC2 でサーバーを立てたりする程度のお付き合いしかしてこなかったのでどうしたモノかと悩んでいたところ、「地域のコミュニティの話とかいいんじゃない?」というネタを頂いたので、WordBench 長野 の取り組みや、そもそも地域コミュニティって何だろう?って話をしました。

    いざ資料を作ろうとすると、いろいろ言語化せずにやってきていたことが大量に有ったのでスライドの作成にはいろいろ難儀しましたが、いろいろ参考になる話が出来たので有れば幸いです。

    また当日いろいろな事件はありましたが、それも含めて楽しんで頂けたようでなによりです。

    勉強会とは

    ITコミュニティとは「同じ興味を持った人たちの集まり」なんだと思います。なので、勉強会を開催することは有りますが、コレは別にセミナーじゃ無いし、「誰もが参加でき、出会い、共有し、学び合う場」なんてその場を定義づけしていたりもします。

    また、コミュニティ内で目立つ人は居ますし、代表や運営がいたりはしますが、別にその人が主役というわけでは無いですよね。言うなれば全員が主役なんです。別にきれい事とかいうわけじゃなくて、例えば、サークルとか町の集まりとかに主役とか脇役とかがあるわけも無いですし。

    ただそうはいっても、登壇者を立ててその話を皆で聞くというスタイル、所謂セミナー形式でやる場合、傍目にはセミナーとか授業にしか見えないですし、それを捕まえて、「授業じゃ無いよ!」っていうこと自体無理筋なんじゃないかなと考えています。

    「全員が主役」とか言ったところで伝わらないというか、「それってどういうこと?」ってなっちゃうので、それはイベントの仕組みとして、実装する必要があるんだと思います。例えば自己紹介を全員がやるってのはそういう仕組みなのかなと。自己紹介をしている時間はその人が主役なはずです。

    コミュニティもコミュニケーションも語源には、ラテン語の communis という単語が含まれているそうです。意味は 「common」、「public」、「共通の」なんだとか。結局コミュニケーションを取るための集団がコミュニティであり、そのための場がコミュニティイベントなので、そういった仕掛けを用意することが必要なんだと思いました。

    どうしてもセッションの内容やコンテンツを考えることに意識が向きますし、それらは後日共有されたりもしますが、勉強会やコミュニティイベントといった枠組み部分のノウハウみたいなのは言語化されるケースもなかなか少ないです。

    そういうノウハウとか上手くいった取り組みが、これから共有されてくるといろいろやりやすくなるんじゃないかなーと思いました。各地域のWordBenchとかともそういう連携が出来るようになればいいかなと。

    イベントに参加した感想

    JAWS-UG とか、そもそも AWS のイベントには初めて参加したのですが、本当にバラエティに富んだ話が出て面白かったです。ロボホンめちゃめちゃ可愛かったです。インターネットってほんとにすげぇ!ってなりました。JAWS-UG Nagano reboot が長野市で開催されるようなので、こういったイベントにも顔を出していきたいなーと思いました。このイベント自体は友人の結婚式があるので参加出来ないのですが・・・

    また、初めて仙台に行ったのですが、伊達な街四丁目アカペラストリートみちのくYOSAKOIまつりが開催されていたようで、楽しい街だなーと思いました。またぜひ遊びに行きたいと思います。ありがとうございました!