tanikoのぶろぐ

学年暦APIを作った

簡単な大学の学年暦APIを作ったのでその報告です.

https://ritsucal.hrgruri.com です

大学と大学院(情報理工学研究科)の学年暦をJSONで取得できるという簡単なものです. 使い方はドキュメントを見てもらえればいいかと.
検索機能ですが,そのうちsince, untilができるようにはしたいと思います

弊大学の闇 (学年暦編)

学年暦の闇

大学の行事を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番上に来るような弊大学のホームページだからといって間違いがないとは思ってはいけない.
そして弊大学の学年暦は光沢機

icd3

先生「創成3で作ってもらったサイトをオープンキャンパスで見せようと思う」
私「あっ,はい. ちゃんとしたコードに直したかったので, 修正したら渡します」
先生「それなんだけどね, 今のままだと書籍だけで見た感じが微妙だから絵も推薦できるようにして. 7月末までにしておいてね」

こんなわけで,前に作ったサイトの見た目をとかを修正するだけだったつもりが, 先生からのお願い(?)で推薦対象となるカテゴリーを増やすことになりました.
追加することになったのは浮世絵. 浮世絵のログは抽出してDBに保存していなかったので,もう一度アクセスログの解析をすることになりました. クローラなどのログはすでに落としてあるのがあったと思うので,そこからもう一度.

I Love PHP なのでもちろんPHPを使います. スクレイピングもPHPです. スクレイピングのコードも前まではクラスを作ってそれを使っていただけだったのですが, 今回はComposerでインストールして使えるようにして公開したいと思います.

実行環境は,今日,研究室に立てたUbuntu Serverを使おうかなと. 開発段階では研究室のみからアクセスできるようにしておけばいい. オープンキャンパスの時のみ,大学のIPだけを通すようにするとか考えたが... 前回と同様にデータを先生に渡すだけになるのかな