投稿日:

オブジェクト指向プログラミングを理解する為の4つのポイント


一度理解してしまうと、もうそういう風にしか考えられなくなるけれど、理解するまではちょっと難しい、そんな「オブジェクト指向プログラミング」ですが、その理解に少しでも近づけるように、僕なりのポイントを4つ程挙げてみました。突っ込みどころも多いとは思いますが、僕なりの考えです。オブジェクト指向プログラミングはやってるけれど「何かあまりしっくりと来ていないな…」という方へ、ちょっとでも参考になれば幸いです。

1. クラスと継承は、忘れる

オブジェクト指向プログラミングの解説で、まず最初に「クラス」と「継承」の説明がなされることがよくあります。間違いでは無いでしょうし、多くのオブジェクト指向プログラミング言語ではクラスはとても重要な役割を担います。Java はクラスが無ければオブジェクトを作ることも出来ません。しかし、やっぱり一旦忘れてください。クラスや継承は、オブジェクト指向プログラミングを理解するにうえで、大きな誤解を生むことがあるからです。

「継承によって、あるオブジェクトが他のオブジェクトの特性を引き継ぐ」—— 継承についての説明です。しかし、これを単に「機能を効率的に(あるいは簡単に)受け継ぐ手段」だと理解してしまうことがあるようです。でもそれは間違った理解です。ここでの間違った理解は、典型的な「ごった煮クラス」を作成してしまう罠の入り口です。便利だから、便利だからと、あるクラスに山のようなメソッドが実装されていきます。そしてやがて、アプリケーションの大半のロジックが1つのクラスに実装され、まるでベタ書きの PHP のようになったコードを見た事があります。

クラスと継承は、オブジェクト指向プログラミングを理解する上では雑音になります。一旦忘れてください。

2. 包含関係は重要

継承関係と同様に大切な概念として紹介される概念に「包含関係」があります。オブジェクト指向プログラミングの解説ではよく、継承関係を「is-a関係」、包含関係を「has-a」関係と説明されます。継承は忘れてくださいと書きましたが、実はこの「包含関係」こそ、オブジェクト指向プログラムの実現する上でとても重要な概念ですので、しっかりと抑えることが大切です。

「オブジェクトが別のオブジェクトを所有し、その機能を利用する」—— これが「包含関係」です。具体例は次のパートで挙げたいと思いますが、例えば、あるオブジェクトAが幾つかの機能を持つ時、その機能の一部を別のオブジェクトBに担当させ、オブジェクトAはオブジェクトBを所有することで、オブジェクトBの機能を利用することを言います。

極端な話、継承は無くてもオブジェクト指向プログラミングは実現できますが、包含の概念はとても重要です。どういうわけか、オブジェクト指向プログラミングの多くの解説において、継承についての説明はたっぷりあるものの、包含についての説明は小さな扱いになっているような気がします。そのような中でクラスと継承を学ぶと、この包含関係の重要性についての気付きが遅れてしまいがちになります。ですので、しつこいですが、継承は一旦置いておいてください。そして包含関係について、重要だと思って注目してください。

3. オブジェクトは役割を持つ

オブジェクトはそれぞれ、何らかの役割を担います。役割は明確であることが大切です。オブジェクトはそれぞれの役割を与えられて、その与えられたその役割について責任を持つ。これこそがオブジェクト指向プログラミングの本質です。

では、オブジェクトの役割分担とはどういうことでしょうか? 一例をあげてみます。テトリスのようなゲームのオブジェクト構成を考えてみましょう。ざっと Game(ゲーム全体)、Stage(ゲーム画面)、Block(落ちてくるブロック)が思いつきます。底に積み重なったブロックはどう表現しましょうか? Stage オブジェクトに、配列で持ちますか? プレイの制限時間はどうしましょう?  Stage オブジェクトに終了時間を持って監視しますか? どうやらこの調子では、Stage オブジェクトはゲームのほとんどを管理する大きなクラスになってしまいそうです。

そこで、実際のスポーツの試合を考えてみましょう。コートの上にボールは有りますが、「コート」はストップウォッチを持って試合終了の笛を吹いたりはしません。それは審判やタイムキーパーの役目ですね。それと同様に、Stage は「コート」としての役目に徹してもらって、Timekeeper という別のオブジェクトを用意して時間を管理させ、StackedBlocks というまた別のオブジェクトを用意してステージ上に積み重なったブロックを管理させてはどうでしょうか。つまり、役割を分担するわけです。

これで少し役割が分担できました。Timekeeper オブジェクトは時間を管理する役割、StackedBlocksは積み重なったブロックを管理する役割を担うことになります。

また、上のコードで、Stage オブジェクトが Timekeeper オブジェクトと、StackedBlocks オブジェクトを持つことになりますが、これが「包含関係」です。Stage オブジェクトに Timekeeper と StackedBlocks が含まれて(包含されて)いますね。このように、「包含関係」は役割毎に存在する複数のオブジェクトを関連づけるための大切な方法の一つなのです。

オブジェクトを役割分担するメリットは、そのまま「オブジェクト指向プログラミングのメリット」と言えます。オブジェクトが役割毎に分けられると、それぞれのオブジェクトは小さく、そして単純になります。役割の少ない、小さなオブジェクトは、簡潔で見通しが良くなります。シンプルなコードは変更も簡単で保守もしやすいです。また、単純なロジックだけが含まれることで、バグが混入しにくくなります。プログラマは小さくて閉じた世界だけで考えることができるので、自信をもって「論理的に正しい」と言えるコードを書きやすくなり、不安も減るでしょう。また、十分に設計が上手いと、再利用性が高いオブジェクトを作ることもできます。このように、オブジェクトに明確な役割を持たせることで、様々な恩恵を得ることが出来るようになります。これが、オブジェクト指向プログラミングの最も重要な概念です。

4. オブジェクトは役割について責任を持つ

さて、役割が分担された小さなオブジェクトは、もちろん単体では動作しません。アプリケーションの中のオブジェクトは、互いに会話してメッセージをやり取りし、アプリケーションの動作が成り立っていきます。オブジェクト同士の会話は、一般にはメソッドのコールを通じて行われます。

ここで「会話する」という点の理解は重要です。いろんなオブジェクトが存在し、それらが相互に会話してアプリケーションが成り立って行く、という感覚です。そのように組み立てられたプログラムは、一連の処理があちらこちらのオブジェクトに散在することになり、プログラムが上から下に流れて行くようなイメージにはなりません。友人のPHPのプログラマーは、それを「非常に見難い」と評価していましたが、そういうものだと思う方が近道です。実装があちらこちらに散在することに違和感を覚える人は、慣れが必要です。

コツのひとつとして、プログラムの流れを追うのでは無く、オブジェクトがそれぞれの役割を全うすることを意識して見ることがとても大切です。もう少し分かり易く言うと、それぞれのオブジェクトや、オブジェクトのメソッドが正しく動くように小さな単位で考える、ということです。全体を見るのでも、流れを追うのでもありません。そのオブジェクトや、オブジェクトのメソッドが、それぞれ正しく動くようにだけ考えていくことが、役割分担されたオブジェクトと上手く付き合っていく為のコツです。

まとめと発展

以上について、まとめてみました。

  • クラスや継承は、いったん忘れた方が、オブジェクト指向を理解し易い
  • 「包含関係」は大切なので必ず抑える
  • オブジェクトはそれぞれに個別の役割を持つものと意識する
  • オブジェクトが相互に連携してアプリケーションが成り立つものと理解する
  • プログラムは流れでなく、オブジェクトの単位で眺める

ちょっと極端な内容になってしまいましたが、オブジェクト指向がなかなかしっくり来ない方は、今一度リセットしてこの観点で学んでみるのも良いかと思います。学習にあたっては、言語仕様がシンプルでクラス等の雑音の少ない JavaScript が良いように思います。

もちろんクラスや継承も大事だけど…

「クラスや継承は一旦忘れてください」と書きましたが、やっぱり大切ですw。避けて通れない道でもあります。しかし、クラスや継承は、オブジェクト指向プログラミングを扱い易くするための一つの手法に過ぎず、オブジェクト指向の本質では無いことを忘れないでください。例えば「クラス」は、実装の継承手段やオブジェクトの雛形として非常に便利ですが、JavaScript のようにクラスという概念が無い言語でも、別の方法でその目的を実現するものもあります。クラスや継承は、どちらかというと、プログラムの実装の再利用性を高めるための一つのテクニックだと僕は認識しています。

オブジェクトの役割を常に意識する

クドくなりますが、オブジェクト指向で設計やプログラミングをする時は、個々のオブジェクトの役割をしっかりと考えて、それに必要なメソッド(機能)やフィールド(データ)を追加していくことが大切です。便利だからと、安易にオブジェクトに機能を追加するのではなく、「このオブジェクトは本当にこの機能を持つべきなのか?」と疑うぐらいで丁度良いです。場合によっては、新しい種類のオブジェクトが必要になります。慣れないうちは、なるべく擬人化して考えると良いかも知れません。「○○さんは、■■■が役割だから、▲▲▲▲▲は○○さんの仕事だよね」という感じです。

オブジェクトの粒度

オブジェクト指向で設計やプログラムを行っていると、時にオブジェクトが細かくなり過ぎることや、沢山のクラスやファイルが出来てしまうことに戸惑いを感じる事があるかも知れません。少し高度になると、沢山の種類のオブジェクトの存在がメモリや実行速度の問題につながることもあります。あるいは、単に技術的な扱い易さの問題で、1つのオブジェクトに2つ以上の役割を与えたくなることもあります。学習の時点では「役割は細分化する」で良いと思いますが、こと「実践」において、これについて明確に「どうすべき」という指針はありません。それはケースバイケースであり、様々な要素を含めて検討すべき問題です。つまり、実にそれこそが、オブジェクト指向の「設計」の重要なポイントなのです。ですので、個々のプロジェクトの中で、そこは十分に悩んでいただければと思います。

デザインパターン

オブジェクト指向でのプログラムの設計には、幾つかの便利なパターンがあります。最初の頃はお薦めしませんが、オブジェクトを中心に考えることが出来る癖が着いて来た頃に、是非それらを一度勉強してみることをお薦めします。「プログラミング」というものが、優れたアイデアによってより機能的に、よりシンプルに、そしてより美しくなる姿を見る事ができると思います。僕は昔 Java の Collection フレームワークを勉強してとても感動した覚えがあります。またオブジェクト指向による実装の抽象化という概念も、そこから学びました。そんな美しいプログラミングを目にして、感動して、よりプログラミングが好きになれたら僕はとても素敵だなーと思います。

以下に、僕的に「これ知っておいた方がよいなー」と思えるパターンを少しだけ抜き出して紹介してみます。まずは、とりあえず知っておきたい、そして実は良く見掛ける(いつの間にかあなたも使っている筈の)パターンです。説明は何も書きませんので、グーグル先生に教えてもらってください。

  • Factory Method パターン
  • Singleton パターン
  • Observer パターン

また次は、これを知っていると、設計の幅がぐんと広がるゾー的なパターンです。Visitor パターンは僕も最近になって知りましたが、知らなかったのを不幸と思えるほどの強力な武器になりました。オブジェクト指向は奥が深いですね。

  • Strategy パターン
  • Adapter パターン
  • Visitor パターン

 

以上です。ではでは、ハッピーコーディング!

 

 

投稿日:

appfog に PHP + MySQL 環境を作る


appfog」は、とても手軽で簡単な PaaS 環境で、私は最近実験的なプロジェクトや、WordPress の開発環境として利用させて頂いています。今回は、appfog に、プレーンな PHP + MySQL 環境を構築してみましたので、手順を簡単にご紹介いたします。「appfog 簡単そう!」って思ってもらえると幸いです。

セットアップ

アプリケーションの作成(Webサーバー)

まず、ダッシュボードから、Create App に入り、PHP 環境を選択します。

 

次に、インフラを選択します。個人的には AWS US  East か HP がお気に入りです(理由は URL が短いからですw)。サブドメインも入力して、[Create App] します。

これだけ httpd 環境が出来るのですから、素晴らしいですね!
処理完了後、上の図の例では、http://c5.aws.af.cm にアクセスすると、既にHello World が表示されます。

サービスの作成(MySQL)

次に MySQL をセットアップします。

アプリの管理画面の Services のセクションを開きます。
画面下の方、Provision Service のセクションから、MySQL を選び、DB 名を入力してから、[Create] します。

これだけで、アプリケーションから利用できる MySQL のセットアップが完了です。

DBへの接続情報を取得するには

さて、PHP から MySQL へ接続情報はどのように入手できるでしょうか?

appfog の場合、DB 接続の為のホストや、ユーザー名、パスワードといった情報は、VCAP_SERVICES という環境変数より JSON で取得できます。appfog のドキュメントだと、次ページに関連の記述があります。

http://docs.appfog.com/services/overview

この環境変数を取得し、JSON をパースして DB アクセス情報を取得する PHP スクリプトは以下のようになります。

 

以上、ということで、簡単ですねー! DB接続情報の取得は少々面倒に思われるかも知れませんが、全体を通してとてもシンプルで扱い易い PaaS 環境です。無料の基本利用枠があり、トラフィックさえ少ない感じなら5サイトぐらいは運用できそうです。環境を作ったり削除したりも Web の管理画面から簡単に出来たり、これまで使った PaaS の中では一番気に入っています。

ちなみに、好きなものを好きと言ってるだけです。ステマじゃありませんのであしからず♪

 

投稿日:

PHPFog/AppFog と WordPress とファイル管理


以前の記事「PHPFog と WordPress とファイル管理」からのアップデートです。

WordPress は管理画面からサイト自体に様々なカスタマイズが行えることが特徴であり強みです。管理画面からテーマやプラグインをインストールすると、基本的に wp-contents 内に必要なファイルがダウンロードされて追加されます。PHPFog や AppFog などの環境上に WordPress をデプロイしてもこれは同様なのですが、実はちょっと困ったことがあります。

問題

PHPFog では、初期にデプロイされた後、WordPress の管理画面で行った変更については、git clone でも pull でも取得できません。AppFog もツールや方法は異なるものの同様です。つまり、最後に push(update)した変更しか取得することが出来ないわけで、そうなると当然ながら、テーマやプラグイン、また画像などのメディアファイルなど、WordPress の管理画面から追加されたファイルを手元に取得することが困難です。また取得が困難なだけでなく、手元のファイルをアップデートしてサーバーに push (update)しようものなら、それらのサーバーにしか無いデータが消えてしますことがあります。

解決策

プラグイン「BackWPup」を利用します。
http://wordpress.org/extend/plugins/backwpup/

BackWPup は、WordPress のデータベースの中身やファイル等の全てをバックアップできる強力なバックアップツールです。バックアップするファイルは、別の FTP サーバーはもちろん、DropBox、Amazon S3、Google Strage、MS Azure といった様々な媒体に転送できます。バックアップのセットアップもとても簡単です。

このプラグインを用いて、例えば、バックアップ先に DropBoxを指定してバックアップを実行させます。BackWPup の処理が完了し、しばらくしたら DropBox の中の指定したディレクトリにちゃんとバックアップファイルが転送されています。これを解凍して、手元の WordPress の wp-contents を更新し、改めて PHPFog や AppFog に push/update します。

以前の記事「PHPFog と WordPress とファイル管理」では、navphp というファイルエクスプローラ利用しましたが、それよりもずっと簡単に、しかも副次的に(?)サイトのバックアップまで取得できるので大変スマートな方法だと思います。

BackWPup のインストール

管理画面の「プラグイン」>「新規追加」から通常通りインストール、有効化してください。
「BackWPup」で検索できます。

ローカルの WordPress データを最新にするまでの流れ

  1. [BackWPup] > [Add New] から、新規 Job を追加する
    • 設定項目は大変多いですが、とりあえずほとんどデフォルトのままでOK
    • バックアップファイルの転送先のみ注意して入力する
  2. [BackWPup] > [Jobs] で Job 一覧を開いて、作成した Job を [Run Now] で実行する
  3. 指定したファイル転送先にファイルが転送されるので、ファイルを取得する
  4. ローカルの WordPress ファイルをアップデートして、サーバーに push/update する

 

 

以上です。

 

 

投稿日:

jquery.overscroll.js を使うと input タグ等が反応しなくなる問題の対処


jquery.overscroll.js ver 1.6.0 を使ってて、その領域内に input[type=text] や textarea タグなどが入っていると、それらの要素が反応しなくなります。該当の要素に cancelOn を指定しても改善されません。

困ったので、コードを見てみると原因が分かりました。cancelOn を判定している箇所があるのですが、その判定以前に、event.preventDefault() しています。これにはこれで意味があるのかも知れませんが、event.preventDefault() の記述を cancelOn 判定後に移動させると、期待どおり input や textarea などのタグが通常通り反応するようになり、また他にも特段影響も見られないので、とりあえずヨシとしたいと思います。

今後改善や改良があるかも知れませんが、以下、修正した部分のコードです。
jquery.overscroll.js のバージョンは ver 1.6.0 です。

上のコードで、348 行目を、361 行目に移動させています。

§

ちなみに、この件は不具合修正の依頼だけ対応したのですが、よりあたらしい jquery.overscroll.js のリポジトリをみてると、別のアプローチですが、修正されているみたいですね。良かったです。

 

 

投稿日:

食わず嫌いは良くは無い。 — WordCamp Osaka 2012 リレーブログ


じゅんちゃんさんから、WordCamp Osaka 2012 リレーブログのバトンを受け取りました。フォーエンキーのノジマです。基本はシステムエンジニアですが、グラフィックデザインもやったりもしています。今回、WordCamp OSAKA 2012 で、僭越ながらスピーカーをさせて頂くことになり、またこのリレーブログにも参加させて頂きました。ありがとうございます!

今日は僕の WordPress と出会いと、コミュニティについて書かせていただきます。

でも、CMSのカスタマイズは面倒くさいよね〜。

実は僕は1年ほど前までは、WordPress には触ったことがありませんでした。一応、WordPress の名前は知ってました。キレイな管理画面でテーマの変更やプラグインによる機能拡張を備えてて、ブログエンジンから高機能なCMSへと進化した、世界で最も人気のある CMS の一つ…って感じで、だいたい合ってたんじゃないかなーと思います。

ところが僕は、そういうツールを、あまり使いたがらなかった。その昔、Movable Type のカスタマイズをやって苦い思いw をしたからかも知れません。Movable Type も素晴らしい製品だと思うのですが、一度辛い思いをしたからなかなか忘れられません。まさに、食わず嫌い。(;゚∀゚)

まぁ、そうでなくてもずっと思ってたのは「CMSをはじめ既存のプロダクトのカスタマイズは面倒くさい。自分で作った方がずっと見通しが良い」ということ。実際、CMS もスクラッチで開発していましたし、時々、雑誌に掲載される WordPress の活用記事を横目に眺めては「便利そうだなー」と思いつつも、その考えは変わらずにいました。

確認さん、現る。

ある日、Android の勉強会がありました。その日は「スマホ ハッカソン」という企画で、幾つかのグループに分かれて Android やスマートフォン関連の何かを制作します。その日、僕はデザイナーとして参加するつもりだったので、どこかのグループからデザイナーのお誘いないかなーと思っていたら結果どこも必要が無かったようで (;゚∀゚) 、じゃあどこのグループに参加しよう?と思ってキョロキョロしていると、当時まだスリムで、WordBench 神戸の管理人をされていた「WordPress 界のカクニンさん」こと『確認さん』が「WordPress でスマホサイト作ろうぜー♪ いぇーい♪」と楽しそうにしたらしたので、参加してみることにしました。当時の僕はスマホサイトを作りまくっていたので何か得られたらなと思ったのが一番の理由でしたが、「WordPress」というキーワードにもちょっぴり興味を抱いたのを覚えています。

その日が、僕の WordPress 初体験です。 確認さんの指導のもと、インストール…と、これが簡単ですぐ出来ました。簡単だなーと思っている暇もなく、次はスマホ対応。ほう、『WPtouch』 …を、管理画面から…なんと!管理画面から直接インストールできるんですか?! 有効化して…、はっ! ホントだ…ちゃんとスマホサイトっぽくなってるやん!…と思っていたら、今度はフューチャーフォン対応? 『Ktai Style』 をインストールして有効化して、FireMobileSimulator で確認したら、ちゃんとフューチャーフォン対応できてることに驚きました。なんと簡単な!

その後はスマホ ハッカソンということはすっかり忘れて、管理画面で可愛らしいテーマを検索してインストールしてみたり、色々設定を変更してみたりして、「ほーほー! ほー!!」と感心ばかり。管理画面から機能拡張やアピアランスを直接インストール出来るというのは、想像以上に素晴らしいですね。製品サイトから zip なりをダウンロードして、解凍して、適切なディレクトリに保存して、というのも特に難しくは無いけれど、この手軽さが素敵。とりあえず何かを試してみよう、という気になりますし、実際、それがとても大きな価値であることに気付きました。

WordBench に参加してみる。

WordPress に興味が湧いたら、是非一度 WordBench に来てくださいねー

…と、確認さん。当時『WordBench』って何? 状態の僕でしたが、その日、WordPress にちょっぴり感動してしまった僕は、次の『WordBench 神戸』に参加してみることにします。

参加した印象は、僕がそれまでに参加していた他のどの勉強会とも違って、カジュアルな雰囲気でした。デザイナーさんが多く参加されているのもあるのかも知れません。女子率はダントツです☆ 内容はデザイン、ディレクション、WordPress の基本や、便利な使い方、カスタマイズ方法といった感じで幅広く。WordPress を軸とした座談会形式のセッションが、僕の最初の WordBench 体験で、プログラムもグラフィックデザインもコーディングもの何でも屋さんの僕も、色々と参考になるお話が聴けました。

それから定期的に WordBench に参加させて頂くようになります。3回目ぐらいの参加だったか、確認さんが講師のセミナー形式のセッションでプラグインの作り方を教えていただき、WordPress の機能の拡張方法もすごくシンプルである事にも気付きます。この頃から、「WordPress って、立派にアプリケーション フレームワークになるんちゃうん?」と思うようになって、それで自分のブログを WordPress にしてみて、また実際に自分でプラグインを作ったりして試してみたりするうちに、今ではすっかり「CMS とかぁースクラッチで書くなんて、もったいないぜー (゚ー゚)ニヤリ」ってすっかり考えを変えてしまいました。

…ちょっと前まで食わず嫌いでイヤイヤしてた僕とは大違いですね。本当に、食わず嫌いは良くは無いです。 (^_^;A

ちなみに、次のページは WordBench 神戸でプラグインの作り方を教えて頂いた後に書いた記事です。

WordPress のホントのすごい。

WordBench に限らずですが、コミュニティーに参加することで得られるものは、決して新しい知識や技術に触れたりできる事だけではありません。スゴイ人、頑張ってる人を見て、モチベーションが上がったり、友達や仲間が出来たりして、そこから新しい世界が開けていくことにも、僕は大きな価値を感じていまます。もともと僕はかなりの人見知りっ子なので、そういう場所が実はちょっぴり苦手で、こちらも当初は食わず嫌いしてたのですが、色々な場所に参加するにつれ、そんなこと言ってるなんてもったいないぜ!って思うようになっています。

さて、何回か WordBench に参加していくうちに、とても人見知りの僕にも、何人かのお友達が出来ました。変わった人、面白い人、カワイイ人、カッコイイ人、迫力のある人、賑やかな人、優しい人、頭がモジャモジャの人、コワイ人…と、ホントに色んな人と知り合いになれました。寂しかった Facebook の僕のお友達リストも、ちょっぴり賑やかになりました。どのコミュニティも素敵な人たちでいっぱいですが、WordBench は、賑やかさでは飛び切りです! またふんわりとした温かな雰囲気が、自分にも何かが出来そうな気持ちにさせてくれます。僕自身、何かやりたいなーと思うようになり、少しずつですが Bench でお話させていただいたり、勉強会を企画させていただいたりして、新しい眺めを楽しませてもらっています。

そんなわけで、WordBench は Web 制作に少しでも関わる人ならば WordPress 使いかどうかに関わらず参加できる間口の広〜〜〜い場所です。実際、デザイナー、プログラマー、ディレクターの方々はもちろん、不動産屋関係や学校関係者の方、各種団体の方などの参加者もあります。ですので、こういった勉強会やコミュニティに参加した事が無い方でも気軽に、安心して、楽しく参加して頂けると思うので、もしまだ参加された事の無い方は、是非一度、参加しれてみてくださーい。何か新しい眺めに出会えるかも知れませんし!

ちなみに関西圏ですと、WordBench 京都WordBench 大阪WordBench 神戸 があります。ちなみに僕は神戸がホームです。なお、10/13 には WordBench神戸も開催されます。どーんと気軽にご参加ください!

 

…というわけで思うのですが、WordPress のホントの価値って、この WordBench をはじめとする、広くて大きなコミュニティーの存在ではないでしょうか。無数の個性的なテーマや、あらゆる事に手が届きそうなプラグインの数々も、それらのコミュニティの存在があってこそ、育まれて来たものではないかと思います。コミュニティに参加することで Web 検索では得られない様々な知識が自然と入って来ます。検索は僕が既に知ってる場所の少し向こうまでしか探せませんが、隣の人が語る言葉は僕の想像を超えることが沢山あります。WordBench の参加者の皆さんは本当に色々で、その面でも幅が広く凄いなーと思います。WordPress はとても魅力的で素晴らしいプロダクトです。しかし、この製品のホントにすごいところは、それらのコミュニティー、そしてそのコミュニティーが築き上げて来たリソース、そしてこの明るく元気な文化だと僕は思っています。

そして、WordCamp Osaka 2012

そんな WordBench コミュニティの親玉みたいな WordCamp が、11月3日、大阪にやってきます! 普段の WordBench よりも、もっともっと沢山の人が集まって、分厚いイベントになります。どんなお祭りになるのか楽しみですねー。僕も勉強させて頂くだけでなく、楽しませて頂きつつ、色んな人と関わって、何か発見して持ち帰れるようにしたいと思っています。いつもの人見知りっ子を封印させて、思い切って、いつもよりもちょっと大股で歩いてみますよー。

なので、普段 WordBench などへ参加されている方も、そうでない方も、WordPress を知っている方も、そうでも無い方も、是非一緒に楽しみましょう☆ 何も分からなくても、何も知らなくても、誰も知り合いいなくてぼっちでも、きっと何かの発見や出会いがあると思います! またもしこういったイベントに参加された事がまだ無くって、色々な理由で躊躇ってらっしゃる方もいらっしゃるかも知れませんが、それももしかすると、昔の僕のように食わず嫌いかも? めっちゃ美味しいかも知れないので、是非一度ご賞味あれ!でございます。

WordCamp Osaka 2012 について、詳しくは次のリンク先でご確認ください!

なお、今回は僕も機会を頂き、1つのセッションでお話させて頂くことになりました。お題は「エンジニアの為の WordPress 入門 〜WordPress は WebApp プラットフォームです〜」で、いちおう PHP は OK なエンジニアさん向けのセッションです。最近までアンチ CMS 派だった僕が WordPress に出会って感じたこと、WordPress がカスタマイズしやすいという理由と簡単な API 紹介、また WordPress がアプリケーションプラットフォームとして利用された事例や、そのメリット等をお話することを通じて、エンジニアから見た WordPress の有用性や活用方法を共有できたらと思っています。あ、あと、当日、会場で僕を見つけたら気軽に声掛けていただけると嬉しいです♪

さあ、参加登録まだの人はすぐ登録ですよー!

それでは、WordCamp で会いましょう♪

バトンは次の方へ!