Advanced Posts Blocks 0.2.2 をりりーすしました。

一月にリリースしたプラグインですが、今更ブログを書きます。Advanced Posts Blocks というプラグインをリリースしました。

機能

WordPress のビルトインのブロックに、「最新の記事」ブロックがありますが、あれを大幅に強化したプラグインです。より細かい検索条件で記事を取得できたり、テーマ側でテンプレートを用意することで表示をカスタマイズ出来ます。

  • 複数の投稿の一覧を表示する Multiple Posts Block
  • 特定の記事の子ページ一覧を表示する Children Posts Block
  • 特定の個別投稿を表示する Single Post Block

の3つのブロックを提供します。

テンプレート

テーマのなかに、template-parts/blocks/advanced-posts-blocks/posts.php といったファイルを用意することで、表示をカスタマイズすることができます。WordPress のテンプレート階層のように、template-parts/blocks/advanced-posts-blocks/posts/page.php と行ったファイルを用意すると、個別ページの一覧の場合は、こちらが読み込まれます。ブロックのスタイルなどを利用すると更に細かいテンプレートのカスタマイズができます。

開発

開発は Github で行っています。https://github.com/torounit/advanced-posts-blocks プルリクエストなどください!

Custom Post Type Permalinks 3.3.1 をリリースしました。

Custom Post Type Permalinks を久々にアップデートしました。

ちゃんとリリースノートとか書かねばとは思うのですが、取り急ぎ、ざっくりとした変更点の解説。

日付・著者での投稿タイプアーカイブの無効化

デフォルトで有効になっていますが、register_post_type の設定でこれらを無効化できるようにしました。

register_post_type( 'foo',
    array(
        'public' => true,
        'has_archive' => true,
        'cptp' => array(
            'author_archive' => false,
            'date_archive' => false,
        )
    )
);

PHP でのパーマリンク設定

以前にも似たような機能はありましたが、以下のようにしてパーマリンクの設定を出来るようにしています。

register_post_type( 'foo',
    array(
        'public' => true,
        'has_archive' => true,
        'cptp' => array(
            'permalink_structure' => '%post_id%',
        )
    )
);

その他

  • 階層無しのタクソノミーでも階層ありのパーマリンクと同様にパースしていたのを修正
  • WordPress 5.0 でのテスト

抜本的な変更はなかなか難しいのですが、細かいリファクタリングなどは続けていきたいなーとは思います。

WordPress 5.0 への更新について

WordPress 5.0 への更新を控えるように等の情報があるので、ちょっとそれはどうなんだろうとおもってつらつらと。

Supported Versions « WordPress Codex

WordPress の Codex によれば、サポートポリシーとしては、最新版のみです。可能であれば古いバージョンにもセキュリティアップデートは適用するとのことですが、基本的には最新版を使うことが推奨されてます。

バージョン番号について

WordPress のバージョン番号は、上位2桁が10進数的な扱いです。3.9 の次は 4.0 でしたし、4.9 -> 5.0 です。なので 4系から5系みたいな感じではないです。3桁目は、パッチのバージョンなので上位2桁とはまた別にナンバリングされます。4.7.11 みたいな。バージョン番号の付け方としては違和感がありますが、最初の小数点は無視してバージョン 49 から 50 に上がったんだなーくらいのノリで理解するのが良いのかなと。

なので、5.0 はメジャーアップデートではありますが、普段のメジャーアップデートと基本的には同じです。まぁ内容次第というところはありますが。個人的には、REST APIがマージされた 4.7 や、管理画面がリニューアルされた 3.8 辺りの方が印象は強かったりします。

ブロックエディタを使いたくない場合

Classic Editor プラグインを入れましょう。2022 年まではとりあえずサポートするようです。そのあとはサポート終了というわけでは無く、2022 年になったときにまた検討すると言うことのようです。

また、利用しているテーマ・プラグインが 5.0 対応しているのか等は確認する必要があるのかなと思います。

不具合などが心配な場合

5.0 に限った話では無いですし、プラグイン・テーマなどもそうですが、不安な場合は事前に検証するのが良いかと思います。サーバー内に、test.example.com みたいな感じで、同じプラグイン・テーマ・本体を入れた環境を用意して、それで試すのが良いかと思います。All-in-One WP Migration 等を利用すると手軽に同一の環境を再現できるかと思います。

まとめ

WordPress のアップデートと一口に言っても本体やプラグインなど様々なものが関わってきますので、とりあえず検証できる環境を用意して、安心して WordPress と付き合っていけるようにしましょう。

WordPress に限った話ではないですが、アップデートのときは、事前検証・バックアップをちゃんととりましょう。

unregisterBlockType で ブロックを削除する。

HandBook のほうには、

wp.blocks.unregisterBlockType( 'core/verse' );

をするとブロックの登録を解除できるという話だったのですが、このまま書いても解除されないんですよね。

何故かというと、core/verse が 登録される前に unregisterBlockType が実行されてしまうからです。なので、Gutenberg / ブロックエディタの初期化処理が終了してから、こいつを実行してあげる必要があります。

const { _wpLoadBlockEditor } = window;
const { unregisterBlockType } = wp.blocks;
_wpLoadBlockEditor.then( () => {
    unregisterBlockType( 'core/verse' );
} );

こんな感じで、_wpLoadBlockEditor の完了を待ってから実行すれば良いみたいです。

_wpLoadBlockEditor はこんな感じです。


window._wpLoadBlockEditor = new Promise( function( resolve ) {
	wp.domReady( function() {
		resolve( wp.editPost.initializeEditor( 'editor', "%s", %d, %s, %s ) );
	} );
} );

覚えておくと何かの役に立つかもしれません。

Gutenberg のカスタムブロックでも、ES Modules import を使う。

要は、どうしたいかというと、

const { registerBlockType } = wp.blocks;

これを、Gutenberg のコアのソースコードのように、

import { registerBlockType } form '@wordpress/blocks'

としたいと言うことです。

やりかた

webpack.config.js を の externals を良い感じに設定すればできます。Gunteberg 本体も似たようなコトをやっています。

const entryPointNames = [
	'blocks',
	'components',
	'editor',
	'utils',
	'viewport',
	'edit-post',
	'core-blocks',
	'nux',
];

const gutenbergPackages = [
	'api-request',
	'blob',
	'core-data',
	'data',
	'date',
	'deprecated',
	'dom',
	'element',
	'keycodes',
	'plugins',
	'shortcode',
];

const wordPressPackages = [
	'a11y',
	'dom-ready',
	'hooks',
	'i18n',
	'is-shallow-equal',
];

const externals = {
	react: 'React',
	'react-dom': 'ReactDOM',
	tinymce: 'tinymce',
	moment: 'moment',
	jquery: 'jQuery',
	lodash: 'lodash',
	'lodash-es': 'lodash'
};

[
	...entryPointNames,
	...gutenbergPackages,
	...wordPressPackages,
].forEach( ( name ) => {
	externals[`@wordpress/${ name }`] = {
		window: ['wp', name],
	};
} );

module.exports = {
	output: {
		library: ['wp', '[name]'],
		libraryTarget: 'window',
	},
	mode: 'production',
	module: {
		rules: [
			{
				test: /\.js$/,
				exclude: /node_modules/,
				use: {
					loader: 'babel-loader',
					options: {
						presets: ['@babel/preset-env']
					}
				}
			}
		]
	},
	devtool: 'source-map',
	externals,
	resolve: {
		extensions: ['.js', '.jsx']
	}
};

こんな感じの config を書いてます。externals の 設定を行えば、@wordpress/{packageName} みたいなので、import の解決が出来ます。output の設定も書かないとうまいこと動きません。ここでちょっとつまづきました。

メリット

  • コアのソースをコピペするときに、import とかを書き換えなくて済む。
  • npm で、@wordpress/editor 等を devDependencies で入れておけば、PHPStorm 等でコードジャンプが容易に出来る。
  • ちょっとカッコいい。

addFilter 等もあるため、コアのソースを読みたいという瞬間はかなり多いです。ですので、コードジャンプが行えるのは大きな利点なのかなとおもいます。

registerBlockType の styles プロパティ

wp.blocks.registerBlockType に styles というプロパティがあります。これにちょっとした設定をするだけで、「追加 CSS クラス」がグラフィカルに適用できるようになります。「ブロックタイプを変更」というボタンが出現し、GUIで適用するスタイルを選択出来ます。

「ブロックタイプを変更」を押したときの様子

実装

'use strict';
const { registerBlockType } = 'wp.blocks';

registerBlockType( 'block-example/basic', {
	title: 'Example',
	icon: 'universal-access-alt',
	category: 'example',
	styles: [
		{ name: 'default', label: 'default', isDefault: true },
		{ name: 'style1', label: 'スタイル1' },
		{ name: 'style2', label: 'スタイル2' },
	],
	edit ( { className } ) {
		return <div className={ className }>Basic example with JSX! (editor)</div>;
	},
	save ( { className } ) {
		return <div className={ className }>Basic example with JSX! (front)</div>;
	},
} );

実装はこんな感じでとにかくシンプルです。styles プロパティを指定するだけです。適用される class は is-style-style1 だとか、is-style-[name] という格好になります。

GUI でゴリゴリ出来ていろいろ楽そうですねこれ。

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 でローカルコミュニティの話をしました。

Photo by NExT-Season

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

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

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

コワーキングスペースづくりや、継続的なコミュニティイベント全般、地域コミュニティにもつながるとってもいい話だった。

深沢 幸治郎さんの投稿 2018年6月4日月曜日

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

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

月に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 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 が終わった後、そのまま男木島へ。主に西川さんの家の工事?を手伝った思い出。

View this post on Instagram

Cutting a pipe.

A post shared by Shinichi Nishikawa (@shinichinishikawa) on

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

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

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さんが書いていましたが、その通りだなと改めて感じました。続けていけば中長期的には何かしらの利益はあるんじゃ無いかなと思う次第です。

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

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

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

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