エムスリーテックブログ

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

サーバサイドアプリケーションにおけるリリース時の不確実性を減らす

エムスリーエンジニアリンググループの松原@ma2geです。この記事はエムスリーAdvent Calendarの23日目の記事です。

実は10月よりチームリーダーからエンジニアに戻り、開発メインの仕事を再びしています。 エンジニアリングマネージャーの振り子という話が一時期話題となっていたのですが、まさにそれをしているところです。*1 *2

現況

さてソフトウェアエンジニアとして今何をしているかというと、 クラウド電子カルテ「エムスリーデジカル」の開発チームに入り運用から開発まで一通り対応をしています。

デジカルチームの主な技術スタックは Rails, Angular, React, Scala などに加えて、インフラ周りは AWS の各種サービスを利用しています。 基本的にエンジニアは得意分野を生かしつつもなんでもやるスタンスで今の所仕事をしており、 フロントからインフラまで一通り対応しています。楽しい。

私はというとサーバサイド(特に Rails)に強みを持ちつつも、フロントからインフラまで見つつ仕事をしています。 フロントは以前主に触っていたのが Backbone.js から一気にジャンプして React ということで、いくつかの時代を乗り越えて一気に洗練された世界観に触れられたり、 Auto Scaling が有効に使われているインフラ環境を生で体験できたりと日々新しいことを学べています。楽しい。

さてデジカルはまだまだこれから事業を伸ばしていこうというフェーズで比較的プロダクトとしては若く技術も比較的新し目のものが多いです。 しかしそれでも初期のプロダクトからは数年経過しており徐々にレガシーとの戦いも目立つようになってきています。 すなわちやるべきことが溜まっている状態で改善できることしかありません。楽しい。

今回はこの中でデプロイの仕組みを改善した話をします。

f:id:ma2gedev:20191220154313j:plain
本文とは関係ありませんがピアノの内部構造

続きを読む

業務を効率化するためにツールを自作する ~ Emacs と時々 Electron ~

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

こんにちは。エムスリーエンジニアリンググループ、新卒2年目の青木です。 現在はクラウド電子カルテ「エムスリーデジカル 」でソフトウェアエンジニア兼チームSREをやったり、別チームで Windows アプリを作ったり CI 回したりしてます。

今回の記事では、業務の効率をあげるために今年作った小さなツールたちを紹介します(主にEmacsなのはご容赦を)。

  • 複雑な CSV(見出し無し)の扱いを効率化
    • > jp-medical-recept-reader.el
  • 単調なコピー作業をワンアクションで効率化
    • > cool-copy.el
  • コードリーディングを Virtual なコメントで効率化
    • > phantom-inline-comment.el
  • カーソル移動を履歴管理で効率化
    • > point-history.el
  • Slack での並列コミュニケーションを効率化
    • > SlackDeck-proto
  • GitLab での LGTM なコミュニケーションを効率化
    • > LGTM-Generator-from-Dropbox
  • おまけ
    • > mini-deck
  • We are hiring!!
続きを読む

機械学習パイプラインライブラリluigiのshell補完ツールを作った

こんにちは。Python謹製のshellを使って早3年、エムスリーエンジニアリングGの河合 (@vaaaaanquish) です。 この記事はエムスリー Advent Calendar 2019 の21日目の記事です。

エムスリー AIチームでは、機械学習パイプラインとして「luigi」及び、そのwrapperである「gokart」を利用した開発、運用を行なっています。 本記事は、エムスリーとluigiの繋がりと、私が作成したluigiのshell補完をサポートするmodule「luigi-completion」の概要、その使い方について示すものです。

f:id:vaaaaaanquish:20191216102634p:plain
luigi.readthedocs.ioより luigiロゴ

続きを読む

Scalaで参照透過に作用を扱う

エムスリーエンジニアリンググループの冨岡です。この記事はエムスリーAdvent Calendar及びScala Advent Calendarの20日目の記事です。

  • はじめに
  • Future の特徴
    • Future の長所
      • 標準ライブラリで提供されている
      • 抽象化の戦略がわかりやすい
  • Future の短所
    • 処理を即時実行する
    • 結果が否応なしにメモ化される
    • ExecutionContextが必要なシーンが多い
  • 参照透過な作用
    • (コラム)プログラムをプログラムすることについて
  • 3rd party の Pure Effect ライブラリの紹介
    • Cats Effect: IO
    • Monix: Task
    • ZIO
  • まとめ
    • 参照透過性について補足
  • We're hiring!

はじめに

Scalaでは、作用、特に非同期での作用を扱うためのデータ型として scala.concurrent.Future が提供されています。これは手軽につかえて便利である一方、使いづらい点もいくつかあります。この記事ではそれらFutureの使いづらい点に触れ、それに対する関数型プログラミングでのアプローチと、それを実現する3rd partyライブラリをいくつか紹介します。

続きを読む

3Dアバター化しながらプレゼンするWebアプリを作った話

f:id:owl-m3:20191218160740p:plain (デモ用の3Dモデルは「ニコニ立体ちゃん」をお借りしています)

  • 概説
  • 技術スタック
    • three-js/three-vrm
    • clmtrackr-js
    • 実装
  • 工夫をつける
    • まばたき
    • リップシンク
    • パラメータのバリデート
  • まとめ
    • 余談
  • We are hiring!

概説

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

好きなマスコットはGopherくん、好きな言語はRuby! 最近の業務は主にJavaScriptとKotlin! エムスリーエンジニアリンググループのowlです。

さて、弊社内で毎週行われる『テックトーク』ではエンジニアが好きな技術の話を発表し合っています。最近になってこの発表を画面/音声キャプチャして保存し、後からいつでも発表内容を視聴できるシステムが構築されました。🎉

www.m3tech.blog

ただ、このシステムでは当然ながら発表者の姿が録画内容には含まれません。もし、プレゼン中の画面にアバター化した発表者を常時表示すれば発表の雰囲気をより良く伝えることが出来るはずです。今回はこの課題を解決するアバター表示プレゼンWebアプリを開発しました🎉。本当は自分がどうしてもGopherくん(のアバター)になりたかったので作っただけですが。

最近ではこのようにアバターを表示させながらプレゼンする人々をしばしば見ることが出来ます。例えばProduct Manger Conferenceでピクシブ社の方がアバター登壇しているのが有名ですね。いつか見慣れた光景になる可能性もまったくないとは言えません。そうゼロではない。

続きを読む

登壇経験無しの私がなぜ2週間連続で登壇できたのか

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

こんにちは、エンジニアリンググループ マルチデバイスチームの大和です。

先月の半ばから末にかけて、JJUG CCC 2019 FallとDevelopers Boost 2019の2つのカンファレンスで登壇しました。 これまでカンファレンス規模の登壇経験がなかった私が、11/23 (土) と 11/30 (土) の2週間連続 (のハードスケジュール) で登壇したことについてお話します。

f:id:daiwa_home:20191217191545j:plain
Developers Boost 2019会場そばの夜景 (池袋サンシャインシティの近く)

続きを読む

新規アプリでGraphQLを全面採用した話

この記事は エムスリー Advent Calendar 2019 の17日目の記事です。
こんにちは、エムスリーエンジニアリンググループ マルチデバイスチームの金丸 (@maru333) です。
アナと雪の女王2 は最高でしたね。ただ、劇中の波のシーンが実写か3DCGかを考えだすと気になって夜も眠れません。

さて今日のAdvent Calender では、新アプリを開発する中でGraphQLを試行錯誤しながら色々試した話をしたいと思います。

f:id:kanemaru-m3:20191216220546j:plain
栃木の大谷資料館 巨大地下空間に行った時の写真。ここはPV撮影や映画撮影など様々な事に使われる空間で、今ドラクエをやっているのでドラクエっぽいなと思って上げました (本文とは一切関係ありません)

続きを読む