駒形電産

TL;DR

ApacheのVirtualDocumentRootlvh.meを使うと簡単。

ApacheのVirtualDocumentRootを使う

Yosemiteデフォルトを想定。

$ sudo vi /etc/apache2/extra/httpd-vhosts.conf
<virtualhost *:80>
  VirtualDocumentRoot /Users/komagata/Sites/%0
</virtualhost>
<directory /Users/komagata/Sites/*>
  Require all granted
</directory>

上記設定で~/Sitesにドメイン名の名前のディクレクトリを作れば動くようになる。(phpとvhostを有効化する設定は各自やっておいてください。)

そのディレクトリ名ですが、foo.lvh.meunk.lvh.meなどlvh.meのサブドメインにすればOK。

lvh.meを使う

VirtualDocumentRootだけだと/etc/hostsにサイトを追加するごとに追記する必要があります。hostsファイルはワイルドカードに対応してないので辛い。

# /etc/hosts
127.0.0.1    *.localhost

こんな風にかければよかったんだけどねぇ。かといってローカルにDnsmasqのようなDNSサーバーを入れるのも億劫です。

ところが127.0.0.1にlvh.meというドメインを割り当ててる傑物がいるとの情報を入手。(名前のLevi cookの略でlvhなのかな?)

% host lvh.me    
lvh.me has address 127.0.0.1
% host foo.lvh.me
foo.lvh.me has address 127.0.0.1

Levi神のお陰で適当にlvh.meのサブドメインを使えばOKになりました!

~/Sites/foo.lvh.me~/Sites/unk.lvh.meのようなディレクトリを作るだけで追加の設定なしにPHPアプリがどんどん作れます。

$ vi ~/Sites/foo.lvh.me/index.php
Hello, <?= $_SERVER['HTTP_HOST'] ?>
$ vi ~/Sites/unk.lvh.me/index.php
Hello, <?= $_SERVER['HTTP_HOST'] ?>

pow併用兄貴の場合

公式Wikiで懇切丁寧に書いてあります。

Running Pow with Apache · basecamp/pow Wiki

チームでのやりとりはSlackですが、仕事の依頼とか外部との仕事関係でのやりとりってFacebook Messengerが多いです。多くないですか?

しかしFacebook Messengerってちょくちょくチェックするにはとても不便で、何故かというとチェックするたびにFacebookのTimelineが目に入って、

「この動画おもしろいな。知り合いにURLを送って置こう。・・・そういえば俺は何をしてたんだっけ?」

となることが頻繁にあるからです。

なのでMacでFacebook Messenger専用のクライアントを色々探してたんですがgoofyが自分の中で決定版で文句無しです。

$ brew cask install goofy

見た目もかわいいし、複数人チャットできるし、無料だし。

あと秋元さんがPHPプログラマー探してるそうなのでご存知の方はぜひ。(ついで感)

追記:

https://www.messenger.com がまさかのスピンオフしたのでブラウザでこのサイトを見るのが一番ですね。

「FRINGE/フリンジ」の J.J. エイブラムスと「ダークナイト」の脚本家ジョナサン・ノーランが贈るわけではない、IT業界のタブーに切り込んだサスペンス実話。

(私本人は真剣にレガシーPHPに取り組んでおります。)

  1. シーズン1
    1. エピソード1
    2. エピソード2
    3. 特別編1 レガシーPHPプロジェクトあるある
    4. エピソード3
    5. 特別編2 phpプログラマーの募集
    6. エピソード4
    7. エピソード5
    8. エピソード6
    9. エピソード7
    10. エピソード8
    11. 特別編3 PHPMatsuri2012
    12. エピソードLAST
  2. シーズン2
    1. エピソード0
    2. エピソード1
    3. エピソード2
    4. エピソード3
    5. 番外編1 ピクルス原理を誤用(応用)する
    6. エピソード4
    7. エピソード5
    8. エピソード6
  3. PHPの落とし穴
    1. PHPの落とし穴1

ツール

レガシーPHP改善・コンサルティングはこちらから承っております。お気軽にどうぞ。

お問い合わせ | 合同会社フィヨルド

レガシーPHP診断を作りました。

回答結果はこちらで見られます。

レガシーPHP診断 - みんなの診断結果

基本的に選択肢の上の方がよりおすすめという感じです。まずは自社の環境がどのような状態か把握するチェックリストとして使っていただければいいかなと思いました。

改善に関してはPHP: The Right Wayが参考になると思います。

関連:レガシーPHP改善日記シリーズ

初日、行ってまいりました。

流行りの環境うんぬんは単なる手段であり、"経営陣を含めたマインドセットの更新が大事"ってのはありますが、そんな話みんな読みたくないでしょ?

僕が調べた現状と、こういう風に持って行きたいという理想の環境を書き出してみました。

現状

  • 本番環境
    • さくらのマネージドサーバー(FreeBSD)
  • ステージング環境
    • 共有開発サーバー(社内に古めのCentOS)
  • 開発環境
    • 共有開発サーバー(社内に古めのCentOS)
  • ソースコード管理
    • svn
    • 共有開発サーバーのコードを担当者一人が全員を代表してsvnにコミットする。バックアップ的な役割
  • タスク管理
    • 社内の独自タスク管理システム
  • デプロイ
    • 共有開発サーバーのソースをFTPでアップする
  • 開発マシン
    • Windows7
  • コーディング規約
    • PEAR標準コーディング規約をカスタマイズしたもの
  • コードレビュー
    • なし
  • チャット
  • ナレッジ共有
    • 社内の独自情報共有システム
    • 社内の独自日報システム
  • 自動テスト
    • なし
  • サーバー監視
    • なし
  • エラー管理
    • メールが飛ぶ
  • ライブラリ利用
    • なし
  • フレームワーク
    • なし(一部Codeigniter)

理想

  • 本番環境
    • AWS?
    • DigitalOcean?
  • ステージング環境
    • 上記サービス上に構築
  • 開発環境
    • 各自のローカルマシン
      • Vagrant?
      • Docker?
      • XAMMP?
      • 共通開発サーバーに全員分の環境を作る?
  • ソースコード管理
  • タスク管理
    • Github Issue?
    • Pivotal?
    • Trello?
    • これは現状維持でもいいかも
  • デプロイ
  • 開発マシン
    • Mac?
    • Linux?
    • Windows?
  • コーディング規約
    • PSR-4(via @tadsan さん)
    • PSR-2
  • コードレビュー
    • PRベースで行う
  • チャット
  • ナレッジ共有
    • Github Wiki?
    • これも現状維持でいいかも
  • 自動テスト
  • サーバー監視
  • エラー管理
  • ライブラリ利用
  • フレームワーク

感想

正直レガシーPHPの現場というと、"鳴り止まぬクレーム電話"、"デスマ続きで死んだ目をしたプログラマの群れ"などをイメージしてたんですが、現行のシステムでちゃんと商売が回って売上が上がっているし、現状を良くしていきたいというポジティブな雰囲気があったのでそれだけで行ける気がしました。

現行のツール類や開発フローに関しては、皆さんも思ったかもしれませんが、"懐かしい"の一語に付きます。昔は僕らだってみんなこうだったんだよ!

これはレガシーPHP(Legacy PHP)というより古き良きPHP(The good old PHP)と呼びたい感じ。

見えてきた開発環境の今昔

こうやってカテゴリ分けしてみると昔と今で同じ方向ですべてのツールが進んでるように感じます。

昔(って言い切るのはひどいですが)は社内で閉じていて外からは使えません。今のツール群はオープンでどこからでもスマホなどいろんなデバイスで使える傾向にあります。

また、昔のツールは1人または少人数で同期的に使うように出来ていますが、今のツールは多人数・非同期で作業することが前提となっています。

要は「場所・人数・時間」を選ばないように進化してきてるってことですかね。

困っていること

理想に近づけるのにまずやる必要があるのが、みんながひとつの開発環境を使っている現状から個別のローカルで開発してコミットするというフローに変更するところ。

たくさんのサイトが社内の共通開発環境で動いてるのですが、デザイナーも含めてWindowsでローカル開発に変えるには今だとどうするのが一番いいんでしょうか?

XAMPP?Vagrant?Docker?どっかのサーバーに全員分の環境を作る?

もしおすすめがあったら教えていただけるとありがたいです。

世の中のレガシーPHPを減らしたい

レガシーPHPを改善する一連のフローを毎回苦労して行うのは無駄ですよね。レガシーPHPを改善したいと思っている会社さんはたくさんあると思うし、それができる小さい会社やフリーランスのプログラマーもたくさんいると思いますし、求人・お仕事のマッチングもたくさん生まれるのではないかと思います。(前回ご一緒させていただいた @kaz_29さんや@kjirouなど僕が出会えてる人はその本当一部なので)

そこで、上手くいきそうだったらレガシーPHP改善のノウハウを共有するイベントや実際に改善していく集団・コミュニティーが出来たらいいなとおもいます。

関連:レガシーPHP改善日記シリーズ

レガシー坂は終わっていなかった。

3年前のレガシーPHP改善日記を見てレガシーPHPと開発フローの改善したいとのご依頼があったので再びレガシーPHPと格闘することになりました。

今回は皆さんWindowsをお使いとのこと。そこに若干の不安。どうなることやら・・・。

関連:レガシーPHP改善日記シリーズ

herokuもbuildpackでphpが使えるようになってるのでさくらVPSで運用してた大東亜戦争従軍記をherokuに移行しました。

大東亜戦争従軍記

下記を参考にさせていただいてmysqlのままでClearDB addonを使うパターンでやりました。

blog.handswiz: 言語切り替え機能をつけたwordpressをherokuで動かす

WordPressからWordPressへの移行なので楽ですね。さくらVPSのお金をケチりたかったというのと、スマホで見辛いのでレスポンシブにしたかった。

昨日EdTech Hackathonに行って久しぶりに色々なWeb関係の方の空気に触れて思った事。

俺はrails好きで強力だし楽しいなーと思うんだけど、

「GoogleからJSのシングルページでもSEO的にペナルティが全く無くなったらサーバーサイド要らねんじゃね?mBaaSで良くね?」

とか

「ちょっとしたサーバーサイドの処理はPHPで良くね?エンジニア多いし、安いし、技術的負債とかセキュリティ・ホールとか経営者からしたらたいして気にならないし、実際の所よくわからないし、来年どうなってるかわからんし。」

とか

「railsエンジニアとか単価高い割に何やってるのかわからないし。テストを書いてます?もっとこうガーッと派手に動く機能追加してくれねえかなあ?」

とか

「長期的なプラットフォームとかはガッツリ作ってくれて構わないけど、もっと雑でいいから短命のモバイル・アプリ量産してくれねえかな?」

とか、そういう雰囲気がWeb業界にあって(俺の被害妄想)、railsが死ぬとしたらもっと強力なフレームワークが出てくるってのじゃなくて、

「railsスゴイのはわかったけど、そういう方向性のスゴさとか我々要らないし、 あと何か上から目線でrubyエンジニアも扱い辛いです。老害乙。」

みたいな感じで、死んでいくのかな、そうだったら嫌だな、と思いました。

あの好物のフォカッチャを食べ逃し/bin/bashを削除し、あたまにうじがわきかけていたko8(こーや)がこのたびめでたくrailsをやっている会社様にアルバイト・インターンが決定し、卒業していきました。

本当におめでとうございます。

現在、本人の事情により名前を開かせないローカルインターンが1名いますが、座席が結構あいてるのでローカルインターン募集です。

ローカルインターンって何?という件については下記を。

オフィスの雰囲気については下記を御覧ください。

超豪華商品が当たる!ローカルインターン募集 - komagata

あたまにうじがわいているかたは下記を御覧ください。

あたま うじお - komagata

1年3ヶ月インターンを続けて来てわかったのが、どんなに素人の状態からでも6ヶ月あれば怖話のrailsコードを修正してgit, githubを使い、Pull Requestが送れるようになるということです。(要領の良い人なら3ヶ月ぐらい)

あとはこの形式のローカルインターン最大の敵は生活費が尽きることです。インターン自体にお金は必要ありませんが、週5で勉強してれば一般的な生活費(生命維持費)が持たなくなり、アルバイトや就職の為にまだ勉強したいのに強制卒業になっちゃうことがままありました。

休学中の大学生とかPHPプログラマーだったけどテストの無い終わりなきデスマプロジェクトに疲れて、次に入る会社はrubyのところが良いと思っている方などおすすめです!

下記応募フォームから是非お願いします。

合同会社フィヨルド インターン応募フォーム

アップデートはdebian任せになるので楽だが最新を追っかけるのとどっちがセキュアなのかはわからない。

setup-mysqlというdebianのwordpress独自のスクリプトを使うのが面白い。

# DEBIAN_FRONTEND=noninteractive apt-get -y install mysql-server
# apt-get -y install wordpress
# cd /usr/share/doc/wordpress/examples
# gunzip setup-mysql.gz
# bash setup-mysql -n wordpress example.com
# vi /etc/apache2/sites-available/example.com
<virtualhost *:80>
    ServerName example.com
    UseCanonicalName Off
    VirtualDocumentRoot /usr/share/wordpress
    Options All

    # wp-content in /srv/www/wp-content/$0
    RewriteEngine On
    RewriteRule ^/wp-content/(.*)$ /srv/www/wp-content/%{HTTP_HOST}/$1
<VirtualHost>
# a2ensite example.com
# a2enmod rewrite
# a2enmod vhost_alias
# /etc/init.d/apache2 restart

日本語化する場合。

# sed -i "s/?>/define('WPLANG', 'ja');\n?>/" /etc/wordpress/config-example.com.php
$ open http://example.com