とある事業の脱レガシー

Hisateru Tanaka
Hisateru TanakaSoftware Developer at n/a
とある事業の脱レガシー
∼技術的負債を取り戻すプロジェクトの物語∼
時は201x年、数年に渡る大規模リニューアルプロジェ
クトを経て立ち上がった新サービス。
しかしその正体はなんと、10年前のPHP入門書を読
んだプログラマーと、20年間SQL以外書いたことが
ないDBエンジニアの手による、MVCもバージョン履
歴もない動的ページの山だったのです。
そこに偶然現れたある平凡な助っ人PHPエンジニア...
やがて彼は、データセンターにはWebとDBの2サー
バーしか存在しないのに何故かテスト環境があるとい
う、次なる衝撃の事実を知るのでした...
…って導入を考えてたんですが、トリを務めるとか予
想外! ちゃんとしなきゃ…
なんかいろいろ中途半端ですみません
たなかひさてる
@tanakahisateru
Pinoco developer

PHPTAL contributor

Firebug translation contributor

Yii framework user

PhpStorm user
フルスタックエンジニア(笑)
レガシーとは
単に下手なだけのプログラム レガシー
レガシー (Legacy)
1. 遺産,遺贈(財産)
2. 受け継いだもの,遺物
• なぜか置き換えできずに古いまま残されたもの
• まったく役に立たなければ単に捨てられるだけ。何
らかの恩恵があるから存在する
古いとわかっているのになぜ
置き換えられないのか
• より良い代替物を開発できない
• どうして動いているのかわからない
• 既存の設計が無駄に複雑すぎて、全ての知識を吸い
上げきれない
• 作りなおして失敗するよりはそのまま使うほうが安
全だ
魔術的
ブラックボックス
Thanks to http://to-a.ru/
どうやったら
置き換えられるのか
• 再現性のある設計/プロセスに変換する
• 属人化せず、論理的な推論の連続で仕
組みを成り立たせる
• 絡み合うレガシー部分に引きずられず、
一気通貫に進める
科学的
多くのエネルギーが必要
Thanks to http://to-a.ru/
•レガシー = 魔術
•リプレース = 科学
レガシーシステムの
デメリットを明確にする
魔術的なものの多くは次の2つに分類できます:
• 科学で置き換え可能なもの …(a)
• 科学的に考えると実は無駄 …(b)
(a) は本質的に必要

(b) が保守工数を圧迫すること = デメリット
例
この変数 $hoge は200行
前に if でこれが入るかも
しれないし、そうでなけれ
ばその前の行の初期値で…
ってものすごい検索とスクロールですよ
ね、心折れますね
$hoge = 0;
if ($fuga > 100) {
$hoge = 1;
}
// この間200行
echo $hoge;
例
この変数 $hoge は200行前に if でこれが入るかも
しれないし、そうでなければその前の行の初期値で…
ってものすごい検索とスクロールですよね、心折れますね
$hoge = $conditionalContext->getHoge();
• なんで200行もステップ解析しなきゃなんないの?
• 目視で見落としない?
• これどう考えても無駄だよね
• 手続きを宣言(AはBである)に変換する!
$hoge = $conditionalContext->getHoge();
「保守プログラマーは複雑な手続きを解析するのが仕
事だ」という思い込みの蔓延 = 魔術的概念しかなかっ
た時代の信仰形態、あるいは、これまで信仰を集めて
きたものは変えられないという諦め
脱レガシーとは、この組織的な思い込みモードから脱
却することである
(注: フィクションです)
うっかり「私の経験では」とか言っちゃう
かもしれませんが、これはフィクションで
す。いいですか、フィクションですからね。
全4編
• 第一話 プログラミング
• 第二話 開発プロセス
• 第三話 インフラ
• 最終回 人事
• A社 = 開発/サーバー設備を提供、委託先
• B社 = 事業会社、発注元
• P氏 = とあるPHPer
B社にP氏がジョインしました。
第一話
プログラミング
B社「このまえ依頼したフォームの改修どう?」
P氏「この2000行でいちどもfunctionを見かけてません
ね」
B社「あー、全機能だいたいこの調子で組んであるよ、こ
れ」
index.php
画像はイメージです
P氏「ああああーっもう今回改修する機能、実装はぜ
んぶ作り直します」
B社「え、すごく手間かかるんじゃない?」
P氏「自分、まだ正社員じゃないですよね。てことは
工数オーバーしても個人事業主の未請求扱いですよね。
B社的には、動作保証さえしてれば、工数リスク関係
ないですよね」
<?php
reruire __DIR__ . /../src/bootstrap.php ;
MyApplication::create()->run(MyController::class);
index.php
MyController
MyService
index.phtml
models*
create
access
use
render
<?php
require __DIR__ . ’/../src/bootstrap.php’;
MyApplication::create()->run(
MyController::class,
);
index.php
view.php
edit.php
<?php
require __DIR__ . ’/../src/bootstrap.php’;
MyApplication::create()->run(
MyController::class,
‘view’
);
<?php
require __DIR__ . ’/../src/bootstrap.php’;
MyApplication::create()->run(
MyController::class,
‘edit’
);
※.htaccessとか書けませんからね
• 今やっておかないと将来の自分にとって都合が悪い
• だからやる
• この判断が、物語のはじまりとなった…
事業会社と受託開発は
違うという読み
売上 → 予算 → 成果 → 売上…
• 運用スタッフが売上を出す

ITは直接売上を出さない
• ITスタッフに分配される予算は限られる
• 予算と成果のサイクルに「魔術的無駄」があるとす
ぐに負のスパイラルになる
その後P氏の実装を原型として、徐々に他のフロント
機能もB社自身が作るようになりました。
P氏の設計を真似して、他の機能が個別に改修されて
いきます。
最終的に、その手法はサイト全体でひとつに統一され、
フレームワークとなりました。
その頃には、P氏もすっかりB社の社員です。
社内フレームワーク
社内フレームワークがすべて悪というわけではない
社内フレームワーク = たしかに技術的負債ではある
重要なことは、その技術的負債が:
• より多くを返済するための借り入れなのか
• 返済よりも利子が高くつく種類のものでないか
を見極めること
レガシーシステムを含んで
どうやってテストするのか
• クラスをクラスでテストするPHPUnitでは、そ
もそもクラスが存在しない…
• アプリケーションサーバーの外から生スクリプ
トの振る舞いをテストしたい
• Behatもいいんだけど….
• PHP 文法で BDD 風テストできる
Codeception がオススメ
Behat
Codeception
レガシーコードを
どうやって解析したか
• PhpStorm には Find by usage (変数
/関数使用箇所検索) がある
• PhpStormを開発スタッフ全員分買っ
てもらいました
お買い求めは
こちらのサイトへ
第二話
開発プロセス
B社内で開発する部分が増えてきたので、バージョン
管理にGitを採用しました。
最初にサーバーがなくても、手元で使い始められるの
で導入しやすかったためです。
[重要] かならずGitかMercurialを使って下さい。
未経験者にはSubversionのほうが簡単だろうという
のは、あまり使っていない人がいいかげんなことを
言ってるだけです。だまされないで。
B社「でも枝分かれいっぱいあって難しそう」
P氏「じゃあ枝を作らなければいいんですよ」
しばらく master と pshi と yamada ブランチ(仮名)
固定で運用。
それでも、ありとなしでは雲泥の差。
P氏「コード書けましたテストもOKです」
B社「よーし更新しよう」
P氏「え、それ何やってるんですか」
B社「え、いや、タイムスタンプ見て、FFFTPで変更
したファイルだけを...」
うひゃぁ!
git diff [prev tag] --name-status
M config/main.php

M src/hoge/index.php

M src/hoge/js/fuga.js

A web/css/new-style.css

D web/img/tmp.png
それGitでできるよ
git diff [prev tag] --name-only | git checkout-index
--prefix=./FTPするやつ/ --stdin
それGitでできるよ
タイムスタンプが
いかに信用出来ないか
P氏「あれ? こっちで変更してないファイル、タイム
スタンプ上がってますね」
B社「もしもしA社? 昨日そっちで何かやった?」
A社「あれとこれと... そういえば /inc あたりに...」
B社・P氏「ちょっとまって、それこっちでも使って
る!」
カオス
P氏「テストサーバの index_2tmp.php って何です
か」
B社「知らないなぁ、使ってないやつじゃない?」
P氏「じゃあこの index3.php も要らないですね」
B社「それは本番にもあるから使ってるやつ」
とめどなくカオス
B社「もしもしA社? ひとつお願いしたいことが...」
A社「はい、追加費用のかからないことなら」
B社「たのむからGit使ってください」
form ユーザー企業
to エンジニア
作業するときはかならずチケット(課題)
管理するようにしました。
Gitでは、チケットごとに異なるブラン
チを切ることにしました。
緊急でないかぎり、本番の更新は随時
ではなくまとめてやるようにしました。
• 事業会社は自分のことなので真剣です
• Gitの操作はプログラミング能力とは関係ありません
• チケット管理システムは意味がわかればWebのフォーム
に文字を書けるだけでOKです
• 問題意識、情報の運用、ソフトウェアの開発プロセスに
は、本質的な情報の力が出ます
受託開発の会社は、顧客をITの素人だと思ってはいけません。

実は自分たちが長けているのは、PHPの文法とかだけだった、なんてこ
とないように!
• 特権的な分野で過去のやり方を守るだけ = 魔術
• 新しいやり方から次のやり方を生み出せるもの =
科学
第三話
インフラ
P氏「あれ? testとprodにnslookupしたら同じIPに
なるんですけど...」
B社「そりゃそうさ同じマシンだもん」
P氏「え」
B社「たしか同じのにWordPressも入ってるよ」
期待したもの
App
DB
本番
App
DB
テスト
Blog
開発
得られたもの
App
DB
本番 /var/www
テスト /var/www_test
本番 db
テスト db_test
cron (本番のみ)
WordPress wp_db
WordPress /var/www/blog
phpMyAdmin FTP
やばい
テスト環境だけ AWS に移動しました。
いつでも自由に停止/再起動できるようになりました。
テストが本番に影響する心配もなくなりました。
テストメールが送信されないよう

Mailcatcherを利用しました
B社「うーんうーん」
P氏「どうしましたか」
B社「XAMPPでは動かないのになんでtestで動くの?」
C:¥XAMPP
• Vagrantに移行
• Maicatcherのお手軽版としてFakeSMTPを利用
• 手元でテストしたものの信頼性が格段に向上。
• テストサーバーの取り合いもなくなりました。
ここでVagrant環境とテストサーバーを、随時本番サー
バーに似るようメンテし続けたことが後で効いてきます。
ある日、メディア掲載に大成功し...
アクセス殺到
サーバーが… 死んだ…
23:10 夜運用スタッフ大慌て
帰宅後の社員を巻き込んで飛び交う

深夜の社内チャット
自宅のP氏「SSHが息してないです」
P氏「こうなったらA社のデータセンターに...!」
B社「翌日出勤時間の9:00まで、あそこリスタートで
きる人誰もいないよ」
翌日9:00まで
リスタートできる人誰もいないよ
ほどなくして、B社内でAWSへの完全移行が決定され
るのであった…
B社「自分たちのビジネスのタイミングでサーバ運用
したい!」
サーバ環境を変えてもちゃんと動きそうな期待は、テストサーバーと
Vagrantで十分に積んできました。というわけです
ELB
EC2 (App) RDS
Nginx Apache
EC2 (WordPress)
Apache
MySQL
PHP MySQL
SES
これからはこいつらのEBS
スナップショットからテスト環境を生成可能
• ハードウェア設備は利権化しやすいポイントです。
• 変える理由に実利がともなわないと、出資者は動き
ません。経営で重要なのは移行費用を回収できるか
です。
• 脱レガシーには、移行コストと先の損得の見積もり
を、わかりやすく比較することが重要です。
最終回
人事
ここまでのエピソードで

もっとも重要だったこと = 人事
HOW?
WHY?
どのようにして
P氏を採用したか
• カンファレンス
• 勉強会
• コワーキングスペース
適切な情報が流れているコミュニティに

接点を持つこと
なぜP氏を

採用できたか
• ITによる成長力を信じる社風があること
• ITに頼らずに今の事業を支えている人がいること
• タイミング (←重要)
• 手が空いた優秀な人材は、それを放っておかない会
社が数多くある
• 良い人材がいたとき、すぐに採用できる余裕を経営
に織り込むこと
• 現場から「この人を採用したい」という声が挙げら
れるようにすること
その後人事はどうなったか
ITの会社ではないのに、多くの良いエンジニアを多く
採用/契約できた。
• 悪いエンジニアは優秀なエンジニアを歓迎しない
• 良いエンジニアは優秀なエンジニアをひと目で見分
けられる
• むしろ良いエンジニアは自分よりも優秀なエンジニ
アがいたらどんどん呼びこむ
え、なにこの経営者向けのオチ?
自分が所属してる会社でどうやって脱レガシーするか
聞きたかった?
→ 自分の会社を、人事/社風のレイヤー
で動かすことを考えて下さい
• レガシーの正体は非科学です
• 非科学とは社会的/組織的な迷信です
• 人のメンタルを変えないかぎり、それは表面的な対
応でしかありません
• 道具や教本だけに頼ると、脱レガシーだと思って採
用した最新手法が、やがて時間とともに、次のレガ
シー(先代の残した魔術)となります
• たとえば、Jenkinsのタスク、Chefのレシピ...
• 秘伝のタレに再現性を与える行為 = 脱レガシー
• 学びましょう!
• 学んだことを仕事に持ち帰りましょう!
• そして人に伝え、迷信に頼らないチームにしましょ
う!
• 大変かもしれませんが「やりたい」という気持ちを
エネルギーの源泉として!
ありがとうございました
1 of 88

Recommended

Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田 by
Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田
Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田Y Watanabe
1.4K views21 slides
業務アプリにおける VB との付き合い方 by
業務アプリにおける VB との付き合い方業務アプリにおける VB との付き合い方
業務アプリにおける VB との付き合い方s_earlgrey
3.7K views67 slides
PHPUnit でよりよくテストを書くために by
PHPUnit でよりよくテストを書くためにPHPUnit でよりよくテストを書くために
PHPUnit でよりよくテストを書くためにYuya Takeyama
9.7K views77 slides
gitを使って、レポジトリの一部抽出forkしてみました by
gitを使って、レポジトリの一部抽出forkしてみましたgitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみましたTakako Miyagawa
7.5K views27 slides
CakePHP3ウォークスルー by
CakePHP3ウォークスルーCakePHP3ウォークスルー
CakePHP3ウォークスルーTomoki Hasegawa
6.4K views84 slides
behatエクステンションの作り方 by
behatエクステンションの作り方behatエクステンションの作り方
behatエクステンションの作り方Ryo Tomidokoro
2.6K views33 slides

More Related Content

Viewers also liked

Wordbench fukuoka by
Wordbench fukuokaWordbench fukuoka
Wordbench fukuokaJunji Manno
4K views27 slides
AWS はぶっちゃけ安いのか? by
AWS はぶっちゃけ安いのか?AWS はぶっちゃけ安いのか?
AWS はぶっちゃけ安いのか?manabusakai
7.6K views19 slides
PHPCON fukuoka 2015 CodeIgniter update by
PHPCON fukuoka 2015 CodeIgniter updatePHPCON fukuoka 2015 CodeIgniter update
PHPCON fukuoka 2015 CodeIgniter updateTakako Miyagawa
14.5K views38 slides
phpspecで始めるBDD by
phpspecで始めるBDDphpspecで始めるBDD
phpspecで始めるBDDYuuki Takezawa
10.3K views39 slides
レイヤードアーキテクチャを意識したPHPアプリケーションの構築 by
レイヤードアーキテクチャを意識したPHPアプリケーションの構築レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築Masashi Shinbara
20.2K views34 slides
ソーシャルアプリにおけるRedisの活用事例とトラブル事例 by
ソーシャルアプリにおけるRedisの活用事例とトラブル事例ソーシャルアプリにおけるRedisの活用事例とトラブル事例
ソーシャルアプリにおけるRedisの活用事例とトラブル事例leverages_event
12.8K views31 slides

Viewers also liked(9)

AWS はぶっちゃけ安いのか? by manabusakai
AWS はぶっちゃけ安いのか?AWS はぶっちゃけ安いのか?
AWS はぶっちゃけ安いのか?
manabusakai7.6K views
PHPCON fukuoka 2015 CodeIgniter update by Takako Miyagawa
PHPCON fukuoka 2015 CodeIgniter updatePHPCON fukuoka 2015 CodeIgniter update
PHPCON fukuoka 2015 CodeIgniter update
Takako Miyagawa14.5K views
phpspecで始めるBDD by Yuuki Takezawa
phpspecで始めるBDDphpspecで始めるBDD
phpspecで始めるBDD
Yuuki Takezawa10.3K views
レイヤードアーキテクチャを意識したPHPアプリケーションの構築 by Masashi Shinbara
レイヤードアーキテクチャを意識したPHPアプリケーションの構築レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
Masashi Shinbara20.2K views
ソーシャルアプリにおけるRedisの活用事例とトラブル事例 by leverages_event
ソーシャルアプリにおけるRedisの活用事例とトラブル事例ソーシャルアプリにおけるRedisの活用事例とトラブル事例
ソーシャルアプリにおけるRedisの活用事例とトラブル事例
leverages_event12.8K views
Laravel5を使って開発してみた by Takeo Noda
Laravel5を使って開発してみたLaravel5を使って開発してみた
Laravel5を使って開発してみた
Takeo Noda13.5K views
よくある業務開発の自動化事情 #jjug_ccc #ccc_cd3 by irof N
よくある業務開発の自動化事情 #jjug_ccc #ccc_cd3よくある業務開発の自動化事情 #jjug_ccc #ccc_cd3
よくある業務開発の自動化事情 #jjug_ccc #ccc_cd3
irof N32.6K views
PHP x AWS でスケーラブルなシステムをつくろう by Taiji INOUE
PHP x AWS でスケーラブルなシステムをつくろうPHP x AWS でスケーラブルなシステムをつくろう
PHP x AWS でスケーラブルなシステムをつくろう
Taiji INOUE15.3K views

Similar to とある事業の脱レガシー

HCL Digital Experience 9.5 プラクティショナースタジオ概要 by
HCL Digital Experience 9.5 プラクティショナースタジオ概要HCL Digital Experience 9.5 プラクティショナースタジオ概要
HCL Digital Experience 9.5 プラクティショナースタジオ概要Software Info HCL Japan
248 views39 slides
The History of Reactive Extensions by
The History of Reactive ExtensionsThe History of Reactive Extensions
The History of Reactive ExtensionsYoshifumi Kawai
60.8K views23 slides
C#の強み、或いは何故PHPから乗り換えるのか by
C#の強み、或いは何故PHPから乗り換えるのかC#の強み、或いは何故PHPから乗り換えるのか
C#の強み、或いは何故PHPから乗り換えるのかYoshifumi Kawai
142.7K views27 slides
SpringOne Platform Replay -Pivotal Cloud Foundry- by
SpringOne Platform Replay -Pivotal Cloud Foundry-SpringOne Platform Replay -Pivotal Cloud Foundry-
SpringOne Platform Replay -Pivotal Cloud Foundry-CASAREAL, Inc.
786 views49 slides
Web2.0 講演スライド 2008/2/26 by
Web2.0 講演スライド 2008/2/26Web2.0 講演スライド 2008/2/26
Web2.0 講演スライド 2008/2/26kishida4slideshare
576 views35 slides
Integral Technology 第2回ユーザカンファレンス 〜すべてをクラウドで解析するための方法〜 by
Integral Technology 第2回ユーザカンファレンス  〜すべてをクラウドで解析するための方法〜Integral Technology 第2回ユーザカンファレンス  〜すべてをクラウドで解析するための方法〜
Integral Technology 第2回ユーザカンファレンス 〜すべてをクラウドで解析するための方法〜Rescale Japan株式会社
286 views32 slides

Similar to とある事業の脱レガシー(20)

HCL Digital Experience 9.5 プラクティショナースタジオ概要 by Software Info HCL Japan
HCL Digital Experience 9.5 プラクティショナースタジオ概要HCL Digital Experience 9.5 プラクティショナースタジオ概要
HCL Digital Experience 9.5 プラクティショナースタジオ概要
The History of Reactive Extensions by Yoshifumi Kawai
The History of Reactive ExtensionsThe History of Reactive Extensions
The History of Reactive Extensions
Yoshifumi Kawai60.8K views
C#の強み、或いは何故PHPから乗り換えるのか by Yoshifumi Kawai
C#の強み、或いは何故PHPから乗り換えるのかC#の強み、或いは何故PHPから乗り換えるのか
C#の強み、或いは何故PHPから乗り換えるのか
Yoshifumi Kawai142.7K views
SpringOne Platform Replay -Pivotal Cloud Foundry- by CASAREAL, Inc.
SpringOne Platform Replay -Pivotal Cloud Foundry-SpringOne Platform Replay -Pivotal Cloud Foundry-
SpringOne Platform Replay -Pivotal Cloud Foundry-
CASAREAL, Inc.786 views
Integral Technology 第2回ユーザカンファレンス 〜すべてをクラウドで解析するための方法〜 by Rescale Japan株式会社
Integral Technology 第2回ユーザカンファレンス  〜すべてをクラウドで解析するための方法〜Integral Technology 第2回ユーザカンファレンス  〜すべてをクラウドで解析するための方法〜
Integral Technology 第2回ユーザカンファレンス 〜すべてをクラウドで解析するための方法〜
20160702 linuxでもできるc#でアプリ開発 by Takayoshi Tanaka
20160702 linuxでもできるc#でアプリ開発20160702 linuxでもできるc#でアプリ開発
20160702 linuxでもできるc#でアプリ開発
Takayoshi Tanaka816 views
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto by Insight Technology, Inc.
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
エンジニアと"協同"してサービスをつくる by Ishikawa Yuya
エンジニアと"協同"してサービスをつくるエンジニアと"協同"してサービスをつくる
エンジニアと"協同"してサービスをつくる
Ishikawa Yuya232 views
Html5時代のクリエイターのあり方 by Masakazu Muraoka
Html5時代のクリエイターのあり方Html5時代のクリエイターのあり方
Html5時代のクリエイターのあり方
Masakazu Muraoka896 views
Hpc server講習会第3回応用編 by Osamu Masutani
Hpc server講習会第3回応用編Hpc server講習会第3回応用編
Hpc server講習会第3回応用編
Osamu Masutani4.1K views
Garden introduction for dea users public by Takehiko Amano
Garden introduction for dea users   publicGarden introduction for dea users   public
Garden introduction for dea users public
Takehiko Amano1.5K views
フロントエンド技術の変遷 by Ryo Higashigawa
フロントエンド技術の変遷フロントエンド技術の変遷
フロントエンド技術の変遷
Ryo Higashigawa153 views
201806 jawsug bgnr12 by Yuki Yoshida
201806 jawsug bgnr12201806 jawsug bgnr12
201806 jawsug bgnr12
Yuki Yoshida484 views
HTML5時代のwebクリエイターに必要なこと by Masakazu Muraoka
HTML5時代のwebクリエイターに必要なことHTML5時代のwebクリエイターに必要なこと
HTML5時代のwebクリエイターに必要なこと
Masakazu Muraoka1.2K views
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう by BrainPad Inc.
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
BrainPad Inc. 9.3K views
ASP.NET MVC Part 2 by Yoshitaka Seo
ASP.NET MVC Part 2ASP.NET MVC Part 2
ASP.NET MVC Part 2
Yoshitaka Seo10.2K views

More from Hisateru Tanaka

第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai by
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansaiHisateru Tanaka
10K views30 slides
ダイクストラの構造化 プログラミングに学ぶ 結婚生活 by
ダイクストラの構造化 プログラミングに学ぶ 結婚生活ダイクストラの構造化 プログラミングに学ぶ 結婚生活
ダイクストラの構造化 プログラミングに学ぶ 結婚生活Hisateru Tanaka
5.1K views37 slides
PHPカンファレンス関西2014 Yii Framework 2.0 遅れてきた5番目のフレームワーク by
PHPカンファレンス関西2014 Yii Framework 2.0 遅れてきた5番目のフレームワークPHPカンファレンス関西2014 Yii Framework 2.0 遅れてきた5番目のフレームワーク
PHPカンファレンス関西2014 Yii Framework 2.0 遅れてきた5番目のフレームワークHisateru Tanaka
5.3K views35 slides
Grunt front-osaka-1-lt-tanaka by
Grunt front-osaka-1-lt-tanakaGrunt front-osaka-1-lt-tanaka
Grunt front-osaka-1-lt-tanakaHisateru Tanaka
3K views35 slides
Phpstormちょっといい話 by
Phpstormちょっといい話Phpstormちょっといい話
Phpstormちょっといい話Hisateru Tanaka
4.5K views17 slides
#phpmatsuri LT大会システムの中身 by
#phpmatsuri LT大会システムの中身#phpmatsuri LT大会システムの中身
#phpmatsuri LT大会システムの中身Hisateru Tanaka
1K views17 slides

More from Hisateru Tanaka(16)

第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai by Hisateru Tanaka
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
Hisateru Tanaka10K views
ダイクストラの構造化 プログラミングに学ぶ 結婚生活 by Hisateru Tanaka
ダイクストラの構造化 プログラミングに学ぶ 結婚生活ダイクストラの構造化 プログラミングに学ぶ 結婚生活
ダイクストラの構造化 プログラミングに学ぶ 結婚生活
Hisateru Tanaka5.1K views
PHPカンファレンス関西2014 Yii Framework 2.0 遅れてきた5番目のフレームワーク by Hisateru Tanaka
PHPカンファレンス関西2014 Yii Framework 2.0 遅れてきた5番目のフレームワークPHPカンファレンス関西2014 Yii Framework 2.0 遅れてきた5番目のフレームワーク
PHPカンファレンス関西2014 Yii Framework 2.0 遅れてきた5番目のフレームワーク
Hisateru Tanaka5.3K views
Phpstormちょっといい話 by Hisateru Tanaka
Phpstormちょっといい話Phpstormちょっといい話
Phpstormちょっといい話
Hisateru Tanaka4.5K views
#phpmatsuri LT大会システムの中身 by Hisateru Tanaka
#phpmatsuri LT大会システムの中身#phpmatsuri LT大会システムの中身
#phpmatsuri LT大会システムの中身
Hisateru Tanaka1K views
&& || and or まぜるな危険 by Hisateru Tanaka
&& || and or まぜるな危険&& || and or まぜるな危険
&& || and or まぜるな危険
Hisateru Tanaka11.3K views
はじめてのGit #gitkyoto by Hisateru Tanaka
はじめてのGit #gitkyotoはじめてのGit #gitkyoto
はじめてのGit #gitkyoto
Hisateru Tanaka4.4K views
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj by Hisateru Tanaka
PhpStormを使おう --高槻からは快速急行が早くなります #jbugjPhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
Hisateru Tanaka39.8K views
いまどきのYiiフレームワーク by Hisateru Tanaka
いまどきのYiiフレームワークいまどきのYiiフレームワーク
いまどきのYiiフレームワーク
Hisateru Tanaka6.4K views
関西PHP勉強会 php5.4つまみぐい by Hisateru Tanaka
関西PHP勉強会 php5.4つまみぐい関西PHP勉強会 php5.4つまみぐい
関西PHP勉強会 php5.4つまみぐい
Hisateru Tanaka2.6K views
Word pressのテーマは firephpでハックすれば 良かったのか by Hisateru Tanaka
Word pressのテーマは firephpでハックすれば 良かったのかWord pressのテーマは firephpでハックすれば 良かったのか
Word pressのテーマは firephpでハックすれば 良かったのか
Hisateru Tanaka2.4K views
関西Php勉強会のlimeの話 by Hisateru Tanaka
関西Php勉強会のlimeの話関西Php勉強会のlimeの話
関西Php勉強会のlimeの話
Hisateru Tanaka1.4K views
Yiiフレームワークを使ってみた by Hisateru Tanaka
Yiiフレームワークを使ってみたYiiフレームワークを使ってみた
Yiiフレームワークを使ってみた
Hisateru Tanaka5K views

とある事業の脱レガシー