tanikoのぶろぐ

saori v2.0を開発中

composer create-projectでインストールできるようにして, symfony/consoleを利用してsaoriを使用できるようにしました. あとnamespaceを修正.

v2.0-devをインストール

composer create-project hrgruri/saori:v2.0.x-dev blogで開発途中のv2.0をインストールして始めることができます. 最後のblogはディレクトリ名なので別のものに変えても構いません.

使用方法

composer create-project hrgruri/saori:v2.0.x-dev blog
cd blog
php saori

#初期化
php saori init

#下書きファイルを生成 (いきなりpostを使ってもいい)
php saori draft first_article

#記事の投稿
php saori post first_article

#静的サイトを生成
php saori build

現在のところ,init, draft, post, buildが使用できます. -h使えば簡単な説明が出ると思うのでそちらを参考に.

php saori draftは別に使用しないでいきなりphp saori postしても利用できるのですが, draftを使ったほうがいいかと.

今後

draftした時にはconfig.jsonが作られず, postした時に作られるのですが, これだとpostした後じゃないとconfig.jsonがさわれない. config.jsonをdraftでも生成しておき, timestampをpostした時に追加させようと思います.

弊大学の闇 (学年暦編)

学年暦の闇

大学の行事をJSONで返してくれるようなものを作ろうとしていた時に気づいた弊大学の闇を話したいと思います.

calender ?

PHPを使って学年暦をスクレイピングするライブラリに行事の検索機能を追加しようとしていました. 検索機能と言っても年・月・日を連想配列で渡すと該当の行事が配列で帰ってくる簡単なものです.
引数の型が指定できるので\Hrgruri\Ritsucal\Calendar型とarray型を引数にしてメソッドを作りました. 学部の学年暦と今日の日付でテストをするとTypeError. 型が違うというエラー. 該当するクラスを見に行くとあるのはsrc/Calender.php. Calender.php ?
CalendarではなくCalender. ちなみにCalenderは光沢機のこと.

タイプミス? やってしまったと思い, 置換しようと「calender」で検索すると

private $url = 'http://www.ritsumei.ac.jp/profile/info/calender/';

までヒットした.

大学の間違え

ブラウザで確認したところ
http://www.ritsumei.ac.jp/profile/info/calender/ は存在しているが,
http://www.ritsumei.ac.jp/profile/info/calendar/ は存在していない.

大学側も間違えていた. 学年暦のページが光沢機(calender)になっている.

今回の原因

そもそも大学側が間違えていたので, 私が間違えたのは大学のせいである. むしろ間違いに合わせているので,私は間違えていない

  1. 単語の綴り確認もせずに,学年暦のURLに合わせてクラス名を決めてしまっていた.
  2. 大学のホームページは正しいと思いんでいた.
  3. 補完に頼り過ぎた.

まとめ

英語の綴りは確かめましょう. Googleで「学年暦」と検索して1番上に来るような弊大学のホームページだからといって間違いがないとは思ってはいけない.
そして弊大学の学年暦は光沢機

Saoriの下書きとキャッシュ

saori v1.1の開発

現在saori v1.1の開発を行っています.

  • 下書き機能
  • 記事のキャッシュ

に関することを行いました.

下書き機能

下書き機能はphp main.php draft :nameとするとcontents/draft/:name/article.mdが作成されてここで記事の下書きができるよになるものです. 投稿したい場合はphp main.php post :nameとするとcontents/article/yyyy/mm/:nameにコピーされます. 記事のconfigファイルはpostした時に作成されます.

記事のキャッシュ

今まではarticle.mdの画像パスを書き換えたものをcache/に作成しておき, article.html()でarticle.mdを読み込んでパースをしていました.
これを予めパースしておきarticle.htmlをcache/に作成しておき, article.html()でarticle.htmlを読み込むというものに変更しました.

時間計測

500回ループさせて時間を計測しました. 変更前後で2回計測.

変更前変更後
1回目60.1553.39
2回目59.7754.78
平均59.9654.085

記事の数やブログのテンプレートによって前後するとは思いますが, 方式を変えたことで5.875秒削減できました. 現在のところブログを生成する際には誤差かもしれませんが, 記事数が増えれば差が大きくなっていくかもしれません.

PHPカンファレンス 関西2016でLT

PHPカンファレンス関西 2016に参加をして, ブログを書くまでがカンファレンスだと言われたので書きたいと思います. 初めてのIT系イベント, 初めてのLT, 初めての懇親会でした. 先に断っておきますがカンファレンスでの基調講演やセッションの感想ではなく個人的な話が主です.

当日まで

カンファレンスに参加

そもそもPHPカンファレンス関西というのを知ったのが, 2015年のカンファレンスの動画をYouTubeで見つけた時です. なので知ってから1年も経っていません.
東京は行くのが厳しいですが, 大阪なら行けるということで2016年のPHPカンファレンス関西には参加したいと思いました.

その時点ではまだ何月何日に開催されるのかわかりませんでした. 月日は流れ, 開催日が発表されてそれを確かめると7月16日. 予定も空いているので参加を決意しました. この時点ではただ単にカンファレンスを聞きに行くだけの予定でした.
一応,少しずつですがhrgruri/saoriの開発をしていました.

LT参加を決意

6月になってもまだLTの応募がありました. セッション枠は募集終了していたと思います.

カンファレンスに参加をするんだったら話したいなと思い, 思い切ってLTの応募をしました. 落選するだろうなと思っていたのですが, 6月16日に当選メールが来て喜ぶと同時に(まだまだ先ですが)緊張しました.

前日

当日

午前の部

開場が10時からで,大阪駅には9時30分ごろに着いていました. のんびり会場まで歩いて行きながら大阪の車と人の多さに怯えていました.

会場(7階)で受付を済ませました. スピーカーは専用の場所があり, 名前を言うだけで受付が済むのは良かったです. 午前の部が終わった時にメインホールでWi-Fiが使ええますよというアナウンスが有りました. LTのデモでは, デモ用のブログを生成して終わりにしようと考えていたのですが, 実際にgit pushしてLTの最中にブログをアップロードできる可能性が出てきました.

午後の部

お昼ごはんを食べに行き, 会場の戻ってくると休憩場所がある8階に行きました. カンファレンスに来たのだからセッションを聞きに行くべきだですが, LTのデモの内容とスライドを変えたかったので, その作業を行いました. 当初,スライドは2分話して, 2分デモをして, 1分話すという考えのもと作っていました.

しかし実際にブログを更新できそうだったのと, デモの内容を変えることでデモにかける時間が変わると思ったので, デモを最後にすることにしました. そんなわけで,スライドを少し変えてデモ用に簡単な記事を予め作っておき, シェルスクリプトでコピーできるようにしていました. そのあと簡単にですがLTの練習をしていました. LTの練習がある程度済んだらセッションを見に行きました.

LT(ライトニングトーク)

セッションがすべて終了すると,少しの休憩を挟み, いよいよメインホールでLTです. プロジェクターのチェックを済まし,上手側でLTのスピーカーの人たちは待機していました. 例年だとLTの順番はくじなどでランダムに決めていたようですが, 今年はタイムテーブルの順で行うことになりました. 私の順番は5番目でした.

他の方のLTを見ながら, 待機場所でスライドに不備がないことを確認していました. 前の方が終わり, いよいよ私の番になったのでステージにあがり,パソコンを設定していると空席があるということで席の誘導が行われ, その後, 始まりました.
自己紹介で大学生だということとIT系のイベント自体初参加でLTも初めてだということを言ったら拍手をいただきました. スライドの説明はスライドをアップロードしているので詳しくは省略します.

内容としては「github.io」と既存の静的サイトジェネレータに少し触れて, 「Saori」の話をしました. 使い方や設定などに関してはあまり話せませんでした. 簡単にですが使い方を書いたのでSaoriを使いたい方はこちらをご覧ください.
時間が十分に余ったので, 最後にデモを行いました. デモの内容は私が実際に使っているブログに記事を投稿するというものです.
少しの内容ですが実際に書くのは(時間的に)怖かったので予め用意していました.

デモの内容

  1. 記事「demo」用のベースファイルを生成
    「blog post demo」と入力してベースとなるディレクトリとファイルを作成しました. 「blog」はaliasで「blog='php ~/Desktop/blog/main.php'」です.

  2. ファイルをコピー
    用意していた記事をコピーする際に「cp from to」とする時間がもったいなかったので予め作っていたシェルスクリプトでコピーしました.

  3. ブログを生成
    「blog make」と入力してブログを生成します. これによりlocalhostで動かすためのものとusername.github.ioで公開するものとが生成されます.

  4. localhostで確認
    GitHubに上げる前のlocalhostで確認をします. PHPのビルトイン サーバを利用してWebブラウザで確認をしました.

  5. 実際に公開
    公開するためにadd, commit , pushをしました. 「g add」とかしていましたがgはgitのaliasです.

  6. hrgruri.github.ioを確認
    実際に公開されたページをWebブラウザで見に行きました.

Saoriについて話をしてデモもでき,最低限の言いたいことが言えたあたりで銅鑼が鳴り,初のLTが終了しました. 実は手元のiPhoneで時間を図っていたのですが, LT中に1度も見ていなかったです.

そんなわけで今回のLTで

  • github.ioは無料
  • GitHubが緑になる
  • PHP最高
  • Saoriはいいよ

ということが伝わっていれば幸いです. ちなみにデモの際に投稿したのはこれです.

LTの感想+α

デモではタグ, リンク, 最近の記事の掲載などに触れることができて良かったです. しかし,プッシュをした時にすぐに終わらないのは本当に焦りました. 微妙なところで終わるのかもしれなかったですが, LTならではのアクシデントでいい経験だったと思います.
始まるまでは拍手や笑いが無いものになってしまうのではないかと不安でしたが, LT冒頭の自己紹介で拍手をいただき不安と緊張がとても和らぎました. LT中も笑いがあり, やっていて楽しかったです.

私のLTを聞いてくださった皆さんとLTをさせてくださった実行委員の方々に感謝したいと思います. ありがとうございました.

こちらが私のLT資料です.

懇親会

LTと写真撮影が終わったら, 懇親会の準備のため18時まで時間があったので8階で待機となりました. Twitterを見ているとスライドのアップロードがいくつもあったので, 私もすることにしました.Speaker Deckでアカウントを作成し, アップロードをしている最中に「LTしていた人ですよね」と声をかけてくださった方々がいました. その人達と懇親会が始まるまでいろいろと話しをさせていただき, 懇親会でも引き続き話をさせていただきました.

懇親会では飲んだり食べながらしながらいろいろな人と話をさせていただきとても楽しかったです. 知らなかったWAFのことを教えていただいたり, WordPressの話をしたりと私が知らなかったことを聞くことができました.

懇親会のLTは話をしながら後ろのほうで聞いていました. 懇親会LTは3分というとても短い時間でしたが面白いものばかりで会場も大盛り上がりでした.
LTのあとはじゃんけん大会が行われました. 11名が景品をもらえるとのことでした. 結果は11名の中に残り,カンファレンスのTシャツを頂きました.

懇親会の終わりごろに基調講演をされたhirakuさんと少し話をさせていただきました. メルカリ様のステッカーをいただきました. ありがとうございます. パソコンにでも貼りたいと思います.

最後に

こうして初めてのカンファレンス, 初めてのLT, 初めての懇親会が終わりました. 懇親会での話やTwitterを見てみると「LT,良かったよ」というのがあったので嬉しいです. デモも好評で良かったです. リポジトリを見てみるとStarがありました. ありがとうございます. hrgruri/saori

Twitterで#phpkansaiを見ているとLTで話した内容(Saori)以外のことが少し話題になっていました. それは私がデモの時に使った「g (git)」です. Twitterを見ている限り「git」はエイリアスで「g」としている人は多い気がしますが少し会場がざわついていました. 少しでもストレスを無くすために「g」にするはおすすめです.

カンファレンスが始まる前から気になっていたのですが,私以外にも大学生は参加していたのでしょうか. 私だけということはないとは思いますが,見かけませんでした. LTの冒頭で大学生がいるか聞いておけば良かったかなと今思う.

カンファレンスに参加したい学生へ

PHP初心者の学生でも参加する価値はあると思います. そもそも私自身もPHPを使い始めてそれほど経っていませんし, 今回LTで話したことも静的サイトジェネレータの話であって, PHPの主な使い方であるWebアプリケーション関係の話ではないです.
スライドでもPHPのコードはたったの4行しかありませんでした. PHPを触ったことがない人でもPHP(Saori)を使ってブログを公開することで, PHPに興味を持って使い始める学生が出てきてくれたら良いなと思います.
また,今回のカンファレンスでは初心者向けのセッションやDBに関するセッションなど, PHPを知らなくても楽しめるものがいくつもあったと思います.
LTをしたことで思ったのが, みんな優しかったです. LT後にも話しかけてくださる方々がいてとても良いカンファレンスでした.
カンファレンスの参加料は1000円ですが, 学割(先着)があり今回のカンファレンスは無料でした. ちなみにLTスピーカーは招待されるので本編チケットを買う必要なし.

最後になりましたが, カンファレンスに出席した皆様, LTを聞いてくださった皆様, 懇親会で話をしてくださった皆様, 主催してくださった実行委員の皆様, そしてスポンサーの皆様のおかげで楽しいカンファレンスとなりました. ありがとうございました.


その他

カンファレンスのスライドは,まとめてくださった方がおられるのでそちらを御覧ください.
PHPカンファレンス関西2016 スライドリンク集 #phpkansai - お?意外といけるやん!

TogetterにPHPカンファレンス関西2016まとめがあります.
PHPカンファレンス関西2016まとめ

PHPカンファレンス関西に参加しようと考えた時に読んだ記事
ブラよろで学ぶPHPカンファレンス関西2014

demo

deom

これはデモ用の記事です. 現在LT真っ最中です.
demo