Mobile Factory Tech Blog

技術好きな方へ!モバイルファクトリーのエンジニアたちが楽しい技術話をお届けします!

GW自由研究発表会を開催しました

こんにちは、ブロックチェーンチームの id:odan3240 です。

モバファクには「シェアナレ!」という社内勉強会制度があります。この制度の時間を使用してゴールデンウィーク(以下GW)中に個人が趣味開発で行ったことを共有する会を開催しました。

この会は以下の LINE Engineering Blog の記事に触発されたのがきっかけでした。

engineering.linecorp.com

この記事ではGW自由研究発表会の様子を紹介します。

発表概要

発表した人は6名でその概要は次の通りです。

  • Content-Security-Policy などのセキュリティに関するヘッダーを設定してくれる Perl モジュールの開発
  • TypeScript で Switch を式のように扱うにはどうすればいいかの研究
  • Go で編集距離を計算する CLI ツールの開発
  • C# AST から HLSL/ShaderLab AST に変換するトランスパイラの開発
  • 自作サイトを Nuxt.js => Next.js でリライト
  • 自作 MIDI コントローラー開発に向けた調査

発表内容

この中の発表のうちいくつか詳細を紹介します。

HTTP::SecureHeaders

「Content-Security-Policy などのセキュリティに関するヘッダーを設定してくれる Perl モジュールの開発」で発表されたライブラリです。

頑張ったポイントとして、 W3C の仕様を読んで適切でない値なら弾くようにしているそうです。

github.com

また、これを利用する Plack のミドルウェアの Plack::Middleware::SecureHeaders も開発したとのことでした。

switch-expression.ts

「TypeScript で Switch を式のように扱うにはどうすればいいかの研究」で発表されたコードです。

発表のモチベーションは、組み込みの switch-case だと各ケースでマッチした条件に当てはまる値を再代入しないといけないのが嫌で試しに書いてみた、とのことでした。具体的には次のコードの let result; を指します。

const condition: string = "hoge";
let result;
switch (condition) {
  case "hoge":
    result = "foo";
    break;
  case "fuga":
    result = "bar";
    break;
  default:
    break;
}

この課題を解決するために switchExpression という関数を作成しマッチした条件に当てはまる値を返すように実装した、とのことでした。 単純に値を返すだけでなく、型ガードを使って case に降ってくる値の型を制御する工夫がされています。

github.com

感想

以下、発表者以外の参加者も含む感想の紹介です

  • みんな思い思いのものを作っており、(おそらく)その人が一番得意で好きなものを知れてめちゃめちゃ良かったです
  • 実際触ってみて周囲の技術でこんなんあったよ!みたいなのが聞けてよかった
  • Web 以外の話も多くて、普段あまり触れないので新鮮で楽しかった(ハードウェアetc)
  • 作ってみた系の発表からは作ってみた系の発表からしか得られない養分がある
  • ハードウェア周りとか普段触れないけどこうやって聞くと楽しそうでちょっと興味出てきました
  • 各々、セキュリティの話からWeb系やハードウェアなど広い分野の話が聞けて、内容もそれぞれの着眼点も含めて面白かった。
  • 様々な分野・内容の興味深い話が聞けてよかったです。創作意欲をくすぐられて、自分も何かやりたくなりました。

終わりに

GW明けに「GW自由研究発表会」を開催しました。仕事でも馴染みのある Perl/TypeScript の話題から、Go や ShaderLab や MIDI に関する話題まで幅広い内容が発表されました。

参加者からは好評だったので「シルバーウィーク自由研究発表会」なども検討したいと考えています。