ブログを引っ越しました

今まで「はてなダイアリー」を使わせてもらっていましたが、すでに時代は静的サイト生成にパラダイムシフトしつつあります。このブログも時流に逆らわずに、静的サイトに移行しました。

なお、過去の記事はそのままにします。今まで、ありがとうございました。

(名古屋 10/26) FuelPHP 勉強会 東海 vol.5 & 「WordPress Security を考える会」vol.3 が開催されます

10/26(土)に名古屋で FuelPHP 勉強会 東海 vol.5 と「WordPress Security を考える会」vol.3 が開催されます。

是非、ご参加ください。

「FuelPHP 1.7 翻訳ウィーク」を開催します

FuelPHP 1.7 リリースに合わせて「公式ドキュメント」の翻訳を進めるための「FuelPHP 1.7 翻訳ウィーク」を開催します。

FuelPHP の公式ドキュメントに英語が残っているのが気になる人、翻訳プロジェクトに興味がある人、GitHub を使ってみたい人、是非、お気軽にご参加ください。

翻訳ウィークとは?

翻訳ウィークは、翻訳をみんなで集中的に進める 1週間です。

FuelPHP の公式ドキュメントの翻訳は有志が任意に自発的に進めているもので、期限などもなく、ややもすると停滞してしまいます。そこでメリハリをつけ、翻訳を進めるために翻訳ウィークを新しいバージョンがリリースされるごとに行っています。

今回は、三度目の翻訳ウィークですが、今回こそ、全ドキュメントの翻訳を完了したいです。FuelPHP の公式ドキュメントの翻訳は、バージョン 1.2 の頃から進められていますが、未だ完了したバージョンはありません。翻訳が完了すれば歴史的な偉業です!

翻訳ウィークに参加すると何かいいことがあるの?

私が考えるところ、参加者には以下のメリットがあると思います。

  • GitHub に慣れることができる。GitHubリポジトリに Pull Request を送るかたちで翻訳は進められますので、参加することで GitHub に慣れることができます。
  • FuelPHP 力がアップする。FuelPHP は軽量フレームワークですが、それでも知らない機能やメソッドなどは誰にでもあります。特に新機能については多くの人が知らないことが多いです。ドキュメントをじっくり見ることになるので、必ず何らかの発見があるはずです。
  • 英語力が少しはアップする。英語のドキュメントを翻訳するので、英語での言い回しなどに触れることになり、英語力も少しはアップすることでしょう。
  • CREDITS ファイル に名前を載せることができるので、もしかしてカッコいいかも (w

何故、翻訳ウィークをするの?

翻訳に気軽に参加する人を増やすためです。

目指しているのは、100人で 1人が数行ずつ翻訳すれば翻訳が完了するというような世界です。

オープンソースプロダクトの翻訳に参加している人は非常に少ないです。

多くのプロジェクトでは 1人か 2人、あるいは数人ですべて翻訳しているということも珍しくありません。プロ並の翻訳力のある人がやっている間は 1人でも対応できますが、そういう人が何らかの理由で翻訳できなくなると、すぐに破綻してしまう可能性があります。いわゆるトラックナンバーが 1 とか 2 とかそういう世界です。

対して、FuelPHP のドキュメント翻訳で目指しているのは、多くの人で少しずつ翻訳することでまわっていくというモデルです。自分も少し翻訳に参加することで、ドキュメントがすべて日本語で読めるという世界です。幸い、前回の翻訳ウィークには 14人が参加しました。まだまだ少ないですが、数人という規模からは脱出しています。

ということで、FuelPHP ユーザの人、FuelPHP を今後使ってみようと考えている人なども、お気軽にご参加ください。GitHub アカウントとブラウザとインターネット接続さえあれば、参加することができます。

合格率を 3倍にするための『PHP技術者認定上級試験問題集』が発売されます

[2013/10/28 追記]達人出版会より 本書の PDF 版 が発売されました。

みなさん、「PHP技術者認定試験」をご存じでしょうか?

PHP技術者認定試験

PHP の専門技術取得能力を正当に評価できる技術者認定試験を実施することにより、「認定者の雇用機会」や「認定者が所属する会社のビジネスチャンス」の拡大を図ることを目的とする試験で、PHP技術者認定機構(非営利団体)が実施しています。

初級と上級(とウィザード)があり、上級合格者は「PHPの言語仕様から実用的で高度なプログラミングテクニックをもつ上級者」という位置づけになります。

2013年5月11日時点での合格率は、

初級 72.7%
上級  6.6%(合格者 12名)

となっています。

難関の上級試験

上記のように上級の合格率は非常に低く難関試験となっています。これは、上級が試験範囲が広く難しいこともありますが、完全なテキストが存在しないことも大きな要因の 1つだと考えられます。

上級試験のテキストはオライリーの『プログラミングPHP 第2版』なのですが、この本が試験範囲のすべてをカバーしているわけではなく(出題割合で78%)、しかも、本が古いため最新の情報に自分でアップデートして読まないといけないのです。

要するに独学で効率よく勉強しづらいということです。

テキスト以外には、@IT の ITトレメから模擬問題が配信されています。模擬問題を解くことは試験対策として有効ですが、この模擬問題はシステムの制約などから本番の試験問題より短いものが多く、本番の試験問題はもっと解くのに時間がかかり、また、私の感触では本番の試験問題の方が難易度が高いです。

PHP技術者認定上級試験問題集

そこで、今回、『PHP技術者認定上級試験問題集』が作成されることになりましたが、試験範囲を網羅するためこのように非常に分厚い本になってしまっています。問題数 348問ということで、毎日 1問ずつ解いたら一通り解くのに 1年近くかかります。

なお、執筆には 1年半近くかかっています。

ただし、その分、現状の試験範囲を完全に網羅しています。上級試験の全範囲を網羅している本は、現状、この問題集しかありません。

この問題集をしっかりとやれば、まあ、しっかりやるのは相当大変だと思いますが、上級を目指すような方なら、ほぼ確実に 70点はとれるようになると思います。もちろん保証はできませんが。

私の独自の調査では、この問題集でしっかりと学習すれば 15点は得点がアップします。多くの人は合格点である 70点のぎりぎり下で不合格になっているそうなので、人によっては合格可能性は何倍にもなるでしょう。

また、初級の問題集が 240ページで 2800円(+税)なのに対し、この上級問題集は 656ページ(初級の 2.7倍です)で 4300円(+税)(初級の 1.5倍です)という超お買い得になってます。

読者の声

発売日が 9/19 なのか 9/21 なのかよくわからない(w のですが、たぶん、まだ実際にこの本を手にされた方はほとんどいないと思います。PHPカンファレンスでは、先行販売されていたのですが、たぶん 2冊くらいしか売れませんでした(w

ということで、レビューなどほとんどありませんが。

『PHPエンジニア養成読本』は買って損のない 1冊

技術評論社の細谷さんより献本いただきました。ありがとうございます。

PHPエンジニア養成読本 〔現場で役立つイマドキ開発ノウハウ満載! 〕 (Software Design plus)

PHPエンジニア養成読本 〔現場で役立つイマドキ開発ノウハウ満載! 〕 (Software Design plus)

すでにいろいろな人が記事を書かれており、PHP カンファレンスでも完売するという人気で、今更な感はありますが、PHP のイマドキの開発についてのムック本です。

自分がどれくらいイマドキなのかの確認にも役立ちますね。

目次

巻頭企画
PHP最前線
〜最新動向といまどきの開発技法をチェック!

    第1章:PHPの最新動向…… 新原 雅司
    第2章:いまどきPHP開発技法入門…… 新原 雅司

特集1
[最新]ライブラリ&フレームワーク活用の基礎知識
Composer+Symfony/FuelPHP/CakePHP/注目株

    第1章:[新定番]Composerの基礎と活用……原田 康生
    第2章:フレームワークを本当に使いこなすための考え方……原田 康生
    第3章:Symfony活用のポイント……小山 哲志
    第4章:FuelPHP活用のポイント……小山 哲志
    第5章:CakePHP活用のポイント……原田 康生
    第6章:注目フレームワーク総ざらい……田中 久輝

特集2
現場で役立つ PHPエンジニアの開発術
〜テスト/ソースコード管理/開発環境/品質向上

    第1章:PHPUnitではじめる自動テスト…… 田中 久輝
    第2章:Gitでばっちりソースコード管理…… 田中 久輝
    コラム:いまさら聞けない「公開鍵認証」…… 田中 久輝
    第3章:注目IDE「PhpStorm」&定番エディタ「Vim」活用術…… 保科 一成
    第4章:コードの品質を高めよう…… 保科 一成

特集3
PHPエンジニアのための クラウドサービス活用術
〜AWS,Pagoda Boxを使って学ぶ

    第1章:PHPでクラウドの世界へ飛び込もう!…… 大村 創太郎
    第2章:[IaaS編]Amazon Web Servicesを使ってみよう…… 大村 創太郎
    第3章:[PaaS編]Pagoda Boxを使ってみよう…… 大村 創太郎

特別企画
    一から学ぶ PHP開発の基礎知識…… 増永 玲

FuelPHP

「特集1」で FuelPHP についても、「Symfony / FuelPHP / CakePHP」として紹介されています。ただし、各フレームワークにつき 3ページしかないため、これだけで FuelPHP をマスターするのは無理ですが、導入としてポイントを抑えた紹介記事になっています。

  • ディレクトリ階層
  • config システム
  • forge()
  • モジュール、パッケージ、vendor

などなど。

ちなみに、FuelPHP が new ではなく forge() でオブジェクトを生成するのは、Multiton パターンを採用しているためではないかと思います。

正誤表

なお、一部のリスト(ソースコード)が抜けてしまうという非常に残念なことになっていますが、正誤表が出ていますので、参照されるとよいかと思います。

Sculpin で始める PHP での静的サイト生成

[2013/10/15 追記]より詳細な解説記事 PHPで静的サイトを簡単に作成できるSculpin — A Day in Serenity (Reloaded) — PHP, FuelPHP, Linux or something を書きました。

Ruby 製の Jekyll が有名ですが、PHP にも静的サイト生成ツールがありました。

テンプレートは Twig、コンテンツは Markdown で書けます。
インストール

Sculpin の Blog のスケルトンをインストールします。

$ git clone git@github.com:sculpin/sculpin-blog-skeleton.git

Sculpin 本体を phar でインストールします。

$ cd sculpin-blog-skeleton
$ curl -O -k https://download.sculpin.io/sculpin.phar

Blog のスケルトンで必要なコンポーネント(bootstrap など)をインストールします。

$ php sculpin.phar install

Web サーバの起動

ページを生成し、PHP のビルトイン Web サーバを起動します。PHP 5.4 以上が必要です。

$ php sculpin.phar generate --watch --server

これで、http://localhost:8000/ でサーバが起動しました。

[2013/10/15 追記]より詳細な解説記事 PHPで静的サイトを簡単に作成できるSculpin — A Day in Serenity (Reloaded) — PHP, FuelPHP, Linux or something を書きました。

XAMPP 1.8.3-0 for Linux の PHP を 5.5.2 にバージョンアップする

PHP 5.5.2 がリリースされましたので、Ubuntu 12.04 での XAMPP 1.8.3-0 for LinuxPHP を 5.5.2 にバージョンアップしました。

まず、コンパイルに必要なパッケージを追加します。

$ sudo apt-get install libltdl-dev

PHP のソースを展開します。

$ tar xvf php-5.5.2.tar.xz
$ cd php-5.5.2

phpinfo() から Configure Command をコピペし、configure します。

EXTRA_LIBS="-liconv -lstdc++" './configure' '--prefix=/opt/lampp' '--with-apxs2=/opt/lampp/bin/apxs' '--with-config-file-path=/opt/lampp/etc' '--with-mysql=mysqlnd' '--enable-inline-optimization' '--disable-debug' '--enable-bcmath' '--enable-calendar' '--enable-ctype' '--enable-ftp' '--enable-gd-native-ttf' '--enable-magic-quotes' '--enable-shmop' '--disable-sigchild' '--enable-sysvsem' '--enable-sysvshm' '--enable-wddx' '--with-gdbm=/opt/lampp' '--with-jpeg-dir=/opt/lampp' '--with-png-dir=/opt/lampp' '--with-freetype-dir=/opt/lampp' '--with-zlib=yes' '--with-zlib-dir=/opt/lampp' '--with-openssl=/opt/lampp' '--with-xsl=/opt/lampp' '--with-ldap=/opt/lampp' '--with-gd' '--with-imap=/opt/lampp' '--with-imap-ssl' '--with-gettext=/opt/lampp' '--with-mssql=/opt/lampp' '--with-sybase-ct=/opt/lampp' '--with-mysql-sock=/opt/lampp/var/mysql/mysql.sock' '--with-mcrypt=/opt/lampp' '--with-mhash=/opt/lampp' '--enable-sockets' '--enable-mbstring=all' '--with-curl=/opt/lampp' '--enable-mbregex' '--enable-zend-multibyte' '--enable-exif' '--with-bz2=/opt/lampp' '--with-sqlite=shared,/opt/lampp' '--with-sqlite3=/opt/lampp' '--with-libxml-dir=/opt/lampp' '--enable-soap' '--enable-pcntl' '--with-mysqli=mysqlnd' '--with-iconv=/opt/lampp' '--with-pdo-mysql=mysqlnd' '--with-pdo-sqlite' '--with-icu-dir=/opt/lampp' '--enable-fileinfo' '--enable-phar' '--enable-zip' '--enable-intl' --with-readline

以下は削除しました。

'--with-oci8=shared,instantclient,/opt/lampp/lib/instantclient'
'--with-pgsql=shared,/opt/lampp/'
'--with-pdo-pgsql=/opt/lampp/postgresql'

以下は PHP 5.5 で廃止されました。

--enable-magic-quotes, --enable-zend-multibyte, --with-sqlite

以下は変更しました。

'--with-imap=/bitnami/xamppunixinstallerstackDev-linux/src/imap-2007e'
↓
'--with-imap=/opt/lampp'

以下を追加しました。

EXTRA_LIBS="-liconv -lstdc++"
 --with-readline


コンパイルしてインストールします。コンパイルは手許の環境では 8分20秒かかりました。

$ time make
$ sudo make install
Installing PHP SAPI module:       apache2handler
/opt/lampp/build/instdso.sh SH_LIBTOOL='/opt/lampp/build/libtool' libphp5.la /opt/lampp/modules
/opt/lampp/build/libtool --mode=install install libphp5.la /opt/lampp/modules/
/opt/lampp/build/libtool: 3215: /opt/lampp/build/libtool: install_prog+=install: not found
/opt/lampp/build/libtool: 3235: /opt/lampp/build/libtool: files+= libphp5.la: not found
libtool: install: you must specify an install program
libtool: install: Try `libtool --help --mode=install' for more information.
apxs:Error: Command failed with rc=65536
.
make: *** [install-sapi] エラー 1

エラーが出てしまいました。

/opt/lampp/build/libtool の先頭を /bin/sh から /bin/bash に変更。

$ sudo make install

おしまい。