SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
レガシーコード
in WordPress
レガシーコード In WordPress
レガシーコードとは
● 理解しづらい、変更しにくいコード
● ユニットテストが存在しないコード
● 技術的負債
● プログラマの嫌いなもの
プログラマからみたWordPress
● すごく流行っている
● でもコードは読みづらい
● できればコードは触りたくない
● 正直我慢ならないレベル
● →レガシーコード的な特徴を持っている
レガシーコード化した理由
● 貢献の難しさ
● 良くないプログラミング手法の多用
● 古いPHPの機能への依存
貢献の難しさ
● SVN + Tracなのでパッチを送るのが面倒
● GitHubからプルリクエストを送っても放置
● プラグインの開発とかも重くて大変
● Git > Svn では無いけれど、議論も停滞。
● plugin.svn リビジョン番号77万
レガシーコード In WordPress
レガシーコード In WordPress
良くないプログラミング手法
● グローバル変数
コード解読とテストの難易度を上げる
WordPress中に1,044ヶ所出現
古いPHPの機能への依存
● var
PHP4の不完全なオブジェクト指向機能
731ヶ所出現 (grep ‘var $’)
コメントにはpublicって書いてある
protected は付けてるのに…
コメントには private と書いてある
古いPHPの機能への依存
● mysql_connect
廃止が決まっている非推奨のPHPの機能
2009年からPDOへの移行が提案されたまま
mysql_connect
deprecatedのエラーを消してる
コミュニティの断絶
● PSR
20以上のFWやCMSが参加する標準
WordPressは投票にも参加していない
なんでそんなことに
● 後方互換性の重視
ユーザの環境を壊せない
機能も増えないしバグも治らない
のにコード変えるの?
maybelater?
その結果
● PHPでWordPressがいずれ動かなくなる?
● CMSの相互連携などが進みづらい
● WordPressでPHPを学習すると10年近く前の
スタイルのPHPしか覚えられない
負債への対応
● 学習、学習、学習
正しい手法を使う
● テストによる支援
後方互換性を維持しながらコード変更する
● 外交手腕
ただしい手腕を進める体制づくり
ここで叫んでも何も変わらないのは
わかってます
変えることができるのは…
あなた達です!

Mais conteúdo relacionado

Mais procurados

Kubo100903
Kubo100903Kubo100903
Kubo100903kubo
 
組み込みプログラマとテスト駆動開発
組み込みプログラマとテスト駆動開発組み込みプログラマとテスト駆動開発
組み込みプログラマとテスト駆動開発bei_kan
 
Pythonでラズパイのgpio制御
Pythonでラズパイのgpio制御Pythonでラズパイのgpio制御
Pythonでラズパイのgpio制御artk saga
 
CodeIgniter をモダンに改造してみた
CodeIgniter をモダンに改造してみたCodeIgniter をモダンに改造してみた
CodeIgniter をモダンに改造してみたMasaru Matsuo
 
Perl (OSC2011 Tokyo/Spring, Doc-ja)
Perl (OSC2011 Tokyo/Spring, Doc-ja)Perl (OSC2011 Tokyo/Spring, Doc-ja)
Perl (OSC2011 Tokyo/Spring, Doc-ja)Masaharu IWAI
 
あるゲームアプリケーションの構成とアップデートサイクル
あるゲームアプリケーションの構成とアップデートサイクルあるゲームアプリケーションの構成とアップデートサイクル
あるゲームアプリケーションの構成とアップデートサイクルKentaro Iizuka
 
Gradle PluginとCIと俺
Gradle PluginとCIと俺Gradle PluginとCIと俺
Gradle PluginとCIと俺Shinobu Okano
 
FunScript:F#からJavaScriptへのコンパイラー
FunScript:F#からJavaScriptへのコンパイラーFunScript:F#からJavaScriptへのコンパイラー
FunScript:F#からJavaScriptへのコンパイラーAlfonso Garcia-Caro
 
PHP カンファレンス 2014 に行ってきたよ
PHP カンファレンス 2014 に行ってきたよPHP カンファレンス 2014 に行ってきたよ
PHP カンファレンス 2014 に行ってきたよMasaru Matsuo
 
Mizukiryu refactering-20110821
Mizukiryu refactering-20110821Mizukiryu refactering-20110821
Mizukiryu refactering-20110821Mizuki Yamanaka
 
20101211 gunma.web#3 LanguaGegenerationLoss
20101211 gunma.web#3 LanguaGegenerationLoss20101211 gunma.web#3 LanguaGegenerationLoss
20101211 gunma.web#3 LanguaGegenerationLossivoryworks .
 
JavaScriptで味わう! 関数型プログラミングのメリット!!
JavaScriptで味わう! 関数型プログラミングのメリット!!JavaScriptで味わう! 関数型プログラミングのメリット!!
JavaScriptで味わう! 関数型プログラミングのメリット!!Keigo Magami
 
Devel ptkdb - perlをグラフィカルにデバッグする
Devel ptkdb - perlをグラフィカルにデバッグするDevel ptkdb - perlをグラフィカルにデバッグする
Devel ptkdb - perlをグラフィカルにデバッグするMasaaki Takasago
 
表参道.rb #1 Ruby Gold 2.1 に合格した話
表参道.rb #1 Ruby Gold 2.1 に合格した話表参道.rb #1 Ruby Gold 2.1 に合格した話
表参道.rb #1 Ruby Gold 2.1 に合格した話Yoshiaki Yoshida
 
Rust v1.0 release celebration party
Rust v1.0 release celebration partyRust v1.0 release celebration party
Rust v1.0 release celebration partyAkira Hayakawa
 
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRubyKanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRubyShinichi Okada
 
PHPの拡張モジュールをGoで作る
PHPの拡張モジュールをGoで作るPHPの拡張モジュールをGoで作る
PHPの拡張モジュールをGoで作るYoshio Hanawa
 

Mais procurados (20)

技術書へのいざない
技術書へのいざない技術書へのいざない
技術書へのいざない
 
Kubo100903
Kubo100903Kubo100903
Kubo100903
 
組み込みプログラマとテスト駆動開発
組み込みプログラマとテスト駆動開発組み込みプログラマとテスト駆動開発
組み込みプログラマとテスト駆動開発
 
Pythonでラズパイのgpio制御
Pythonでラズパイのgpio制御Pythonでラズパイのgpio制御
Pythonでラズパイのgpio制御
 
CodeIgniter をモダンに改造してみた
CodeIgniter をモダンに改造してみたCodeIgniter をモダンに改造してみた
CodeIgniter をモダンに改造してみた
 
Perl (OSC2011 Tokyo/Spring, Doc-ja)
Perl (OSC2011 Tokyo/Spring, Doc-ja)Perl (OSC2011 Tokyo/Spring, Doc-ja)
Perl (OSC2011 Tokyo/Spring, Doc-ja)
 
あるゲームアプリケーションの構成とアップデートサイクル
あるゲームアプリケーションの構成とアップデートサイクルあるゲームアプリケーションの構成とアップデートサイクル
あるゲームアプリケーションの構成とアップデートサイクル
 
(KOF2017) LibreOffice development activities: QA and Translation
(KOF2017) LibreOffice development activities: QA and Translation(KOF2017) LibreOffice development activities: QA and Translation
(KOF2017) LibreOffice development activities: QA and Translation
 
LT
LTLT
LT
 
Gradle PluginとCIと俺
Gradle PluginとCIと俺Gradle PluginとCIと俺
Gradle PluginとCIと俺
 
FunScript:F#からJavaScriptへのコンパイラー
FunScript:F#からJavaScriptへのコンパイラーFunScript:F#からJavaScriptへのコンパイラー
FunScript:F#からJavaScriptへのコンパイラー
 
PHP カンファレンス 2014 に行ってきたよ
PHP カンファレンス 2014 に行ってきたよPHP カンファレンス 2014 に行ってきたよ
PHP カンファレンス 2014 に行ってきたよ
 
Mizukiryu refactering-20110821
Mizukiryu refactering-20110821Mizukiryu refactering-20110821
Mizukiryu refactering-20110821
 
20101211 gunma.web#3 LanguaGegenerationLoss
20101211 gunma.web#3 LanguaGegenerationLoss20101211 gunma.web#3 LanguaGegenerationLoss
20101211 gunma.web#3 LanguaGegenerationLoss
 
JavaScriptで味わう! 関数型プログラミングのメリット!!
JavaScriptで味わう! 関数型プログラミングのメリット!!JavaScriptで味わう! 関数型プログラミングのメリット!!
JavaScriptで味わう! 関数型プログラミングのメリット!!
 
Devel ptkdb - perlをグラフィカルにデバッグする
Devel ptkdb - perlをグラフィカルにデバッグするDevel ptkdb - perlをグラフィカルにデバッグする
Devel ptkdb - perlをグラフィカルにデバッグする
 
表参道.rb #1 Ruby Gold 2.1 に合格した話
表参道.rb #1 Ruby Gold 2.1 に合格した話表参道.rb #1 Ruby Gold 2.1 に合格した話
表参道.rb #1 Ruby Gold 2.1 に合格した話
 
Rust v1.0 release celebration party
Rust v1.0 release celebration partyRust v1.0 release celebration party
Rust v1.0 release celebration party
 
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRubyKanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
 
PHPの拡張モジュールをGoで作る
PHPの拡張モジュールをGoで作るPHPの拡張モジュールをGoで作る
PHPの拡張モジュールをGoで作る
 

Semelhante a レガシーコード In WordPress

2015.04.19 WordBench 埼玉 Git & WordPress
2015.04.19 WordBench 埼玉 Git & WordPress2015.04.19 WordBench 埼玉 Git & WordPress
2015.04.19 WordBench 埼玉 Git & WordPressYutaro Miyazaki
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングterurou
 
Webブラウザで使えるいろんな処理系
Webブラウザで使えるいろんな処理系Webブラウザで使えるいろんな処理系
Webブラウザで使えるいろんな処理系祐司 伊藤
 
Gitと出会って人生変わった テックヒルズ2013-03-22
Gitと出会って人生変わった テックヒルズ2013-03-22Gitと出会って人生変わった テックヒルズ2013-03-22
Gitと出会って人生変わった テックヒルズ2013-03-22Shota Umeda
 
【de:code 2020】 Azure Kubernetes Service と Azure DevOps による GitOps の実践
【de:code 2020】 Azure Kubernetes Service と Azure DevOps による GitOps の実践【de:code 2020】 Azure Kubernetes Service と Azure DevOps による GitOps の実践
【de:code 2020】 Azure Kubernetes Service と Azure DevOps による GitOps の実践日本マイクロソフト株式会社
 
vendoring が無くなると Go x Github private repo x Docker 運用が地味に面倒になって困る話 (未完)
vendoring が無くなると Go x Github private repo x Docker 運用が地味に面倒になって困る話 (未完)vendoring が無くなると Go x Github private repo x Docker 運用が地味に面倒になって困る話 (未完)
vendoring が無くなると Go x Github private repo x Docker 運用が地味に面倒になって困る話 (未完)Itsuki Sakitsu
 
phpspecで始めるBDD
phpspecで始めるBDDphpspecで始めるBDD
phpspecで始めるBDDYuuki Takezawa
 
SEゼミ2015 - コードチェンジ
SEゼミ2015 - コードチェンジSEゼミ2015 - コードチェンジ
SEゼミ2015 - コードチェンジKouhei Sutou
 
Laravelから学びレガシーと闘いはじめた
Laravelから学びレガシーと闘いはじめたLaravelから学びレガシーと闘いはじめた
Laravelから学びレガシーと闘いはじめたYuta Ohashi
 
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugjPhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugjHisateru Tanaka
 
C・C++用のコードカバレッジツールを自作してみた話
C・C++用のコードカバレッジツールを自作してみた話C・C++用のコードカバレッジツールを自作してみた話
C・C++用のコードカバレッジツールを自作してみた話simotin13 Miyazaki
 
Riverpodでテストを書こう
Riverpodでテストを書こうRiverpodでテストを書こう
Riverpodでテストを書こうShinnosuke Tokuda
 
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~Rakuten Group, Inc.
 
設計書からの卒業
設計書からの卒業設計書からの卒業
設計書からの卒業Fumiyasu Sumiya
 
Javaプログラミング入門【第1回】
Javaプログラミング入門【第1回】Javaプログラミング入門【第1回】
Javaプログラミング入門【第1回】Yukiko Kato
 
Scrutinizer CIでPHPも静的解析 #phpstudy
Scrutinizer CIでPHPも静的解析 #phpstudyScrutinizer CIでPHPも静的解析 #phpstudy
Scrutinizer CIでPHPも静的解析 #phpstudyHiraku Nakano
 
Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすShunsuke Maeda
 
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめトランザクションスクリプトのすすめ
トランザクションスクリプトのすすめpospome
 
リーダブルコードを読んだ後
リーダブルコードを読んだ後リーダブルコードを読んだ後
リーダブルコードを読んだ後Kouhei Sutou
 
趣味プロダクトで楽しいコードライフワークを送る
趣味プロダクトで楽しいコードライフワークを送る趣味プロダクトで楽しいコードライフワークを送る
趣味プロダクトで楽しいコードライフワークを送るvolpe_hd28v
 

Semelhante a レガシーコード In WordPress (20)

2015.04.19 WordBench 埼玉 Git & WordPress
2015.04.19 WordBench 埼玉 Git & WordPress2015.04.19 WordBench 埼玉 Git & WordPress
2015.04.19 WordBench 埼玉 Git & WordPress
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
 
Webブラウザで使えるいろんな処理系
Webブラウザで使えるいろんな処理系Webブラウザで使えるいろんな処理系
Webブラウザで使えるいろんな処理系
 
Gitと出会って人生変わった テックヒルズ2013-03-22
Gitと出会って人生変わった テックヒルズ2013-03-22Gitと出会って人生変わった テックヒルズ2013-03-22
Gitと出会って人生変わった テックヒルズ2013-03-22
 
【de:code 2020】 Azure Kubernetes Service と Azure DevOps による GitOps の実践
【de:code 2020】 Azure Kubernetes Service と Azure DevOps による GitOps の実践【de:code 2020】 Azure Kubernetes Service と Azure DevOps による GitOps の実践
【de:code 2020】 Azure Kubernetes Service と Azure DevOps による GitOps の実践
 
vendoring が無くなると Go x Github private repo x Docker 運用が地味に面倒になって困る話 (未完)
vendoring が無くなると Go x Github private repo x Docker 運用が地味に面倒になって困る話 (未完)vendoring が無くなると Go x Github private repo x Docker 運用が地味に面倒になって困る話 (未完)
vendoring が無くなると Go x Github private repo x Docker 運用が地味に面倒になって困る話 (未完)
 
phpspecで始めるBDD
phpspecで始めるBDDphpspecで始めるBDD
phpspecで始めるBDD
 
SEゼミ2015 - コードチェンジ
SEゼミ2015 - コードチェンジSEゼミ2015 - コードチェンジ
SEゼミ2015 - コードチェンジ
 
Laravelから学びレガシーと闘いはじめた
Laravelから学びレガシーと闘いはじめたLaravelから学びレガシーと闘いはじめた
Laravelから学びレガシーと闘いはじめた
 
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugjPhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
 
C・C++用のコードカバレッジツールを自作してみた話
C・C++用のコードカバレッジツールを自作してみた話C・C++用のコードカバレッジツールを自作してみた話
C・C++用のコードカバレッジツールを自作してみた話
 
Riverpodでテストを書こう
Riverpodでテストを書こうRiverpodでテストを書こう
Riverpodでテストを書こう
 
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
 
設計書からの卒業
設計書からの卒業設計書からの卒業
設計書からの卒業
 
Javaプログラミング入門【第1回】
Javaプログラミング入門【第1回】Javaプログラミング入門【第1回】
Javaプログラミング入門【第1回】
 
Scrutinizer CIでPHPも静的解析 #phpstudy
Scrutinizer CIでPHPも静的解析 #phpstudyScrutinizer CIでPHPも静的解析 #phpstudy
Scrutinizer CIでPHPも静的解析 #phpstudy
 
Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らす
 
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめトランザクションスクリプトのすすめ
トランザクションスクリプトのすすめ
 
リーダブルコードを読んだ後
リーダブルコードを読んだ後リーダブルコードを読んだ後
リーダブルコードを読んだ後
 
趣味プロダクトで楽しいコードライフワークを送る
趣味プロダクトで楽しいコードライフワークを送る趣味プロダクトで楽しいコードライフワークを送る
趣味プロダクトで楽しいコードライフワークを送る
 

レガシーコード In WordPress