人生はHello Worldであり、Hello Worldが人生である。
これは自己啓発的な格言と理解していただいて構わない。
と言っても意味がわからないかもしれないので解説すると、Hello Worldというのはプログラミングをするときに一番最初に学ぶものの比喩だ。
つまり、初歩の初歩の初歩というような感じであり、人生は初歩である、というか、「千里の道も一歩から」でええやん、ということである。
人生に必要な大切なことなど数千年以上前からもう出尽くしている。
しかし使い古された言葉では心に届かない。
だから同じことをいろんな言い方で言うんだね。一日一歩、三日で三歩。
ただ、今回言いたいのは、初歩の初歩が一番大事なはずなのに、世の中のHow to系は全然初歩の初歩を大切にしていない、ということだ。
例えば初心者向けのプログラミングの情報などもはっきり言ってわかりにくい。
記事を書く方としても、初歩の初歩など書くのが面倒なのか、これぐらいわかって当然という期待するレベルが高いのか、ただ自分が理解していることを書いているだけなのか、いろんなパターンがあるだろうが、初歩なめすぎ。
ちなみに、プログラミングを何年もしている人でも、新しい言語やフレームワークなどを学ぶときは、初歩の初歩からちゃんと辿っていくのは同じで、進む速度が早いだけなのだ。
だから初歩の初歩の情報が不足していたら、どんなベテランでも詰まってしまう。
さらに重要なことは、初歩の次は二歩ではなく、初歩であるということだ。
初歩が終わったら、次は次の初歩である。
新しいことを学ぶと言うことはどんなことでも初歩なのだ。
というわけで本題。
例えばWordPressを使ってサイトを作ろうとなったとき、サーバーにインストールして、テンプレートをカスタマイズして、いろんなプラグインを入れて出来上がり、という初歩の段階があるが、次の段階としてはphpやWordPressの独自の関数などを利用してプログラミングをしていくことになるだろう。
もしWordPressでサイトをたくさん作りまくっていたとしても、プログラムを組んでカスタマイズするのが初めての場合は、初歩だ。
phpでいろんなプログラムを組んだ経験があったとしても、WordPressの仕様を理解しないと何もできない。
WordPressのプラグインはどのような仕様になっているのか知りたくなったとしよう。
インストール済みのプラグインをカスタマイズしたり、オリジナルのプラグインを作ったりしたいと思った場合の初歩の初歩の解説が欲しい。
しかしざっと検索してみたところ、初歩の初歩の解説と言える情報はほとんどなかった(英語の記事ではいくつか見つかったが)。
もちろん初心者向けの記事はいくつかあったのだが、ほとんどがとにかくプラグインの形にすることが目的となっていた。
違う違う。Hello Worldが欲しいのだよ。
でもたくさんの技術的な解説記事を読んでみて、なんとなくわかってきたことがある。
初歩の初歩だけだと内容が薄いと思われるから、「記事の価値を高めるためには、内容を充実させなければいけない」という使命感というかしょぼいやつと思われたくないという気持ち、あるいはGoogleの検索結果の上位を狙うためということもあるかもしれない。
わかる。
わかるけどそういうのをガン無視して、俺はただただ歩みを軽くするための記事を書こう。
Hello WorldにつぐHello Worldの繰り返しでどこまでいけるか。
本当に知りたいのはこういうこと、というものを書いていきたい。
WordPressのプラグインの作り方
まず、とにかくプラグインを作ってみよう。
ゴールはプラグインの一覧にオリジナルのプラグインが表示されること!
FTPソフトを使って空のphpファイルをプラグインフォルダにアップするだけだとどうなるか。
具体的にはhello_world.phpという中身は空のファイルをwp-content/pluginsにアップしてみた。
結果は。
何もおこらなかった。
そこでhello_world.phpに以下の記載をしてアップした。
1 2 3 4 5 |
<?php /* *Plugin Name:Hello World */ ?> |
結果はこうだ。
おおー。
できた。
これがWordPressのプラグインの本当のHello Worldだ。
で、ここまでできたら自由に次の一歩に踏み出せる。
例えば、ファイル名を変えたらどうなるんだろう。
hello_world.phpをhello_world_dayo.phpに変えてみた。
しかしプラグインの一覧画面の表記は何も変わらなかった。
ふむふむ。
ではhello_world_dayo.phpの中身を以下に変えてみると?
1 2 3 4 5 |
<?php /* *Plugin Name:Hello Worldだよ */ ?> |
今度はプラグイン一覧のところの名前が”Hello Worldだよ”に変わった。
おおっ。
ではでは。
hello_world.phpもhello_world_dayo.phpもどちらもファイルの中身を同じにしてアップした場合どうなるのか。
今回はどちらとも*Plugin Name:Hello Worldだよ、のほうでアップしてみた。
するとプラグイン一覧のところに”Hello Worldだよ”が二つ並んだ!
おおおっ。
こんな感じで一歩一歩進めていくと自分でどんどん進めていける。
しかし。
ここで振り返ってみよう。
自力ではこれは導き出せるわけがない。
1 2 3 4 5 |
<?php /* *Plugin Name:Hello World */ ?> |
これはどこから出てきたの?
まあ、ネットで「WordPress プラグイン 自作」とでも検索すればなんとなく辿り着けそうではある。
今回は公式にCodexをみてみよう。
WordPress Codex 日本語版 – プラグインの作成
1 2 3 4 5 6 7 8 9 10 11 |
<?php /* Plugin Name: (プラグインの名前) Plugin URI: (プラグインの説明と更新を示すページの URI) Description: (プラグインの短い説明) Version: (プラグインのバージョン番号。例: 1.0) Author: (プラグイン作者の名前) Author URI: (プラグイン作者の URI) License: (ライセンス名の「スラッグ」 例: GPL2) */ ?> |
まあ、こういう記載になるわな。
こうなると、どれが必須項目なのかわからない。
とにかくプラグインの一覧にプラグイン名を表示させるところまでをするための最低限必要なことが知りたいのだ。
実験の結果、Plugin Name: (プラグインの名前)だけでよかったよね。
こういう感じで、世の中の情報は過剰になっている。
WordPressもそうだが、なんでも必要のないものがどっさりと混じっているのだ。
そこで自分が知りたいところの最低限必要な必須項目だけになるまで、無駄なものを削ぎ落とすという勉強方法はとても大事。
初歩を学んだ場合、次の一歩を踏み出す前に、
「あれ?足を一歩前に出す時、俺、腕はどうしてるんだっけな?」
こういう発想を身に着けるのが一流のアスリートへの道だろう。
フォーム大事だもんね。
しかし、いちいち、一歩一歩こんなこと気にしながらいきていたら、全然先に進まなくて楽しくないじゃん、という気持ちもある。
そこで、「モチベーション第一」であることも忘れてはいけない。
もし一歩踏み出す時のフォームなど気にならず、とにかく前へ、前へ、というときは、フォームなど気にしてはいけない。
どんどん前へ進むべきだ。
そうやってめちゃくちゃなフォームで前に進もうとしているタイミングで、
「おまえのフォームはめちゃくちゃだ。」
と先輩ヅラしてマウンティングをとってくる人もいるだろう。
そんなものは無視。
人にはやりたいことをやれるタイミングというものがある。
人より先にフォームの大事さを知ったから、フォームがめちゃくちゃな人に対して、意見を言いたくなる気持ちもわからんではないが、「先輩、僕、正しいフォームで駆け巡りたいんです。教えてください。」と言われたら教えてあげればいいのであって、楽しそうに走っている少年にいちゃもんをつけるのは罪である。
死刑にしたいぐらいだ。
で、いざ、正しいフォームを知りたくなって調べてみると、全然肝心なところが書いてなかったりする。
そんなときは、自分で自分のHello Worldを作っていくしかない。
幸い、プログラミングの世界は他の世界と違って、テストをしてみることができるので、とても簡単だ。
他の業界では、実際に試せるチャンス自体が少ないことも多いし、そもそも正しい答えがはっきりしないままの世界も非常に多い。
そういう意味ではプログラミングはめちゃくちゃ簡単だ。
簡単だが、やることが多いので、大変な世界ではある。
が、簡単だ。
これからもっともっと簡単になっていくだろう。
プログラミングというのはどこまで行っても目的にはならない。
何かの手段だ。
手段の難しさというのは欠点である。
何かを手に入れるときに、手に入れるのが大変だから価値があるように見えるものがあるが、
それは本当の価値ではなく、幻想だ。
ちゃんと一歩一歩歩んできた人にとって、夢とは現実である。
例えばドラムが叩けるようになりたい!という夢があったとして、寝て起きたら叩けるようなっている、というのは夢がかなったとは言わない。
まず、スティックの握り方、振り方、ペダルの踏み方からはじめて、一歩一歩近づいていくだろう。
そして、バンドで初演奏、という日が来たとしよう。
それはドラムの練習を始めた日の夢が叶った日ではあるが、初演奏の日の前日からすればただの現実の一日にすぎない。
つまり、スティックの握り方を覚えた日の次の日に、8ビートの基本のリズムを叩いてみたときと同じ現実だ。
初演奏で最初の夢が叶ったとしよう。
で、終わり?
もう一回やる?
他の曲練習する?
どれでもいい。自由だ。
好きな次のHello Worldを見つければいい。
人生はHello Worldであり、Hello Worldは人生だから。
ところで、このタイトルしかないプラグインを”有効”にしたらどうなるか、気にならないだろうか。
もちろん何か挙動がおかしくなったりすることはないが、何も起こっていないのだろうか。
WordPressのプラグインの有効、無効の違いはあるわけだから、何も動きはなくても、この俺のHello Worldが有効になった証がどこかに刻まれているはず!
というわけで、答えはデータベース上に書き込まれる、が正解。
プラグインを作るからにはデータベースを操作することもあるだろう。
これをきっかけにデータベースを見てみるのもいいと思う。
Hello Databaseだ。
WordPressのデータベースの中身を初心者が見る場合、phpMyAdminがいい。
もしSQLを勉強したい場合もphpMyAdminで画面から操作すると、その操作のSQL文を表示してくれるのでわかりやすい。
いきなりターミナルからやらせるパターンが多いが、DBの全体像がイメージしにくいのでやめたほうがいい。
optionsテーブルのoption_nameを調べると、active_pluginsというオプション名があり、そこにa:1:{i:0;s:15:”hello_world.php”;}というような値が入っている。
ちなみにすべてのプラグインを無効にすると値はa:0:{}となる。
このaとかiとかsはどういう意味なのか、どこにも説明はない(と思う)。
こういうものは自分で試して確認するしかないのだ。
まあ、もったいぶる必要もないので説明するとaは有効になっているプラグインの数、iは配列の添字で、sはプラグインのディレクトリ、ファイル名の文字数だ(/や拡張子も含む)。
こんなこと知ってどうするのかというと、初心者のうちはほとんど意味はないが、なんか一度見たことがある、という経験の積み重ねがあとで結びついてスパークするので、今は点と線でいうところの点を作ってるんだな、と思っておけばいいと思う。