Category Archives: PHP

Ruby on Rails に影響を受けたPHPフレームワーク(2005)のその後

ブログの過去記事 Ruby on Rails の PHP 移植プロジェクト で、「Ruby on Rails を PHP で」という触れ込みで2005年当時に売り出していた3つのフレームワークを紹介していました。

その3つのフレームワークが現在どうなっているかを調べました。

CakePHP

13年後の今も健在ですね。最初のとっつきやすさから人気が出たのと、日本語に紹介する人が多く熱心だったこともあって、一時期は一番人気のPHPフレームワークでした。今は PHP 7ベースということ。

Biscuit

2005年当時のBiscuitはリンク切れとなっています。元の作者はその後 Ruby 使いとなったままのようで、Biscuit や PHP についての言及はブログにはありませんでした。

Biscuit Linkという別のPHPフレームワークがあり、作者のCarlosさんは1994年生まれ。Biscuitフレームワークに「インスパイアされ」て作ったフレームワークと自己紹介にあります。

PHP on Trax (旧名 PHP On Rails)

独自ドメインは無くなっていましたが、GitHub 上にソースコードはあります。直近の更新が2014年。PHP5ベースでパッケージ管理はPEARです。

[メモ] Docker + Spress で静的サイトを作る

PHP製の静的サイトジェネレーター Spress を、Windows 上で Docker で実行しました。

ソース

PHP製の静的サイトジェネレーターSculpinを使ってみたのですが、開発が思ったほどアクティブでなさそうなのと、Spress が Sculpin の影響を受けた後継者である、みたいなことを言っている人がいたので、こちらも試すことにしました。

今回も、Docker Compose を使ったセットアップのメモを、Spress自身を使って静的ブログにしてみました。

SpressをDocker(+Compose)で動かす

しかし、日本語のタグやカテゴリーに対してファイルを生成しないので、非ヨーロッパ諸語に関してはSculpinよりも手入れが必要という印象でした。slugを作るところの関数が、UTF-8一般には対応しておらず、マッピングテーブルを使ってウムラウト等を消しているだけ。

明治150年だけじゃない! 毎年和暦のキリ番を祝いたい人のためのキリ番情報

今日のニュースより

菅官房長官は閣議のあとの閣僚懇談会で、「再来年は明治元年から150年を迎え、わが国にとっても一つの大きな節目だ。明治の精神や日本の強みを再認識することは極めて重要であり、明治以降の歩みを次世代に残すことが大事だ」と述べました。

官房長官 再来年の「明治150年」へ施策検討 | NHKニュース

2000年のときに江戸400年を祝った覚えないな。なぜ明治だけ?

はてなブックマーク – yamaisan のブックマーク – 2016年10月7日

年号はいっぱいあるのに、ってことですね。明治が好きで明治に戻りたくてしょうがない人が政治家に多いのかもしれません。

それはともかく、「年号はたくさんあるので、毎年何かしらキリのいい〇〇周年になってるのでは」と思い、計算してみました。前後10年ずつ20年分です。ソースコードはこちら

2006年(平成18年)は

2007年(平成19年)は

2008年(平成20年)は

2009年(平成21年)は

2010年(平成22年)は

2011年(平成23年)は

2012年(平成24年)は

2013年(平成25年)は

2014年(平成26年)は

2015年(平成27年)は

2016年(平成28年)は

2017年(平成29年)は

2018年(平成30年)は

2019年(平成31年)は

2020年(平成32年)は

2021年(平成33年)は

2022年(平成34年)は

2023年(平成35年)は

2024年(平成36年)は

2025年(平成37年)は

今年2016年は享保300年だそうです。暴れん坊将軍の時代ですね。そして、検索したら出てきました。享保300年を祝ってる人たち。明治だけじゃなかった!

造幣局 : 享保の改革300年2016プルーフ貨幣セット~貨幣の改鋳~の通信販売について

300年に一度の企画【享保の会 大感謝祭】開催のご案内 | ジャパントラディショナルカルチャーラボ

来年2017年は、応仁550年。応仁の乱も550周年というわけですね。

来年はまた、養老1300年でもあります。「養老」って年号だったんだ。関係ないけど養老の滝は今年60周年だそうです。

スーパー切りの良い年ということだと、来年の寛仁1000年や、2021年の治安1000年がとても切りがいいですね。「治安」なんて年号もあったんだ。

[メモ] Docker + Sculpin で静的サイトを作る

PHP製の静的サイトジェネレーター Sculpin を、Windows 上で Docker で実行しました。

ソース

サンプルのテーマを派生させて差分で日本語+自分用のテーマを作ろうとしたけど、theme の仕組みはまだ実験的です、とある通り、サンプルテーマもテーマ内のアセット読み込みに対応してなかったりまだまだでした。

セットアップのメモをSculpin自身を使って静的ブログにしてみました。

Home — Docker ComposeでSculpinを動かすブログ — ついでにサンプルテーマを日本語に

使えそうなら自分用で必要な Theme と Bundle を作っていこうかとも思っていましたが、他のツールも触ってみた方がいいかもという結論になりました。

ズンドコキヨシ問題をPHPとFSMで解く

先週一部で流行していたズンドコキヨシ問題

ランダムな結果の中から特定のシーケンスが出たら「キヨシ」を出し、終了する、という要件で、解き方はいくらでもあると思いますが、自分が考えたのは有限オートマトンを使ったもの

まずはPHPでFSMを扱っているパッケージを探します。PackagistFSM で検索。ダウンロード数が多いパッケージをいくつか見てみて、使い方が好みなものを選びます。今回は Stagehand_FSM を選びました。業務ならここでパッケージの中を精査するんでしょうけど、まあここでは省略します。


{
"require": {
"piece/stagehand-fsm": "2.4.*"
}
}

Composer で持ってきて呼び出します。楽ちんですね。


require 'vendor/autoload.php';
use Stagehand\FSM\StateMachine\StateMachineBuilder;

ドキュメントにありますが、ステートマシンのインスタンスを作り、状態と遷移と開始(や終了)を与えて動かすだけ。

ということで、与えるデータを作るために、次はズンドコキヨシ問題の遷移図を考えます。”online FSM editor”で検索すると、ブラウザで遷移図を描けるページが見つかりました。これは便利。

zundokokiyoshi_FSM
(間違いがあり、画像を差し替えました。@qckanemoto さんありがとうございました。)

あとは図を基に状態と遷移を与え、それぞれの状態で「ズン」や「ドコ」、あるいは「ドコキヨシ」を表示させれば完成です。

FSMを使う意味

今回のチャレンジを最短の手数で解くだけなら、必ずしもFSMみたいなものを使う必要はないでしょう。ただ、遷移図や遷移表みたいなものを書いて、それをただコードに落とし込む、というのは、抜けを減らせる安心感があります。

# 図を間違うこともありますし、コード化するときに間違うこともありますけどね。テスト書いてないので、業務レベルなら失格です

もし、キヨシが出る条件が頻繁に変わるとか、ズンとドコを使って新しい曲を作りたいとか、同じコードのデータ(遷移表)だけをさまざまに切り替えて別の動作をさせたいとか、そういう方向に仕様の変化が予想される場所なら、使うといいのではないかなと思います。ゲーム系のプログラマーはたぶんこういうの日常的に使ってるのでは。

あとは、描いた遷移図や遷移表からそのままJSONなりの定義が出力できて、それを直接食わせたら動くライブラリ、みたいなものがあると、もっと楽で間違いもないんだろうなあ、と思いました。さらに手間を掛けるならそういうツールやライブラリを探すか、作るかするんでしょうね。

ワードプレスのインポートツールで警告が消えない問題

WordPress のサーバ再構築をする必要があり、標準のXMLエクスポート形式であるWXRファイルを読み込ませたところ、最新のWordPressを使っているのにも関わらず以下のような警告が出てきます。

( ! ) Strict standards: Declaration of WP_Import::bump_request_timeout() should be compatible with WP_Importer::bump_request_timeout($val) in C:\Users\akky\OneDrive\services\akimotojp\blog\wp-content\plugins\wordpress-importer\wordpress-importer.php on line 38

wordpress-importer-caution

バグ報告もされているのですが、これがなんと2年も前のもの。ずっと直ってないというわけです。

直し方がわかってないわけではなく、現時点のバージョンなら、wp-content/plugins/wordpress-importer/wordpress-importer.php 1110行目の

function bump_request_timeout() {

function bump_request_timeout($unused) {

などとするだけです。

わかってるなら配布してるオリジナルを直してよ、と思うところですが、バグチケットの中でリード開発者により「まれにしか使わないインポートの警告を消すためだけに、500万人の管理者にアップデートさせるのは『アップデート疲れ』(update fatigue)もあるのでやりたくない」という結論が出されていました。

そして、他の重要な修正も入るなら喜んでプラグインの更新を掛けるよ、と、未解決のインポート周りのチケットリストを紹介することで返答を結んでいます。

そんなに気になるなら他の重要なバグ直せば一緒に直るよ、なんていう返しもあるのかあ、と変なところで感心しました。

インポート機能を全員が使うわけではない、というのは確かにその通り。インポート作業をするぐらいの利用者なら警告の意味も読めるし、これが実害のない警告に過ぎないこともちょっと検索すればわかるかもしれません。

しかしそれでも、推奨された最新バージョンを使って、標準で動かして警告が出てしまうのは、それこそ500万ユーザーを誇るならカッコ悪いように思うですが。警告を見た人の多くはそれが何かを調べ、対処するなり無視するなり判断するという時間を取られていますし。

WordPress Importerプラグインの一番新しいバージョンも5ヶ月前に出ており、このチケットが切られた2年前より後に修正を含めるタイミングはあったみたいだし。

# 他にStrict Standardsを外すという解決法もなくはないですが、PHP 7 も見えているこの時期にそんなことをするのは当然オススメできません。

weca.mp – 島でPHPの開発合宿

面白い開発合宿の案内が流れてきたのでご紹介。この業界、泊り込みのイベントを「キャンプ」となぞらえることは良くありますが、今回企画されたPHPの開発合宿We Campは本当のキャンプ場で開催されます。しかも場所は島。

wecamp-island

オランダのデ・クルート島。地図によれば、フェルウェ湖という湖の中に浮かぶ島のようです。宿泊は「豪華な」テント。トイレ・シャワー完備。

イベント内容ですが、当日集まった中からランダムな5人でチームを組み、コーチの助言を受けながら新しいものを開発するということ。技術を高めるのももちろんですが、チーム開発やチーム管理なども鍛えられる機会になると。

また、「人生は仕事と技術だけではない」ということで、ただ缶詰になって開発するだけではなく、昼間のボートやカヌー、夕方からのいろいろなアクティビティも予定されているのだとか。

開催は8月25日から29日の5日間。参加料は食事や往復のボート代も含めて375ユーロ。現時点での残り参加枠は24人分だそうです。PHPの開発者でこの夏冒険してみたい人、オランダまでどうでしょう? オランダでのイベントですが、サイトも全部英語ですし、このあたりのイベントは周辺の国からも参加があるでしょうから、英語で大丈夫だと思います。

僕は家事等あってちょっとオランダまでは行けそうにないですが、ちょうど個人的(←会社とは無関係のイベントです)にも野外での開発会を考えていて、明日第一回を行うところだったので、自然の中での開発会がどんな成果を作り出すのか、興味がありますね。

# こちらの開発会は、告知が遅くなってしまったのでまだ参加者が少ないです。明日木曜昼に東京で時間のある方はぜひ

書評: PHP逆引きレシピ第2版

いただいた本。PHPに関して、「こういうことがしたい」という希望から、それをする方法を探すための本です。

http://www.amazon.co.jp/PHP%E9%80%86%E5%BC%95%E3%81%8D%E3%83%AC%E3%82%B7%E3%83%94-%E7%AC%AC2%E7%89%88-PROGRAMMER%E2%80%99S-RECiPE-%E9%88%B4%E6%9C%A8/dp/4798119873/

第1版の時と同じような感想ですいませんが、まず、この分厚い本を最初から最後まで読んだりはしていませんのでご了承を。パラパラと読んだ限りは、ある目的を達成するためのPHPのコード例が、今風のコードでわかりやすく紹介されていると言ってよいかと思います。

ほとんどのコードが、”<?php”で始まりhtmlヘッダもすべて含んでいますが、ブラウザ経由で動かさなくてもわかるような項目については、コマンドラインから実行できる形でも十分なんじゃないでしょうか、とは思いました。

第8章のphpMyAdminを使いたい、は、PHP関係ない、と思ったものの、これまで触ったことがない人には実はかなり有用かもしれません。phpMyAdmin の使い方って、自分の場合は使いながら勘で覚えたのですが、今から思えば最初はいろいろ不思議なことをしていたようにも思うので。

同じ問題を解決するにも色々な方法があり、必ずしも本書で紹介された方法が最新で最適と言えないこともあるとは思いますが、すごく古かったり、今では推奨されないようなやり方はそんなに載っていないように感じました。

# たとえば、077は自分ならphp_intl拡張を使いますし、210はfilter_var()を使うと思います。いくつかの有名ホスティングサービスで動くコードであることも検証されているようなので、PHP拡張が必要なコードは入れにくいのかもしれません。

あと、本の特性的に、どうしても内容を検索したくなってしまいます。電子書籍のほうがいいのでは。鈍器になりうる重さがなければ、電車通勤の人とかの暇つぶし(というと語感が悪いか)として読むと、新たな発見があるかもしれません。

書評に関する注意書き

  • 貰って書いた本についてはその旨記述します
  • このブログはサイボウズ・ラボの社員ブログなので、秋元個人に献本いただいても、何でも自由に書けるわけではありません
  • もちろん、書評以外の他のブログエントリもそうですが、社員ブログではあってもサイボウズ・ラボ全社やサイボウズ・グループの意見を代弁してるわけではありません
  • 献本いただいても必ず読めるわけでも、ご紹介できるわけでもありません。読書の速度は遅いので、発売前や発売直後に送っていただいても、ご紹介が半年後になるようなことも多々あります

PHPで数字を英語に変換する

5年前に作った「数字を英語に」を手直ししました。

数字を入れると、その数字を英語でどう読むかを変換するという単機能のサービスです。

たとえば、「42」に対して、”forty-two”を返します。

akimoto-jp-english-number

作ったまま放置していたのですが、少ないながらも毎日利用者がいるようなので、一から書き直してみました。

今回の作り直しでは、以下のような変更を行っています。

  • ベタPHPからSilexフレームワークの利用へ変更
  • PHPで書かれたライブラリNumber to wordをやめて、PHP Intl拡張を利用
  • 上記に伴い、英語・フランス語以外のテキスト化にも対応。話者人口の多そうな言語での結果を列挙しています。
  • デザイン無しから、流行のTwitter Bootstrapを利用、デザインをレスポンシブにしてスマートフォン対応
  • 各種ライブラリをComposer管理に

5年も経つといろいろ便利になって、労力は少ないのに見栄えも機能もいいもの(当社比)が作れるものですね。

5年前は、ライブラリの説明に「ドイツ語にも変換できるヨ」とあったので表示させていたら、ドイツ語のわかる方から「すごく間違った結果が出ますよ」と指摘されて引っ込めました。もし今回変換結果が違ってたら、僕の間違いというよりPHPかICUライブラリの間違いです。

オープンソース徹底活用 symfony1.4によるWebアプリケーション開発

日本Symfonyユーザー会でsymfony1.4の本を出しました。
Symfony14bookcover
オープンソース徹底活用 symfony 1.4によるWebアプリケーション開発|秀和システム
ユーザー会のメンバーとして、たいへん少ない分量ですが参加させていただきました。symfony使い11名が分担して、symfonyフレームワークの現在の安定最新版であるバージョン1.4のインストールから実践的な利用法までをまとめています。
日本語のsymfony1.xの本は過去に何冊かでているのですが、それらが1.4より前に出版されたものであることと、symfonyが1.2, 1.3の時に改良された項目も多いことから、今からはじめるならこの本がおすすめです。
Symfonyのコア開発者は新バージョンであるSymfony2に注力していますし、ちょっと遅れてますがSymfony2も相当おもしろいものになりそうです。しかし、バージョン1系の集大成であるsymfony1.4も、2012年11月までコアチームのサポートが行われることが約束されており、その安定度からまだまだいろいろなサイトで利用されていくことが見込めます。Symfony2が安定して、今回のような使い込みの本が出るのはもうちょっと先になるのかなと。どんな使い込みかについては目次を見ていただければ。
本書の正誤表などサポート情報については、日本Symfonyユーザー会のページを参照ください。
# 発行が育休中だったのでご紹介するのを失念していました。