Google Calendar のデータをXMLに加工して monthly.js に 流し込む

所属している草野球チームのHP制作を担当していて、「スケジュールを載せたい」という要望が来ました。数週間ぐらい前に「そういえば何かカレンダーをキレイに表示させるJSライブラリがあったよなぁ」と「monthly.js」思い出して、Googleカレンダーとこれを使って表示させることにしました。

練習場所まで全世界に公開するのも気持ちが悪いので、Googleのカレンダーは「非公開」の設定のままで、どうにか情報を取得するすべはないものかと調べると、OAuth2なGoogle Calendar API というAPIを使えばいいと載っていました。( OAuth2じゃないAPIもあるっぽいですが、実装が複雑になるのでOAuth2の方式がいいよみたいな情報が公式ドキュメントに書かれていた。うろ覚え。)

しかし、肝心のPerlの解説がない。(仕事ではRubyがメインですが、草野球のホームページぐらいの規模ならPerlで書きたい。)ライブラリ自体は「Google::API::Client」という名前でCPANに登録されているのでこれを使うことにしました。

client_secret.json みたいなファイルをGoogle APIのページから取得すると(詳細は「celient_secret.json google」でググッて)あとは、以下のコードで、初回時のみ手動で認証してリフレッシュトークンを取得すると、それ以降はよしなにしてくれます。(ずっとアクセスを待ち受ける必要があるWebアプリにも組み込めます。)

以下のようにXMLが出力されます。

Googleカレンダーが終了時刻それ自体はイベントの期間に含めない(不等号に「=(イコール)」が付くかどうかの違いのようなもの) のに対して、monthly.js は終了時刻それ自体をイベントの期間に含めるという違いがあるため、endtime(enddateじゃなくて)がない場合は、enddate を一日早めるという面倒な処理が追加で必要になります。(上記のコードではそれが追加されていないので注意。)

上記の面倒な処理を終えて「monthly.js」のマニュアルを読んでWebアプリに組み込むと、以下のように美しく表示できるようになります。ちなみに、高速で「月」を切り替えるとイベントが移動したり増殖したりする「monthly.js」のバグを作り終えてから発見しました。(ぎりぎりクリティカルなバグでもないかというあんばいですが…)

スクリーンショット 2016-02-18 0.34.09

スクリーンショット 2016-02-18 0.34.24

お疲れ様です。( ´Д`)=3

久々の勉強会

会社から30分ほどで行ける距離で「人工無脳と人工知能」の勉強会があったので参加しました。

「人工無脳バトル」に参加した学生の発表の後、徳永拓之氏の深層学習のお話という流れで終了。

前者では、学生が面白い人工無脳を創るには2日という期間は短すぎるように感じました。

後者では、

  • ニューラルネットワーク ほぼイコール 関数
  • レイヤーという言葉がどこを指すかに人によって異なることがあるので注意
  • Recurrent Neural Network(RNN)を使うと時系列なデータが扱える
  • Long short-term memory は RNN の一種
  • 「A Neural Conversational Model」はLSTMで文生成できたよという論文
  • Attention という技術(入力側のデータ(?)の一部をヒントとして見る)を 使うと精度が上がるが、どこを見るべきか決めるのが難しい
  • batch normalizationを使うとdrop outが不要になって高速化できる(何を言っているのか今の自分にはわからない)
  • Chainer がキレイでいいぞ!
  • 深層学習でフォローすべき人を1人あげるなら @hillbig

というような知識を得ました。最後に「手を動かそう」(本を読んで分かった気にならず)とおっしゃっていて、大学生の頃に比べるとネットの技術記事を読んでもコーディングしていない自分に気づいて猛省しました。

2016年

両親自己破産&全国模試の偏差値30台&精神ボロボロの半壊人間状態から、頭を鍛えて、認知行動療法でいくらか精神を回復させ、10月に正社員になってここまで生きることができました。

大学院入学から2015年の9月まで学内のカウンセラーの先生に助けられすぎた。あいにく自分はカウンセラーの先生のように言葉をもって他人を助けるということが中々できないので、心理学もよく学びつつ、技術で人生に悩める誰かを助けたい。

2015年は、検定試験は、「情報セキュリティスペシャリスト」にようやく合格して、「心理学検定」は1科目受験1科目合格で、「日本語検定」は惨敗という結果でした。

IPA未踏に協力してもらってコーパスを作ろうと思っていた研究は、IPA未踏の最終審査に落ちつつも、独りで粘っていましたが、うまくいかず、補助アプリケーションである「すごい名前生成器」のほうがバズるという予想外の現象が起きました。結局、小説の話者を推定する(小説ではカギカッコの話者が明示されていないため)研究への方針転換を余儀なくされましたが、時間とやる気が足りなくて、サーベイ論文のような格好となって修了してしまいました。

9月末の修了後は、息をつく暇もなく東京へ行って正社員として仕事。これまで独学してきたことがフルに活きて感動を覚えました。

健全な精神を保つことも重要だと考えて、ペットを買って、草野球チームにも入れてもらいました。この草野球チームのメンバーがいい人ばかりで、幸せは待っていても来ないことを痛感しました。

2016年は「青空文庫 朗読部」の創部を目指して頑張ります。

入社してもうすぐ2ヶ月

日本のあまりリア充じゃない若い方々の人生を耐えやすいものにしたいと思ってP社に就職して、もうすぐ2ヶ月が経とうかという時期になりました。

当初は2016年4月入社予定でしたが、半年休学していた関係で生まれた大学院修了後の半年の空白期間を実家で働かずに勉強すると言っても受け入れてくれなかったため、就職先の会社と相談して10月入社にしてもらった次第であります。賃貸契約・片付け・引越し・引越してからの片付け・社員旅行・自炊力アップ・足りない家具の購入・文鳥(ペット)購入・草野球チームへの加入などで、まったく日記を書く余裕がありませんでした。

外食も面倒な引きこもりなので、自炊力を多少向上させて、

  • から揚げ
  • 豚肉のしょうが焼き
  • とんカツ
  • ぶりの照り焼き
  • 親子丼
  • 焼きそば
  • オムライス
  • ほうれん草のおひたし
  • 小松菜&厚揚げ
  • えのき&ベーコン

あたりを新たに作れるようになりました。(が、すでにマンネリ気味)

資格・検定は、「ネットワークスペシャリスト試験」は受けられませんでしたが、「日本語検定」は勉強時間ほぼゼロで受けました。知らないけど美しい日本語の表現がまだまだあるようなので次回も受けたい。「ビジネス実務法務検定」や「簿記検定」は仕事で使うケースがまったくないため、覚えても忘れるので受けないことにしました。

仕事は、悪くはないけど、チームでやると責任は分散されるし、利用者の声も直接自分に届くこともないという点は、満たされないように感じられます。先人の知恵を借りるべく文献を引けるだけ引いて提案書などを作る自分としては、皆様、フィーリングで物事を決めすぎではないかと思ってしまう部分が無きにしもあらずといった具合です。