苫小牧高専 の情報処理同好会では、不定 期で「Josho.LT」という技術系のLTイベントをやっている。昨日23日(火)に、今年度初のLTがあり、せっかくなので発表してみることにした。最近専攻科とSwitchのゼルダ とバイトの開発で忙しくて、全然趣味プログラミングをできていなかったので、これをきっかけにサクッとなんかアプリでも作ろうというモチベーションもあった。LT駆動開発である。
今回のLTのために作ったのは、「苫小牧高専 授業変更情報 iCalendarフィード」である。学校のWebサイトの授業変更情報ページ から情報を取得し、各クラスごとのカレンダーフィードを提供するという、シンプルなWeb Appだ。フィードでは、前の週の月曜日から、次の週の金曜日までの3週間分の授業変更情報が提供される。
TNCT授業変更情報 iCalendarフィード
発表資料はこんな感じであった。
speakerdeck.com
ソフトウェアテクノロ ジー 部で2年生向けにRuby をやっています、その時に僕は「Ruby は(去年やったC言語 と比べて)サクッとモノを作れるよ〜」という話をしているけど、実際どうなの?というわけで、サクッとモノを作ってみたよー的な話をしたと思う。
スライドのDemoの部分では、こんな感じの事をやった。
VIDEO www.youtube.com
スライドにもある通り、このアプリは大きく2つのプログラムから構成されている。授業変更情報を取得してDBに保存するプログラム(mktakuya/jyugyou )と、DBからデータを引っ張ってきてiCal フィードを提供するWebApp(mktakuya/jyugyou-feed )だ。
mktakuya/jyugyouでは、以下のような技術を使っている。
また、mktakuya/jyugyou-feedでは、
という感じだ。
スライドに書くの忘れてたけど、授業変更情報取得プログラムもRaspberry Pi 3上のcronで3時間に1回定期実行するようにしている。また、jyugyou-feedもsystemdのserviceファイルを作って、systemctrlコマンドでstart/stopできるようにしてある。そのうちcronやめてsystemd.timerに移行したい。
あと、HTTPS 接続とコンテンツのキャッシュのためにCloudflareを使用している。これiCal フィードもキャッシュしてくれているんだろうか。その辺どうやって調べるんだろう。あとで調べる。
今度の展望としては、まずUIがクソなのでなんとかするのと、コードも書捨てのつもりでサクッと書いたものなのでなんとかするのと、本格的に動かしていくならもっと運用のことも考えていかなきゃいけないという事がある。まぁぼちぼちやる予定。
LTということで発表時間は一応5分で長話もできないし、低学年も増えてきてみんなやってることもバラ バラ なので深すぎる話をしても意味ないと思うしで、「こんなんあって、こんなん作れる。みんなもやってみて!」的なノリで話した。
Ruby なりPython なりのLLの使い方覚えて、適当なライブラリ探して適当にやりたい事見つけて適当にモノ作るという体験、早めにしておくとプログラミング楽しいってなりやすいと思う。授業でC言語 やってるけど思ってたのと違うつまらんって人は、もちろん授業でやるC言語 も大事だけど、こういう言語に手を出してみて、適当にTwitter API なり学校のWebサイトのデータ収集して加工したりなんなりして遊んでみてはどうでしょう。