CodeIgniter ネタを集め続けて約2年

この記事は<a href="http://qiita.com/advent-calendar/2016/code_igniter" target="_blank">CodeIgniter Advent Calendar 2016</a>の4日目です。

僕は2014年末頃から CodeIgniter を独学で学び始めました。その時とても頼りにしていたのが公式ドキュメントの日本語訳です。(当時は2系が最新だったので[こちら](http://codeigniter.jp/user_guide/2/)を読みました。)

その充実ぶりは、Webアプリケーションフレームワークの入門者である僕が勉強し始めるには十分なものでした。
しかしググったりTwitter検索していたりすると、公式ドキュメント以外にも断片的な情報を少しずつ得ることができました。

ここではその断片的な情報の中から、僕がもっと深く知りたい OR 調べてみようと思った事を書き残していこうと思います。
もしこれら中にご存じの話やビビッと来るような情報があれば、ぜひ[CodeIgniter Advent Calendar2016](http://qiita.com/advent-calendar/2016/code_igniter)に参加してみてください。

## Twitter編

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">おぉ、Cli for <a href="https://twitter.com/hashtag/CodeIgniter?src=hash">#CodeIgniter</a> 3.0のビデオチュートリアルが!! &gt; <a href="http://t.co/0slJnRdSgI">http://t.co/0slJnRdSgI</a></p>&mdash; kenjis (@kenji_s) <a href="https://twitter.com/kenji_s/status/596251542384181248">2015年5月7日</a></blockquote>
CodeIgniterに限らず、YouTube上で技術解説をしている方が意外と多い。だいたいは英語だけどざっくりとなら理解できる。まだ何本かしか見たことがないので、ざっくり感想だけでも文章にして、日本語でググった時に引っかかる形にしたい。
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">codeigniterユーザーやばい。<a href="https://t.co/MFNUklgIGV">https://t.co/MFNUklgIGV</a><br>使おうぜ。 <a href="https://t.co/46rBg2p1tj">https://t.co/46rBg2p1tj</a></p>&mdash; rochefort (@rochefort8) <a href="https://twitter.com/rochefort8/status/639444419293278209">2015年9月3日</a></blockquote>
Unitテスト自体の勉強と合わせて使ってみたい。
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">CodeIgniterのコーディング規約はCodeIgniterにPRするときに使うものです。無視したら拒絶されます <a href="https://t.co/abC5f5cqmE">https://t.co/abC5f5cqmE</a></p>&mdash; kenjis (@kenji_s) <a href="https://twitter.com/kenji_s/status/674796062301945857">2015年12月10日</a></blockquote>
CodeIgniter本体のコードに関するコーディング規約が何らかの難点を持っている様子なのですが、ちょっと良く解ってない。CodeIgniter自体のコードを書く時はともかく、CodeIgniterを使って何かをする時には良くない、という事でしょうか？
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr"><a href="https://t.co/MEfuRWHWfb">https://t.co/MEfuRWHWfb</a> kenjisさんところで必要なものが全部揃っている感すごい。 <a href="https://twitter.com/hashtag/CodeIgniter?src=hash">#CodeIgniter</a></p>&mdash; NEKOGET (@NEKOGET) <a href="https://twitter.com/NEKOGET/status/683272604728164352">2016年1月2日</a></blockquote>
kenjisさんのGitHubリポジトリ、さらっとしか見ていないけど便利な物がたくさんある様なので、解説記事とかあると嬉しいかもしれない。
READMEが充実している物ばかり。[これとか](https://github.com/kenjis/codeigniter-deployer)。嬉しい。


## 詳細未確認編

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">強力なMonkeyPatch機能。patchFunction()でmd5()の挙動を制御 <a href="https://twitter.com/hashtag/oscnagoya?src=hash">#oscnagoya</a> <a href="https://twitter.com/hashtag/codeigniter?src=hash">#codeigniter</a></p>&mdash; 日本CodeIgniterユーザ会 (@codeigniter_jp) <a href="https://twitter.com/codeigniter_jp/status/736411682440810496">2016年5月28日</a></blockquote>
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">おまけ　データベースを実際に動かしてテストしたい場合。Seederを使う  <a href="https://twitter.com/hashtag/oscnagoya?src=hash">#oscnagoya</a> <a href="https://twitter.com/hashtag/codeigniter?src=hash">#codeigniter</a></p>&mdash; 日本CodeIgniterユーザ会 (@codeigniter_jp) <a href="https://twitter.com/codeigniter_jp/status/736415211616243712">2016年5月28日</a></blockquote>
オープンソースカンファレンス名古屋2016の話？
### [GitHub - rdlabo/CodeIgniter_Talk: Codeigniter開発の参考になるwebサイトをまとめていきます。](https://github.com/rdlabo/CodeIgniter_Talk)
いわゆる[あとで読む]状態なのですが、この中でビビッときた物は自分の言葉にしてAdvent Calendar の記事にしたいと思っています。

## 番外編

### [まだ正規表現で消耗してるの？ // Speaker Deck](https://speakerdeck.com/sizuhiko/madazheng-gui-biao-xian-dexiao-hao-siterufalse)

こちらで紹介されていた [hexpress](https://github.com/sizuhiko/hexpress) というツールをCodeIgniterで使ってみたい。既にやったよという方がいれば話を聞いてみたいです。
### [JavaScriptフレームワークに対する、あるGoogle社員の争い](http://www.excite.co.jp/News/it_g/20151210/Readwrite_6358.html)

こちらはJavaScriptに関するニュース記事ですが、記事の最後にこんな言葉があります。

    「フレームワークを使うことはいいアイデアかも知れないが、
    　そのフレームワークが何を抽象化しようとしていることを深く理解することは
    　更に良いことだ。」

あまり深くは知らないのですが、CodeIgniterは過去にユーザーからの要望を、明確な設計思想の下に「それはCodeIgniterのやり方じゃないよ」と退けた事がある様です。
CodeIgniterの設計思想について、僕はまだ上手に言語化できないのですが、これについて何らかの知見をお持ちの方がいたら是非教えてください！
### [PHPer人生、一度はフレームワークを作っておこう！ // Speaker Deck](https://speakerdeck.com/uzulla/phperren-sheng-du-hahuremuwakuwozuo-tuteokou)
PHP界隈の有名人、uzullaさんによるスライドです。
詳細は割愛しますが、ここではフレームワークを作ってみることによって得られる知見について書かれています。
とは言え実際にフレームワークをゼロから自作するのは大変苦労が予想されますが、既にあるもののソースコードを読んでみれば同等の知見が得られるのではないでしょうか。
幸いにもCodeIgniterは軽量なフレームワークであり、バージョン3以降はMITライセンスの下で管理されています。コア部分にもコメントが書き込まれており、コードリーディングに最適なフレームワークの1つといえるのではないでしょうか。

以前PHPからOracleに接続できるフレームワークを調べていた時に `system/database/` 以下を読んでみましたが、理解が追いつかない程の難解さは感じませんでした。（当時の僕はautoloaderの存在も知らないようなレベルでした。）
最近はGoogle翻訳の精度が上がった(特に技術系の英日翻訳)ので、挑戦してみてはいかがでしょうか。

---

次のアドベントカレンダー5日目はまだ空席なのですが、この記事用に貯めていたネタがまだ残っているのでそれを活用するつもりです。