今日も微速転進

ここではないどこかへ

日本語のOpenCV 3.x 本の比較

(2017年の)6〜8月とOpenCV 関連本の出版ラッシュだったようなので簡単なまとめ。個人の主観によるものであり、独断と偏見に基づくものです。悪しからず。

opencv.org

環境構築、OpenCVの基本、応用(著者の得意分野)の3つのうち2つ、もしくは全てというのが基本パターン。 対象バージョンは3.0、3.1、3.2のいずれかで言語は基本的にC++

[2018/05/09 追記・更新]

新しく出版された書籍の情報を追加。

さすがに最新のバージョン3.3(8月3日リリース)を対象にした本はない。 工学社から発売されている「画像処理アルゴリズム入門 」は新しいバージョンを前提にしている(基礎的なトピックだけだけど)。

オライリー

詳解 OpenCV 3 ―コンピュータビジョンライブラリを使った画像処理・認識

詳解 OpenCV 3 ―コンピュータビジョンライブラリを使った画像処理・認識

詳解 OpenCV 3 ―コンピュータビジョンライブラリを使った画像処理・認識

ついにきたかという感じ。予約受付中。プログラミング言語C++で1024ページ。

すいません英語版買ったのに全然読めてないです。機械学習関係でページ数が増えているはず。

英語版はあまりわかりやすい英語ではなかったので日本語版の存在は大きいと思います。

中途半端に日本人の書いた本を買ってしまうよりは良さそう。ただし厚みに注意。

こういう分厚い本こそ電子書籍のメリットが生きると思うのだけど、紙媒体しか無い……。

このページ数だと書見台、使えないかも。

actto BST-02 ブッスタンド                (OEM品番:EDH-004)

actto BST-02 ブッスタンド (OEM品番:EDH-004)

講談社サイエンティフィック(KS情報科学専門書)

OpenCVによる画像処理入門 改訂第2版 (KS情報科学専門書)』

OpenCVによる画像処理入門 改訂第2版 (KS情報科学専門書)

OpenCVによる画像処理入門 改訂第2版 (KS情報科学専門書)

出版社サイト: OpenCVによる画像処理入門 | 書籍情報 | 株式会社 講談社サイエンティフィク

一冊で画像処理の基本的な手法と、OpenCVを用いた実現方法を両方解説しようという本。

C言語によるOpenCVを使用しないサンプルと、OpenCVを使用したPythonC++のサンプルが掲載されているのが特徴。

反面、欠点としては以下のとおり。

  • 教科書くさい
  • 基本のみで応用がない
  • 正味の情報量がやや少なめ

コンセプトの都合とPython/C++の両方のサンプルを掲載している関係でどっちつかずな感じは否めない。

OpenCV未経験かつ画像処理も未経験というケース向き。 対象のバージョンはOpenCV 3.2。

大学の研究室で、先輩が後輩に「とりあえずこれ読んどいて」とか言いながら手渡す光景が目にうかぶ。

カラーページは巻頭のみで、あとは2色刷り。そのぶん価格は他より安め。

OpenCVによるコンピュータビジョン・機械学習入門 (KS情報科学専門書)』

OpenCVによるコンピュータビジョン・機械学習入門 (KS情報科学専門書)

OpenCVによるコンピュータビジョン・機械学習入門 (KS情報科学専門書)

出版社サイト: OpenCVによるlコンピュータビジョン・機械学習入門 | 書籍情報 | 株式会社 講談社サイエンティフィク

同じシリーズでこっちは応用トピック。上記の本を読んでいる前提。

強化学習ではなくて機械学習なんで注意。

マイナビ

OpenCVPythonによる機械学習プログラミング』

OpenCVとPythonによる機械学習プログラミング

OpenCVとPythonによる機械学習プログラミング

出版社のページ:OpenCVとPythonによる機械学習プログラミング | マイナビブックス

※ 予約受付中。

翻訳書。

プログラミング言語としてはPython

原著はたぶん『Machine Learning for OpenCV』。

原著のサンプルコード:mbeyeler/opencv-machine-learning: Machine Learning for OpenCV: Intelligent image processing with Python

原著のサンプルコードのリポジトリにはPython 3.5でテストしたと記述あり(Python 2.7のような古いバージョンでもおそらく動作するだろう、とも)。

翻訳書としては原著の定価より安い。

『画像処理・機械学習プログラミング OpenCV 3対応』

画像処理・機械学習プログラミング OpenCV 3対応

画像処理・機械学習プログラミング OpenCV 3対応

出版社ページ:画像処理・機械学習プログラミング OpenCV 3対応 | マイナビブックス

サポートサイト:『画像処理・機械学習プログラミング』サポートサイト | マイナビブックス

出版社のサイトからPDFが購入可能。 機械学習特化。176ページしかないので広く浅くか。

達人出版会でも購入可能。

画像処理・機械学習プログラミング OpenCV 3対応【委託】 - 達人出版会

OpenCV 3 プログラミングブック』

OpenCV 3 プログラミングブック

OpenCV 3 プログラミングブック

比較的早い時期に発売された日本語の本だけど、内容が偏っていてAmazonのレビュー欄がひどいことになってたという。

内容がまずいというより読者がタイトルから想像する内容と、実際の内容が乖離しているのが原因。

もっと特定のトピックを対象にしていることを強調するようなタイトルにしておけばよかったのではないかと思う。

環境構築については詳しいけど、最新版の情報ではないので注意。

対象のバージョンはOpenCV 3.0。

目次を見たうえで必要な情報が記載されていると確信できない限り購入するのはやめた方がいいと思う。とにかく偏りすぎ。

カットシステム

計3冊でうち2冊が同じ著者で片方がC++。もう一方がJava

この出版社の特徴としてサンプルコードの入手に(巻末に袋とじされている)パスワードとユーザー登録が必要。また価格が高めなのと、製本に使われている紙が厚め。

過去に酷い地雷本をつかまされているのでこの出版社の本はあまり買いたいくない。

誠に遺憾ながら私はこの出版社嫌いです。

どうせ出すなら他の出版社に原稿持ち込みましょうよ……。

『さらに進化した画像処理ライブラリの定番 OpenCV 3基本プログラミング』

さらに進化した画像処理ライブラリの定番 OpenCV 3基本プログラミング

さらに進化した画像処理ライブラリの定番 OpenCV 3基本プログラミング

可もなく不可もなく。基本的な内容がメイン。ただ、Webでよく紹介されている内容が中心で目新しさに欠ける。

OpenCVのビルド・インストールに関しては巻末付録扱い。

Javaで始めるOpenCV3プログラミング』

Javaで始めるOpenCV3プログラミング

Javaで始めるOpenCV3プログラミング

上記と同じ著者のJava バージョン?

『実践OpenCV 3 for C++画像映像情報処理』

実践OpenCV 3 for C++画像映像情報処理

実践OpenCV 3 for C++画像映像情報処理

出版社サイト:CUTT System:実践OpenCV 3 for C++

タイトルのとおり動画よりのテーマを解説している。Windows 環境向け。開発環境としてVisualStudio を前提にしている。

他の本ではあまり解説されていないhighguiモジュールや周波数フィルタリングについて解説しているなど他とは傾向が異なる。
カットシステムのOpenCV関連の本の中では一番良いと思う。

工学社

『画像処理アルゴリズム入門 (I・O BOOKS)』

[2018/05/09 追記]

画像処理アルゴリズム入門 (I・O BOOKS)

画像処理アルゴリズム入門 (I・O BOOKS)

PythonOpenCVで画像処理の基礎を学ぶという趣旨の本。

知っている内容がメインのようなので買わなかった。ページ数が少ないので未経験者にはおすすめだと思う。

pronama.azurewebsites.net

何処かで見たことのあるイラストだと思ったらそういうことなの?

『OpenCV3ではじめるWindowsアプリ開発

OpenCV3ではじめるWindowsアプリ開発 (I・O BOOKS)

OpenCV3ではじめるWindowsアプリ開発 (I・O BOOKS)

タイトル通りWindows 環境向けのはず。実物を一度も見たことがない。 安いけどページ数少な目で古いのでオススメしない。

番外編

Interface 2017年5月号

特集記事でOpenCVの機能を網羅的に紹介している。対象としているOpenCVのバージョンは2.4系だけどいろんな処理をどういう時に使うか網羅的に紹介している。

ある画像に対して特定のフィルタ処理を適用する前と適用後の画像が掲載されている。

サンプルコートがC言語だったりイマイチな面は否定しないが、画像処理の用語とOpenCV のモジュールの関係の把握には役に立つ。 どういう時にどのモジュールのどの関数を使うのかさえ把握できればあとは自分の使っているバージョンのリファレンスを調べればいい。

Interface 2018年7月号

相変わらずOpenCV 2.X。サンプルコードは3.xでも動くと書いてある。

まとめ

選択の際の注目ポイントは大きく3つではないかと思います。

  • OpenCV の使用経験の有無
  • 画像処理自体の知識の有無
  • 機械学習関連か、あるいは何か特定のテーマに興味がある

ただの便利な画像処理ライブラリとして使いたいならweb上のチュートリアル系の記事ととリファレンスで十分。特にPython + OpenCV の記事はQiitaにたくさんあるはずです。

画像処理もOpenCVも未経験ならKS情報科学専門書シリーズの『OpenCVによる画像処理入門』が無難。あとは目次をよく見て自分の知りたいテーマについて記載があるかどうかで判断するのがベターだと思います。

特定のテーマに興味があるなら洋書の方がいいかもしれません。例えば顔画像から性別や年齢を推定する、車のナンバープレートの認識、などの応用について章を割いている本がPacktから出ていたはずです。

どうも決定打に欠ける感じ。

随時更新予定です。

actto BST-02 ブッスタンド                (OEM品番:EDH-004)

actto BST-02 ブッスタンド (OEM品番:EDH-004)

プロジェクト管理と年表の必要性

ちょっとした思いつき。

f:id:atuyosi:20170905231328j:plain:w320
Photo by Les Anderson on Unsplash Les Anderson

なぜ唐突にこういう記事を書いているかというと、数週間前に久々に既存のプロジェクトに途中参加した時に感じたフラストレーションが発端。

何の話か

プロジェクトに途中参加したメンバーがスムーズに活動できるようにするために何が必要かという話。

もっとくだけた言い方をすると、「今北産業」(今来たばっかりなので状況を三行で説明してくれ、の意)に対するクールな対処法はないか。

個人的見解

大雑把な経緯が把握できればいいので、いつどういう経緯で始まったプロジェクトで、今まで時系列で何をやって来たのか、を書き留めておけばいいのではないか?

ざっくり自分が感じたフラストレーションとしては以下のような感じ。

  • 誰が何のために始めたのか?
  • 現在のプロジェクトの目的・目標は?
  • 今までのメンバーと役割の分担(誰に何を聞けばいい?)
  • エポックな出来事

ソフトウェア開発プロジェクトならリリース日時、プロジェクト管理ツールの過去のチケット(Githubならプルリクエストも)などを時系列で並べるだけでもかなりの今までの経緯は把握できると思う。

ある程度しっかりプロジェクト管理ツールを使っていたとしても、やっぱりこれだけでは足りなくて、事の発端と目的は文書化する必要があるんじゃないだろうか。

プロジェクト管理ツールはあくまでも進捗管理のツールだし。

そもそもプロジェクトを開始するのは何らかの目的があればこそで、そこにこれを実現したいという思いは管理してくれない。ましてや諸々の大人の事情とか背景なんかは特に。

まとめ

少なくとも開始から一年以上経過するか、リリース回数が10回超えるか、プロジェクトの参加メンバーの追加が一定回数を超えたらこれまでの経緯の文書課に取り組むべきだと主張したい。

フォーマットは文字通り略年表でいいと思うが、少なくとも誰がいつどういう理由で始めたか、という思いはきっちり文書化すべき。


それができないなら新規メンバーの追加は諦めてほしい。半端な理由で他人を巻き込まないでほしい。

人間関係の出来上がっている何らかのグループに途中参加するのって結構心理的に疲れるんで。


おしまーい。

今週のふりかえり(2017年9月第1週)

他所様のマネです。

ふりかえりを何曜日にやるか、は非常に迷うところです。土日にイベントがあるとゆっくりふりかえりはできないし、かといって月曜日にやるのか?という問題が。

週の始まりを月曜日にするか日曜日にするかでかなり変わる。予定自体は週末のうちに検討しておいて、月曜日の夜ふりかえりをやる計画。

今週の学び

メールサーバーの運用については真面目に検討しても良さそう。どうしようかな。

さくらの障害

さくらのメールボックスで初の障害に遭遇。

復旧したとアナウンスの後も繋がらないので困っていたら障害に2連続で遭遇していた。中の人の奮闘に感謝しつつ、移行先の検討スタート。

さくらのメールボックスと同じように無制限にメールアドレスを作れるというサービスは見当たらないので困惑中。

自前でメールサーバー立てようとするとそれなりにコストがかかるのと、メンテナンス中の取りこぼしが怖い……。

ソフトウェア開発関連

F***book のアカウント停止

SNSのアカウントによるログイン機能をテストしようとして数年ぶりにアカウント登録。

developer 登録して違うブラウザでログインしようとしたら即アカウント停止。ほんの数時間で使用不能に。解除には顔写真のアップロードが必要だそうです。

参考:【Facebook】アカウント作成後にアカウントが停止される問題が急増 アカウント停止の解除方法について | 楽しくiPhoneライフ!SBAPP


顔写真をアップロードしても復活できてないです。やはり身分証でないとダメなのか*1。諦めて別のメールアドレスで登録しましたが。

テスト専用のダミーアカウントを作れるらのでそっちを使いましょう*2

developer 登録したアカウントは登録時にSMSの受け取れる電話番号か、クレジットカード番号を登録する*3必要があるのでこのアカウントは慎重に扱うべきかと思います。


抗議しようとしてヘルプセンターにアクセスしようとしてもエラーコード500でアクセスできない時があったり、普通に傲慢としか思えない。

というか、このSNSを使いたいと思ったわけじゃない。ログイン機能のテストに必要だっただけなのに……。

もはやF***book様には"four letter word"を送るしかないというのが教訓でした。

Docker for Mac とメール送信テスト

Docker からのメール送信テストにMailCatcherというのを使うというノウハウを得た。

メールを送信するDocker コンテナからMailCatcherのコンテナにlinkしてやればいい。

メール本文がUTF-8だったりするとエラーを吐くが、ブラウザ側で再読み込みすると動く。

2017-08-31 17:19:23 - Encoding::UndefinedConversionError - "\xE3" from ASCII-8BIT to UTF-8:

関連:utf-8 encoding of source · Issue #201 · sj26/mailcatcher · GitHub

Sequel Pro 関連

View Table で日本語を使っているという案件に遭遇。Sequel Pro で表示するとテーブル名が文字化けして表示も不可。英語で説明するのはどうしたらいいのかって話と、再現環境を作らないといけないので保留*4

そもそもそんなところに日本語使うなよ……。

web サイト・サービス

quugle.blogspot.jp

前から知ってたけどしばらく使っていなかったので。アンチ某レシピサイトの強い味方。

読んだ本

『ハリー・ポッター』シリーズ

Kindle Unlimitedの対象。先月に引き続いて読んでいます。

確かに面白いのだけど、嫌がらせとかいじめの描写は後味悪い。

この小説に登場する魔法学校は本人確認と危険物の持ち込みに根本的な改善が必要だと思った。

機機動戦士ガンダム THE ORIGIN

割引キャンペーンの対象になっている。9月7日まで。

1st ガンダム自体は劇場版しか見ていないのでTV版との解釈の違いについてはよくわからない。以前からガンダムを知っている人の方が楽しめる作品。

全くの初見だと展開が唐突すぎてしっくりこないんじゃないかと思う。

機動戦士ガンダム THE ORIGIN(1) (角川コミックス・エース)

機動戦士ガンダム THE ORIGIN(1) (角川コミックス・エース)

機動戦士ガンダム THE ORIGIN(2) (角川コミックス・エース)

機動戦士ガンダム THE ORIGIN(2) (角川コミックス・エース)

機動戦士ガンダム THE ORIGIN(3) (角川コミックス・エース)

機動戦士ガンダム THE ORIGIN(3) (角川コミックス・エース)

ガルマ登場、そして……。

機動戦士ガンダム THE ORIGIN(4) (角川コミックス・エース)

機動戦士ガンダム THE ORIGIN(4) (角川コミックス・エース)

この巻でガルマが……。

機動戦士ガンダム THE ORIGIN(5) (角川コミックス・エース)

機動戦士ガンダム THE ORIGIN(5) (角川コミックス・エース)

ランバ・ラル登場。

その他・ノウハウなど

特になし。

購入したもの

バックパック

※ 9/4 現在Amazon.co.jp の在庫は払底しています。マーケットプレイス注意。

カタログスペックより軽く感じる。

f:id:atuyosi:20170903081027j:plain:w320

同じグレゴリーの、Sketch シリーズと迷ったが、ポケットの数と両サイドにペットボトルを入るポケットがあるのでこっちにした。
内部容量28Lと大型だけどベルトで圧縮できるのでコンパクトな外観。

強いて改善点をあげるとすると、腰の固定ベルトを邪魔にならないような固定用のゴムか何かあればよかったか。

良い買い物だった。

土鍋

萬古焼 銀峯 土鍋 (深鍋) 7号 1-2人用 花三島 21071

萬古焼 銀峯 土鍋 (深鍋) 7号 1-2人用 花三島 21071

主食を麺類中心から米系統にスイッチしようかと。発芽玄米を自作すれば炊飯器で炊けるらしいですが、せっかくなので。

発芽玄米化しなくても土鍋や鋳物の鍋で玄米を炊くと色が白っぽくなって食べやすくなるので投資する価値はあります。

土鍋でなくてもいいけど火加減とか気を使わなくても米が炊ける。普通の米を炊く場合でも炊飯器より美味い気がする。

毎日土鍋で米を炊こうなどという無謀なことは考えていません。

[2017/09/05 追記]

肝心なことを書き忘れていましたが、土鍋とか鋳物の鍋で米を炊くと冷めても美味しいという重要なポイントがあります。

わざわざ冷めたご飯を食べる理由もないですが、炊きたてのご飯だけがご飯ではないのです。

アウトプット

今週は全然。強いていうならこの記事。

今週の気づき&まとめ

涼しくなってきたので非常に助かる。先月中に読み終わらなかった本が何冊かあるのでなんとかしたい。

見事に英語学習がストップしているのでなんとかしたい。

*1:登録時の氏名は英数で、身分証は基本的に漢字表記……

*2:先に教えてほしかったね

*3:認証が通れば削除して問題はない模様

*4:テーブル名とかそのまま晒せないので

今月のお買い物+振り返り(2017年8月)

衝動的にTwitter アカウントを消した。後悔はしていない。アプリの宣伝に使おうかと思っていたはずが、他人のtweetを眺めたりして時間を浪費する何かに変わっていた。

Twitter のタイムラインを眺めて腹をたてるというか義憤に駆られても何にもならないという気がしてきたので。

SNSで騒いでも結局、既存のマスゴミが動かないとすぐには社会は変わらない。いや地味に、かつ確実に効いているはずだけど、それで自分の生活が良くなるわけじゃない。

サービスのログインにTwitter を使っているがいくつかあって、代わりのログイン手段への設定変更がちょっと面倒だった。しばらくはPawooにひっそりと生息中です(絵描きじゃないのに……)。

削除した後も30日は復活できるらしいので何食わぬ顔で再開するかもしれないですが。

[2017/09/11? 追記]
誠に遺憾ながら業務連絡に必要だったり、Twitter アカウントの方が有利な場面があるようなので復活。


a244.hateblo.jp

購入したもの

本・雑誌

『離散数学「数え上げ理論」―「おみやげの配り方」から「Nクイーン問題」まで 』

離散数学「数え上げ理論」―「おみやげの配り方」から「Nクイーン問題」まで (ブルーバックス)

離散数学「数え上げ理論」―「おみやげの配り方」から「Nクイーン問題」まで (ブルーバックス)

未読。離散数学をちゃんと勉強したいのでまずは小手調べ。

『画像認識 (機械学習プロフェッショナルシリーズ)』

画像認識 (機械学習プロフェッショナルシリーズ)

画像認識 (機械学習プロフェッショナルシリーズ)

Amazonで評判が良いので確保しておいた。2色刷りかと思ったらカラーだった。随所にカラーの画像が入っている。それでいて普通のカラー印刷の本と違って光沢紙じゃなくて 組版・装丁もいい感じ。印刷所の仕事か出版社側かは知らないけど、「シェフを呼べ」って感じ(褒め言葉)。

『日経ソフトウエア 2017年 09 月号』

日経ソフトウエア 2017年 09 月号

日経ソフトウエア 2017年 09 月号

いつのまにか発行感覚が隔月に……。次号は9月23日発売らしい。

ということは偶数月は技術評論社のWeb+DB Press、奇数月はこれ?

基本はCQ出版のInterface誌、みたいなスタイルで行くか。


図書館に置いてあるのを読んだことはあるけど、自費での購入は人生初。

日経の雑誌って、どれもこれも価格の割にページが少ないよね。損してる感じ。

内容としては、

  • JavaScript 特集
  • ニューラルネットワーク
  • 為替スクレイピング
  • Steam
  • Docker (微妙。ログ解析ツールの宣伝か)
  • ブロックチェーン(さわりだけか)

数だけは多いぜ?

ちょっと内容薄くないか……? Docker の記事については失望としか。

電子書籍

『Interface 2017年10月号』

Interface(インターフェース) 2017年10月号

Interface(インターフェース) 2017年10月号

Interface 2017年10月号 IoTのための地図・地形・地球 大集合【PDF版】 | Tech Village 書庫&販売 - エレクトロニクス分野の電子書籍販売サイト / CQ出版株式会社

購入したのはPDFの方。

9月号はスキップ。8月号をちゃんと読めてないけど……。

食品系

オーサワの野菜ブイヨン(徳用)

オーサワの野菜ブイヨン(徳用)

先月、鶏がらスープの顆粒タイプを買ったばっかりだけど同じ味ばっかりだと飽きるかな、ということで。

キャベツは茹でて食べた方がいいという説を聞いたので、ソーセージと野菜とこのブイヨンと塩少々で煮込んでます。

そのほか

USBシリアルケーブル

USB to UART TTLシリアルケーブル 1M (PL2303HX)

USB to UART TTLシリアルケーブル 1M (PL2303HX)

ラズパイ用。どうしても必要というわけではないけど、あったら便利よね的な。

Bluetooth イヤホン

初のAnker製品。

今まで使っていたAukeyの製品(EP-B16)が故障したので。

Aukey製品の方は保証期間内なので交換を要求したかったのですが、Webサイトの商品リストに該当する型番はないし、サポートにメールしても返信ないし……。


そういう理由で買い換えたわけですが、Skype で使う分には問題なさそう。

コストパフォーマンスはAukeyよりいいです。あとは故障時の対応がどうか、というところ。

折り畳み傘

これも想定外の支出。カバーをつけたまま開閉ボタンを押したら上手く開かない状態になっってしまったので買い替え。

食器の水切り

これも買い換え。可もなく不可もなく、無難な製品です。

今まで台所の作業スペースを稼ぐために吊り下げ式の棚でごまかしていたんですが、地震の揺れで固定ネジが吹っ飛ぶという珍事に見舞われたので方式を変更。

欠点としては、まな板を立てかけるように設計されてないところ。

インソール

サイズ調整も兼ねて。靴下の厚みの関係でフィッティングを調整したいときに。

かかとのホールド感が大きく向上するんですが、素材の関係でちょっと滑るのでパワーロスしている感じ。差し引きでいえばプラスなんですが、ちょっと素材に工夫して欲しいと思います。

サービス系

Kindle Unlimited復帰。

a244.hateblo.jp

一押しは海軍反省会。

ふりかえり

想定外の支出が地味に積み重なっている。あと寝苦しい日があったりして生活リズムがかなりイカれていて非常に良くない。

今月は電子書籍が雑誌のみ。購入したのに存在を忘れているのか。まあ意外なこともある。

  • 結局PHPに手を出した
  • 久しぶりに古い知り合いと会食
  • 某ブラウザゲーム引退(3月からなので5ヶ月。課金した金額は8,500円)
  • 怒りのWantedly 退会*1
  • 冒頭に書いたとおり、Twitter も勢いで退会

RSS で情報を配信していないサイトからの情報入手をどうするかが一つの課題。

アウトプットに関して

まずまずな感じ。サブブログに書評記事のしょぼいのを書いたり、Qiitaに簡単な記事を書いたり。

ブログ記事はサブブログに書いた分を入れれば10を超えているので問題なし。

英語学習など

盆休み明けから見事にサボっていてよろしくない。要改善。

まとめ

来月からは一週間単位で振り返りというか週報みたいな感じにしてみたい。

*1:ロクに使ってなかったけどね

結局PHPに手を出すハメになってしまった……

因果という因縁というか……。

この業界にいると悪名高きPHPからは逃れられないようです。

まあ、断るということもできたんですが、立て続けにPHP案件の紹介が来るとさすがに知人の好意*1はあまり……。

PHPの思い出

学生時代に2回ぐらい赤いマンモスの表紙の本を借りたことがあるんですよ。ところが2回とも1ページも読まずに返却したのが私のPHPとの馴れ初め。

あとはPHPの動いているサーバーのチューニングとか。CakePHP 1.x の頃。
当時はAPCというモジュールをインストールすると1秒あたりに処理できるリクエスト数が倍増したり、なんというかおおおらかな時代でした*2。当時書いたのはphpinfo()関数を呼びだけのファイルでしたけど……。


なんだかんだで月日は流れて、「Rails 使えるならいけますよ」 みたいな軽いノリに押されてPHP(というかCakePHP)のWebアプリのバグ修正を仰せつかったという話。

初めてのPHP

初めてのPHP

  • 作者: David Sklar,桑村潤,廣川類,木下哲也
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2017/03/18
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

PHP 7.x 、従来ひ2倍の速さと素晴らしいじゃないですかと思いつつ、現実はPHP 5.6 ……。現実は非情である、それはそうですよね。

サポート期限来年いっぱいなんですがどうするんだろう。

参考:PHPのリリース日とサポート期限 - Qiita

Homebrew で PHP

Docker とか仮想マシン上でやろうかと思ったけど簡単な修正であればまずはシステム上にインストールしてしまうのが一番楽だった。

先にリポジトリの追加。

$ brew tap homebrew/versions
$ brew tap homebrew/php

これで特定のバージョンのPHPのパッケージをインストールできるようになる。複数バージョンを共存させるツールもあるけどまずは無難に。

PythonとかRubyのことも考慮するならanyenvか。

PHP 5.6.x

$ brew install php56
$ brew install php56-intl

パッケージ名にバージョンを含めることで5.6系をインストールできる。CakePHP 3.x のためにintlモジュール(libicuのラッパー)をインストールしておく。

mac への PHP5.6 のインストール · GitHub

PHP 7.x

共存できないので排他になる。

PHP 7.1.x を利用する場合は、インストール済みのバージョンをアンインストールしてからバージョンに応じたパッケージをインストールする。

$ brew install php71
$ brew install php71-intl

Composer

Ruby on Rails で言うところのbundler。CakePHPのインストールやプラグイン管理に必要。公式の手順に従ってもいいが、Homebrew でパッケージとして提供されているのでこれを使う。

$ brew install  composer

事実上、必須ツール。

CakePHP 3

cakephp.org

Rails に影響を受けたというPHPのWebフレームワーク。

バージョン指定してCakePHPをインストールする

composer のインストールが前提条件。

$ composer create-project --prefer-dist cakephp/app:3.2  myproject

myproject は任意のプロジェクト名に置き換え。

ネタ元:composer php - CakePHP Install Specific Version - Stack Overflow

Docker と CakePHP3

intl というモジュールが必要で、このモジュールはlibicuを要求する。PHP公式のDockerfile の場合、docker-php-ext-install というスクリプトが利用できるので、開発用のlibicu-devパッケージを追加してからPHPモジュール(extension)をインストールすればいい。

PHP公式のDockerfile の適当な箇所に下記を追加。

RUN apt-get update \
  && apt-get install -y libicu-dev && docker-php-ext-install intl

参考:docker-php-ext-install intl fails · Issue #57 · docker-library/php · GitHub

そのほか

PHPメインで開発している会社をDis っていたら結局自分もPHP書くハメに……というか読むハメになった*3という話でした。

……引き寄せの法則の逆みたいな感じですか。

PHP 7.x だと良かったんだけどなあと思いつつ、CakePHP 3のチュートリアルをやる予定です。

チュートリアルと例 - 3.x


それではまた。

*1:悪意という解釈も?

*2:最近はOPcachとかいうらしい

*3:今のところ障害調査なので

広告