エムスリーテックブログ

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

ScalaのコンパイラにFizzBuzzを解いてもらう

この記事はエムスリー Advent Calendar 2018 かつ Scala Advent Calendar 2018の18日目の記事です。

エンジニアリンググループの冨岡です。

今回はどうしても自力では解けなかったFizzBuzz問題を、Scalaコンパイラの力を借りて解いた話をします。

FizzBuzzといえばコンピュータサイエンスの問題として広く親しまれている問題です。Wikipediaによると、コードが書けないプログラマ志願者を見分ける手法として提唱されているそうです。恐ろしいですね。

今回私は、Scalaコンパイラの力を借りてかろうじでFizzBuzzを解くことができたので、その方法を紹介します。ちょっとずるい気もしますが、依存ライブラリはなく、マクロも使っていないので許容範囲じゃないかと思います。

完成品はこちら

なお、今回Scalaのimplicitおよび型クラスを多用しています。馴染みのない方は@gakuzzzzさんによる「implicit入門」なども参考にしてみてください。

続きを読む

新ストレージ管理システム Stratis について調べてみた

この記事は エムスリー Advent Calendar 2018 17日目の記事です。

皆さんはじめまして!11月にエンジニアリンググループに入りました、SREの平岡です。今回はSRE・・・というよりインフラ技術に携わるエンジニアとして、OSプラットフォーム周辺での新しい技術について紹介します。

続きを読む

SLO設定/超過監視にまつわる活動の振り返り

※ この記事は SRE Advent Calendar 16日目の記事です。

皆さんこんにちは。エムスリーという会社でSREをしている高橋です。

早いもので、今年ももう終わりですね... ! そこで本記事ではエムスリーのSREチームがこの1年の間に実施してきたSLO設定及びSLO超過監視活動を反省とともにご紹介していきたいと思います!!

エムスリーにおけるSREチームの成り立ち

かつてはSREがインフラチーム配下のポジションとして存在しているような状況でしたが、肩書は違えど作業内容はほとんど同じだったので、2018年7月からインフラチームがまるっとSREチームへと改称されました。

www.m3tech.blog

続きを読む

EmacsでWebサービスを開発して8ヶ月が経ちました

この記事はエムスリー Advent Calendar 2018 の16日目の記事です。

こんにちは、エンジニアリンググループ新卒1年目の青木です。クラウド電子カルテ「M3 DigiKar」の開発に携わっています。We are hiring!!

今回は私のチームが開発しているWebサービス「M3 DigiKar」の Emacs での開発方法を紹介します。

f:id:blue0513:20181211002853p:plain:w200
皆さんお馴染みのエディタ Emacs

続きを読む

JJUG CCC 2018 Fall Kotlin Puzzler 解説

こんばんは。Androidエンジニアの星川 (id:oboenikui) です。

本日 (2018/12/15) のJJUG CCCにて、エムスリーはブースを出展しました。

そちらでKotlin Puzzlerを出題しましたので、問題の解説をいたします!

(掲示にはKotlin Puzzlersと書きましたが、1問でした)

続きを読む

Vue Reactivity: Present and Future

f:id:nickhall:20181213111533j:plain

Hello again, faithful readers. I'm Nick from the Engineering Group, here to bring you another special English edition of the M3 Tech Blog! This article is Day 15 of the 2018 M3 Advent Calendar.

Continuing with the theme of my last entry, I'd like to use this space to talk a little more about Vue and how it works under the hood. Vue's reactivity system is elegant and intuitive, but certain technical limitations have left a few gotchas that can cause some head scratching and lost debugging time to newcomers. As we head toward Vue 3.0, however, we find that we can soon take advantage of newer browser features that help to alleviate some of the headaches caused by the present system.

Vue today: Object.defineProperty()

f:id:nickhall:20181212234344p:plain

The above image comes directly from the Vue docs on reactivity (日本語 here), required reading for anyone getting started with Vue.

In Vue, data binding is truly reactive -- it doesn't use techniques like dirty flags, but rather directly tracks and updates dependencies at the moment the data is updated. Vue accomplishes this by using Object.defineProperty(), an ES2015 feature (see the docs) to define reactive getters and setters on component data.

続きを読む

クリスマスに『ビジュアル』プログラミングを始めよう

この記事は エムスリー Advent Calendar 2018 14日目の記事です。

こんにちは、エムスリーエンジニアリングGでエンジニアをしてます、新卒一年目の三角です。

クリスマスまで毎日更新され続けるであろう弊社アドベントカレンダーは、内部の私から見ても大変刺激的なネタ盛りだくさんでお送りしていますが、今回は会社の事業や技術の話とは少し離れてビジュアルプログラミングのお話です。

続きを読む