えむけーろぐ

間違った事を書いていたらやさしく教えてください

情処LTで発表してきた #josholt

苫小牧高専の情報処理同好会では、不定期で「Josho.LT」という技術系のLTイベントをやっている。昨日23日(火)に、今年度初のLTがあり、せっかくなので発表してみることにした。最近専攻科とSwitchのゼルダとバイトの開発で忙しくて、全然趣味プログラミングをできていなかったので、これをきっかけにサクッとなんかアプリでも作ろうというモチベーションもあった。LT駆動開発である。

今回のLTのために作ったのは、「苫小牧高専授業変更情報 iCalendarフィード」である。学校のWebサイトの授業変更情報ページから情報を取得し、各クラスごとのカレンダーフィードを提供するという、シンプルなWeb Appだ。フィードでは、前の週の月曜日から、次の週の金曜日までの3週間分の授業変更情報が提供される。

TNCT授業変更情報 iCalendarフィード

発表資料はこんな感じであった。

speakerdeck.com

ソフトウェアテクノロジー部で2年生向けにRubyをやっています、その時に僕は「Rubyは(去年やったC言語と比べて)サクッとモノを作れるよ〜」という話をしているけど、実際どうなの?というわけで、サクッとモノを作ってみたよー的な話をしたと思う。

スライドのDemoの部分では、こんな感じの事をやった。

www.youtube.com

スライドにもある通り、このアプリは大きく2つのプログラムから構成されている。授業変更情報を取得してDBに保存するプログラム(mktakuya/jyugyou)と、DBからデータを引っ張ってきてiCalフィードを提供するWebApp(mktakuya/jyugyou-feed)だ。

mktakuya/jyugyouでは、以下のような技術を使っている。

  • プログラム言語はRuby
  • HTMLのパースにNokogiri
  • データベースとしてPostgreSQL
  • DBをRubyからいじるためのライブラリ Sequel

また、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サイトのデータ収集して加工したりなんなりして遊んでみてはどうでしょう。