l0w.dev

2020 年 4 月の活動まとめ


イベント

04/04(金) 第29回 Office 365 勉強会

Office 365 に関する完全オンラインのイベントで 5 分間枠のライトニングトークでお話させていただきました。

MS Teams でプレゼンテーションするのは初めてでしたが、 前日リハーサルなどさせていただいたおかげで、トラブルなく乗り切ることができました。 PowerPoint for Mac の癖や対処法を確認できたのはよかったです。

内容は msgraph.go の紹介なのですが、 新しいサンプルとして o365events というプロジェクトを作成・公開しました。

これは先月会社で COVID-19 対策 (濃厚接触者追跡) のひとつとして試作してみたものです。 Office 365 カレンダーを検索して、感染した人と会議で同席した人をリストアップするツールです (今月から全員がリモートワーク体制になったため不要になってしまいましたが…)。 Linux/macOS/Windows 用の CLI ツールが簡単にビルド・配布できるという Go 言語の特長を生かした、実用サンプルプロジェクトが作れたと思います。

記事

Qiita: Exchange Online PowerShell リモート接続のポータブル対応と完全無人自動化

とある Azure テナントドメインのメールの送受信やメールボックスを Exchange Online にする過程で、 Windows PowerShell が必要だと思われていた設定の自動化を、 どうにか Linux の PowerShell Core からできないかと試行錯誤した結果をまとめた記事です。

この記事用のデモとして GitLab に exops1demo というプロジェクトを作りました。これにより GitLab CI などで動かす Linux コンテナ内で Exchange Online PowerShell のスクリプトの実行を完全無人自動化できることを示しました。

開発

wtz.go

Windows のみで使われる Tokyo Standard Time といった謎のタイムゾーン名を扱うための Go ライブラリです。

こんなものは Windows で Go を使ってなければいらないのではと思っていたのですが、 前述の o365events を開発していたときに dateTimeTimeZone といったリソースで頻繁に登場してきたので、やっぱり必要だなと思い作りました。

たとえば日本で wtz.LocationToName(time.Local) すれば "Tokyo Standard Time" が得られるし、 wtz.LoadLocation("Tokyo Standard Time") すれば time.LoadLocation("Asia/Tokyo") と同じ結果を得られる、といった使い方ができます。

さきほど作って公開したばかりのライブラリなため API はまだ固まっていません。 Windows の事情にあまり詳しくないので、どう作るのが正しいのかわからないところがいろいろあります。 ご意見いただけると助かります。

まとめ

今月はイベント登壇が 1 件できたのはよかったですが、 ソフトウェア開発や記事投稿のアウトプットがあいかわらず低調でした。 COVID-19 でリモート勤務となったのでヒマができるかと思ったらそんなことはなかったです。

今月上旬より Google Code Jam が開催されています。 このコンテストには例年 Vim と C++ で参戦していたのですが、 今年からは VS Code と Go 言語を使うことにしました。 開発環境の改善によりだいぶスピーディにコーディングと提出ができるようになったと実感しています。

とはいうものの、現時点で ROUND 1B まで終わって、まだ ROUND 1 を通過できていません。 最後のチャンス ROUND 1C が 5月2日 18:00 からあるので頑張ります。 すべて終了したら Go 言語でコンテスト参戦について記事にまとめたいと思います。