エムスリーテックブログ

エムスリー(m3)のエンジニア・開発メンバーによる技術ブログです

プログラムから圏のことばまで,或はモナドについて(後半)

こんにちは,エムスリーエンジニアリングGの榎田(@niflh)です.最近は SEKIRO をトロコンしたり,確率論の勉強をしたりの日々です.

この記事は前半に引き続く,関数型言語で登場するモナドに関する記事の後半です.前半は数学成分控えめにモナドの解説を試みました.

後半では数学のことばをあまり控えずに著します.モナドを勉強するとあらわれる圏論のことば(のうち,「関手(かんしゅ)」と「自然変換」)について,プログラムに即した理解を試みるのが本稿後半の目的です.或いは,「関数型を勉強するとたまに圏論のことばが出てくるけれども,あのことばたちはプログラムの何に対応するの?」という疑問に(私に可能な範囲で)答える,と言ってもいいでしょう.

本稿は,「圏論のことばに置き換えて新しい知見を得る」ところまでは届きません.それでも,「関数型を勉強していたら突然圏論が出てきて困った」という状況に対するひとつの処方箋として,本稿の役立つところがあるのではないかと信じて書きます.

続きを読む

プログラムから圏のことばまで,或はモナドについて(前半)

こんにちは,エムスリーエンジニアリングGの榎田(@niflh)です.趣味は数学とテレビゲームです.

以前の記事 で Scala を通して関数型を勉強した話をしましたが,最近社内で Scala with Catsを読む勉強会をしています.この本は,Cats という「Scala で関数型プログラミングをサポートするライブラリ」を勉強しつつ,関数型特有の概念に慣れ親しむことを目的としたものです.

この勉強会も,参加者の皆さんと二人三脚で進み,モナドを扱う章に入りました.そんな中,参加者の一人から,次のような意見が出ました.

モナドをやるとよく圏論が出てくるので,かじってみると面白い一方,よくわからないことも多い.プログラミング上のどの操作が圏論とかのどの操作に紐付いてて,何が嬉しいのか,あたりがまとまってると嬉しい.

尤もだと思ったので,色々調べて考えた結果が本稿です.一記事には長すぎるようにも思うので,数学(特に圏論)控えめの前半と,数学(特に圏論)多めの後半*1に分けます.前半でモナドの説明として一通り完結しているつもりです.後半は前半を読んでいることを前提とします.

*1:近日公開予定です.

続きを読む

アンケート回答画面SPAにJWTを組み込んだ例の紹介

エムスリー エンジニアリングGの岩本です。

現在私の所属しているチームでは、以前作成したアンケートを作るためのシステムのサーバサイドリプレースを行っています。 4ヶ月ほど前にテックブログで書いたもののセッション管理部分について今回は記載します。 www.m3tech.blog

続きを読む

Terraformなにもわからないけどディレクトリ構成の実例を晒して人類に貢献したい

こんにちは、エムスリーエンジニアリンググループの福林 (@fukubaya) です。

f:id:fukubaya:20200708215919j:plain
さいたまスーパーアリーナは、埼玉県さいたま市中央区にある多目的アリーナ。本文には特に関係ありません。

最近、Terraformを書くことが多く、知見が貯まりつつあった時にちょうどディレクトリ構成に関する記事を読んでタイミングがよかったので、 今回はTerraformのディレクトリ構造の実例を晒したいと思います。

続きを読む

世に蔓延るAndroidのWebViewでintentスキームを扱う実装の脆弱性

エムスリーエンジニアリンググループ、マルチデバイスチームAndroidエンジニアの星川 (@oboenikui) です。セキュリティチームも兼任しています。

AndroidアプリでWebViewを扱うときに、http、https以外の様々なスキームのURIに対応する場合があります。中でもintentスキームのURIはWebサイトにとっては便利なURIであるため、実装を求められるケースも多いことと思います。しかし、このintentスキームのURIを扱う場合には注意が必要であるにも関わらず、世の中のサンプルコードではそのことに触れられていないケースが散見されます。

本記事ではサンプルコードを交えて、どのような危険性があり、どう実装すべきかを解説していきます。

f:id:oboenikui:20200721225125j:plain
intentスキームのイメージ

続きを読む

COVID-19への取り組みに関するリモート勉強会を開催しました & リモート勉強会の気づきまとめ

こんにちは、Androidエンジニアの星川 (@oboenikui) です。

2020年7月9日に弊社では初となるオンラインでのエンジニア向け勉強会「コロナ時代の医療業界を支援するエムスリーのプロダクト開発の舞台裏」を開催いたしました。ご視聴いただいた皆様ありがとうございました!

本記事では、オンライン勉強会の内容振り返りとオンライン勉強会ならではの気づきについて書いていきます。

f:id:oboenikui:20200715001909p:plain

続きを読む

効果検証初心者の落とし穴 〜メルマガ配信時刻最適化システムを例に〜

エンジニアリンググループ AIチーム 新卒2年目の金山 (@tkanayama_)です。

今回は、私が新卒1年目に開発を担当していたメルマガ配信時刻最適化システムの経験をベースにしながら、ABテストで得られたデータを用いて効果検証する際に注意すべき点を架空のストーリー形式でお届けします(ストーリー中に出てくる数字を含め、実際のものとは異なります)。

f:id:tepppei:20200713111515j:plain:w400
カンガルーです。

続きを読む