CodeIgniter3のチュートリアルをリファクタリング(5)

クリスマスイブですね!
みなさま今日はケーキの準備は万全ですか?

この記事はCodeIgniterアドベントカレンダーのために書きました! 24日目です!
https://qiita.com/advent-calendar/2017/code_igniter

CodeIgniter3のチュートリアルをリファクタリング(4) ではデータベースの準備まで終わりました。

やっとコードを書いていきますよ!

今日のテーマは

ログイン機能を作りながら、viewファイル使ってみよう!

です

各画面のURLを決めます。
要件定義で書いたIFDAM図を元に、起点となる画面とURL考えます。

(1) ログイン /login
(2) ログアウト /logout
(3) 記事一覧 /news/
(4) 記事詳細 /news/detail/{記事のslug}
(5) 新規投稿フォーム /news/create
(6) トップページ /

ログイン機能 / ログアウト機能

まずはログインログアウト機能を作成します。
ログインしている状態、していない状態について決めます。
(詳細設計ですね)

  • ログイン状態の管理はsessionで行います。
  • user.idとuser.nameをsession中で保持します。
  • この情報がsessionの中にあり、DBにも存在していればログインしている状態とします。
  • IDはemailを利用します
  • パスワードは暗号化して保存します。
  • 暗号化のキーは、configで設定する暗号化キーと、ユーザ別のsaltキーで作成します。

Controllerを作成

application/controller/Auth.php

ルーターの設定

application/config/routes.php
ログイン、ログアウトのURL用意しますね。

http://{設置した場所}/login
http://{設置した場所}/logout
それぞれで、login logout の文字は表示されましたね!
次はviewファイルを用意しますよー

画面の用意

まずは、login画面から作っていきましょうか!
viewファイルは、application/viewsフォルダの中に作ります。
機能に分けてviewファイルをフォルダ分けしたほうが後で探しやすいので、Authフォルダを作りその中にlogin用のviewファイルを用意しますね。

application/views/Auth/login.php

表示するHTMLを用意します。

このHTMLをloginへアクセスがされた場合に表示をしてみます。

http://{設置したURL}/login

ここまでは表示されたでしょうかね?

(次に続きます)

CodeIgniter3のチュートリアルをリファクタリング(3)

こんにちわ! NEKOGETです。
この記事はCodeIgniterアドベントカレンダーのために書きました! 21日目です!
https://qiita.com/advent-calendar/2017/code_igniter

20日目の記事は、 アドベントカレンダーの効能 でした!

内容としては、 CodeIgniter3のチュートリアルをリファクタリング(2) の続きになります!

AWS Lightsail は80と22ポートがデェフォルトで開いています。ビルドインサーバーで8000で立ち上げてしまうのもアリですが、今日はhttpdさんに頑張ってもらうことにします。

ソースコードの移動

URLを叩いてWelcomeページが見えるか確認してみましょう

表示されました

configの設定

application/config/config.phpの設定

ベースURLの設定をします。今回はチュートリアルなのでipアドレスからのURLで良いでしょう。

起点となるファイルのパスを記載します。
デェフォルトではindex.phpです。
今回はkenjisさんの提供してくれているパッケージでプロジェクトを作ったのですでにmod_writeの設定が.htaccessで設置されていますので、ブランクになっています。

composerのautoloaderを使うかどうかの設定がありますね。
trueにしておきましょう

今回はsessionはfileのままで行こうかと思います。
なのでそのままデェフォルト値で良いでしょう

unitTest実行用ライブラリの追加

https://github.com/kenjis/ci-phpunit-test
composer installします。

testsフォルダへ移動

しかし、../../vendor/phpunit/phpunit/phpunit はちょっと遠いね。


テストが実行できる状態になりました。

次へ続きます。

CodeIgniterの歴史

こんにちわ! NEKOGETです。
この記事はCodeIgniterアドベントカレンダーのために書きました!
https://qiita.com/advent-calendar/2017/code_igniter

この記事の前の記事は
CodeIgniterのどんな話をしようかな?の巻 です
このままだと毎日NEKOGET !!!!
25日までガラガラなんで、誰か記事頼むよ。本当お願い。

さて、歴史の話!
今、CodeIgniterはバージョン3!!!
ってことは1の時代も2の時代もあるんですね!
そして4への未来へと続く☆

みたいな話をすっごい主観的に書くよ!
ほぼNEKOGETとCodeIgniterとの仲良し記録になる予定なので軽い気持ちで読んでね☆

CodeIgniter1の時代

CodeIgniter誕生
この時代のことをNEKOGETは知りません。
出会ったのは彼が1.5か1.6の頃だからね
ユーザーガイドに書かれている誕生の時

Version Beta 1.0 Release Date: February 28, 2006

1.0はベータ版だったんだね。

Version 1.2 Release Date: March 21, 2006
ベータじゃ無くなったのは1.2 正式リリースって意味では2006年3月21日がお誕生日
おめでとう! CodeIgniter!!!
PHPのバージョンは幾つの頃だったんだろう?

http://pastport.jp/user/yandod/timeline/php-history
PHP年表によると2006年春はPHP5.1.xが最新だったみたい。namespaceもまだだし、配列もarray()の時代だね。

Version 1.5.1 Release Date: November 23, 2006

私と出会ったCodeigniterさんは1.5だったと思うんだよね。1.5.x ← ここの数字は覚えてなんだけども。
当時の私はまだDreamWeaverでPHPを書いていてね、スニペットを自分のために、登録して使えるようにしてた記憶があるよ。
まだCodeIgniter徹底入門は出てなかったと思う。
今Amazonを見て見たら 出版社: 翔泳社 (2008/6/10) って書いてあった。
知り合ってから10年以上になるんだなぁと思うと感慨深いね。
当時Codeigniterを開発していたElis.LabのホームページのHTMLがそれは美しくてね….
当時まだbootstrapもない時代で、xhtmlのmarkupがどうあるべきかみたいな話題が溢れてた時代。
htmlの構造もmarkupもclassのつけ方もそれは美しくてね、感動したのを覚えてるよ。
見た目は良くてもぐっちゃぐちゃなhtmlを吐き出さない会社の作ったPHPのフレームワークなら使って見たいと思ったんだ。
使えるようになりたいともね。(あの頃の美しかったhtmlは、もう今となっては思い出の中にしかないんだけども)

当時のCodeigniterは結構まだバグもあったのだけども当時から、application層でclassが上書きできる仕組みにはすでになっていて自分で直したものをそこで試せたし、本家に報告をして直してもらうまでの間application層で対応したものを設置して実装できたんで本体に手を入れてみたいなことをせずに修正できたんだよね。これは3になってもその仕組みは残っていてすごく便利だったんだ。
Model周りとか他のフレームワークのライブラリを使う方法とかそういう情報が結構出てたように思うよ。

CodeIgniter2の時代

すごく長かったように思うなぁ2の時代
1から2へのバージョンアップは、form_valodation classの名前が変わったのだけがちょっとめんどくさかったけどあとはそれほど難しくなかったように記憶してるよ。

https://www.codeigniter.com/user_guide/installation/upgrade_200.html?highlight=upgrade

これは、1.7から2.0へのアップグレード方法が書かれているユーザガイドのURL
完全に忘れてたんだけど、そうそう、pluginのディレクトリが無くなったのよね。

CodeIgniter2から3の時代(ライセンス問題勃発)

CodeIgniterといえばライセンス問題と言われた(?)ほどに不遇の時代。
CodeIgniterライセンスから

CodeIgniter3のライセンス問題に対する意見書公開

というのを、弁護士の先生にお願いをして、公開したのはすごく懐かしい思い出。決して安くななかったけど個人でこれをやれたのは勢いがあったんだなぁ私ってつくづく思うよ。
結局バージョン3になり、開発がElis.Labからブリティッシュコロンビア工科大学になりあれほどもめたライセンス問題はさらっとMITライセンスになったのでした。
本当にあの騒動はなんだったんだろうね。もうとっくに3を出してもよかったんじゃないのって時期から1年も待たされたんだよね。でも結果すごく良い状態の3に出会えたのはよかったことなのかなとも思うのよね。

元々CodeIgniterは元々ExpressionEngine CMSっていうCMSを開発するためにあったのね。で、もっと小さな規模での企業サイトを作る用のCMSがCodeIgniterで作られていてElis.Labで売られてたのね。
それらを買ってみたりしてコードを読んで勉強したのはすごく良い思い出。
seezoo っていうcmsもあった。これもまたすごく素晴らしかったんだ。

CodeIgniter3の時代

3は現行最新バージョンだね。

Version 3.0.0 Release Date: March 30, 2015
Version 3.1.6 Release Date: Sep 25, 2017

3がリリースされたのが2015年
最新版が出てるのが今年の9月
まだ本家だと2のユーザーガイドも見れる状態だけども、そろそろみんな3にバージョンアップしてほしいな。
したよね?
魔改造しちゃったCodeIgniterもうまいことApplication層へ改変コードを移動して3へのバージョンアップに挑戦してほしい。
CodeIgniter3はPHP7.2のテストも実行されてるし、passされてるよ。 怖くないよ!!!

3の続き話は後でにしようか。ちょっと長くなりそうだしね。

そして未来のCodeIgniter4

これも、4の話はボリュームかなり大きいから後から改めて話をしようと思うよ。

そんなこんなで3日目の記事を書きました。

次の記事は@rhapさんの 【CodeIgniter】プロファイラを外部ファイル出力できるようにする です!
お楽しみに☆

追記:
いやぁ、すんごい嬉しい!!!! もっともっとCodeIgniterの話をしてくれる人がいっぱい現れるといいのに!いいのに!!!
書きたくなっちゃったなーって方は是非、 CodeIgniterアドベントカレンダー に登録してくれると嬉しいなぁ。めちゃくちゃ嬉しいなぁ☆
https://qiita.com/advent-calendar/2017/code_igniter

なぜこのアドベントカレンダーのURLがcode_igniterなのかなの巻

これは、アドベントカレンダーのために書いた記事です。
アドベントカレンダーのURLはこちら
-> https://qiita.com/advent-calendar/2017/code_igniter

まぁあれです。
今年はね、アドベントカレンダーを書く時間なんてぶっちゃけないはずだし、いいやーって思ってたんですよ。でもね12月1日になってアドベントカレンダーを書かなきゃーっていうのがtwitterのタイムラインに流れ出し、書くよーって話も聞こえてきたりするわけですよ。
ああ、やっぱ寂しいよなー
CodeIgniterは元気だし、いい子だし、もっと知ってもらわないといかんよねってことでアドベントカレンダー作りました。
誰かが書いてくれる気配はあまりないので、頑張って書きます!
読んで面白いかどうかは、とりあえず後から考えます。
後悔ってやらなきゃできないしね☆☆☆

そんなわけで、アドベントカレンダーのURLの話です。
今日の今日作ったのでネタなんてありません。
何書くか、今日明日これから考えるのでまずはURLの話をします。

CodeIgniterのアドベントカレンダーなのですが、urlはcodeigniterでもCodeIgniterでもなく、code_igniterです。一瞬全部小文字か大文字ありにしたくなったわけですが、しませんでした。

なぜかって?
2016年、2015年のアドベントカレンダーのURLもそうだからです。

https://qiita.com/advent-calendar/2016/code_igniter
https://qiita.com/advent-calendar/2015/code_igniter
….

URLで遡れるのいいよねー!
去年のアドベントカレンダーを作ってくれたアヤトさんに相談されたおりに、その前はどうだったかなー?って絶対URL2016の部分を2015にしたりするよね?んじゃ、微妙は微妙だけども、code_igniterでいいんじゃない?って言っちゃったのですよね。

つまり私が!

で、2014年はなく、2013年も絶対code_igniterだと思ってたんですよ!
そうしたらですね….
https://qiita.com/advent-calendar/2013/codeigniter

まさかの全部小文字….(絶句)
2018年のアドベントカレンダーはどうなるのか今からドッキドキです!

はい!
明日のアドベントカレンダーを書くのも私の予定です☆
頑張ります☆

builderscon tokyo 2017 に行ってきました!

builderscon tokyo 2017 に行ってきました!
グラレコ風にメモをとったのでまとめておきます。(と言っても2件だけですが)

builderscon tokyo 2017

8/4に見に行った時のメモです。

初めてのMySQLチューニング -データベースは怖くない!

RDBアンチパターン リファクタリング

その他聞いたセッションについて

  • Anatomy of DDoS
  • なんかもう聞いてるだけで凄まじかった。DDosに負けない環境で判定して正常なリクエストに返すべきリクエストを返すようにするとか凄まじいすぎる。

  • LT
    • 面白かった。4分割したQRコードで正しい情報を伝えるとか全く知らなかったし面白かった。
    • できる!!!Validation!!!は、死にすぎwwwwww 面白すぎましたwwww 見てて声出たwwwww
    • イベントの名札すごいなーと思ってたけど本当に大変だったんだな感。手間と情熱でイベントの素敵名札はできてました!
    • JSON-LDありがたいよね。htmlタグの中にこれ以上何かごにょごにょ入れるのはきつい。めっちゃきついJSONで分離できるの素敵でし。

おまけ

グラレコとは

グラフィックレコードとは、議論や対話のプロセスを構造化して、ビジュアルとしてリアルタイムで描きだす手法です。 単なる情報整理や記録だけでなく、場の議論を整理し、フィードバックを与えることで課題解決を促進するファシリテーションの手法としても役立ちます。

参照元: https://www.hashimoto-lab.com/2015/05/4308
google検索 “グラフィックレコードとは” で検索

おまけ: 1枚レポート

初めてのMySQLチューニング -データベースは怖くない!

RDBアンチパターン リファクタリング