エムスリーテックブログ

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

Kotlin Multiplatform Mobileを使ってBrainf*ckエディタアプリを作る

f:id:kobasato34:20201125135747p:plain

エムスリー Advent Calendar 2020 まで残り6日となりました。Advent Calendar本編に先んじて新卒1〜2年目メンバーが執筆します。>

エムスリーエンジニアリンググループ マルチデバイスチーム 新卒1年目の小林(@kobasato34)です。 入社してからは、AndroidネイティブアプリやFlutter製のアプリを開発しています。

ネイティブアプリの方では一部の実装にKotlin Multiplatform Mobile(以後KMM)が導入されていたり*1、またFlutterを採用したプロジェクトも増えていたりと、今マルチプラットフォームなアプリ開発が私の周りで流行っています。

ですがKMM部分の実装を自分でしたことはまだ無かったので、Brainf*ckエディタアプリ作りを通してロジックの共通化を体験してみました。

この記事では、KMMを用いたAndroid/iOSアプリのロジックの共通化とSwiftからの共通ロジックの呼び出し方法について説明します。

続きを読む

IaCを意識したCLI開発のエッセンス

f:id:abctail30:20201121185846p:plain

エムスリーエンジニアリンググループ AI・機械学習チームの中村(@po3rin) です。 好きな言語はGo。仕事では主に検索周りを担当しています。

エムスリーの検索基盤ではElasticsearchを利用しています。社内で積極的に検索改善が行われており複数のIndexが管理がしづらいという問題がありました。 そこで定義ファイルからIndexの状態を冪等性を持って同期させるeskeeperというOSSを作りました。

この経験から「定義ファイルで〇〇を宣言的に管理する系のツール」を作る時のちょっとしたコツを紹介します。タイトルの通り今回はIaCツールを作るのではなくIaCのプラクティスを意識してCLIを作るお話になるのでご了承ください。

続きを読む

Elasticsearchコードリーディング 〜Luceneの検索のコードを読み解く〜

エムスリー Advent Calendar 2020 まで残り 7 日です! Advent Calendar本編に先んじて新卒1〜2年目メンバーが執筆します!

エムスリーのエンジニアリンググループ AI・機械学習チームの新卒1年目の丸尾です。エムスリーには一昨年の夏に、インターンをしていて、その際の体験も記事にしているので、こちらもご覧ください!

www.m3tech.blog

はじめに

私は主に Elasticsearch を用いた検索プロジェクトを担当しています。Elasticsearchへの理解がまだまだ不十分だと感じ、今期からはプロジェクトのメンバーを巻き込んで、Elasticsearch/Lucene のソースコードリーディングの勉強会を開いています。目標は各自がElasticsearchかLuceneにPull Requestを投げつけることです。

今回の記事では、これまでの勉強会で発表した内容をまとめて、次の2点について整理しました。

  • LuceneインデックスのAPIをデモコードを通して触ってみる
  • クエリのための Query クラスの内部を見て、LuceneインデックスのAPIの使われ方を見てみる
続きを読む

刺激語カードを使ってソフトウェアレビュー

f:id:y-nakatsuka:20201119105458j:plain

こんにちは。エンジニアリンググループ クオリティアシュアランス(QA)チームの中塚(@nk_testtech)です。

10/26(月)に開催されたJaSST Review'20にて『刺激語カードを用いたソフトウェアレビューの実践について ~アイデアを刺激し意識外から観点を得る』というお題で発表しました。 運営の皆様、発表者の皆様、ご清聴いただきました参加者の皆様ありがとうございました。 当日お話しきれなかった点やスライドに盛り込めなかった点なども交え、改めてご紹介します。

続きを読む

よりプロダクト志向な組織化を目的として10/1よりCDO(Chief Design Officer)を設置し、初代CDOとしてVPoE/PdMの山崎が就任しました!

皆さんこんにちは!エムスリーエンジニアリンググループでVPoE/PdMをやっている山崎です!

早速ですが、エムスリーでは、よりプロダクト志向な組織化を目的として10/1よりCDO(Chief Design Officer、最高デザイン責任者)を設置し、初代CDOとしてVPoE/PdMの山崎が就任しました!🎉

今日はCDO設置の背景や狙いについて、テックブログの場をお借りしてご説明いたします。

プロフィール

f:id:yamazaki-m3:20201021200009j:plain

大学院博士中退後、ベンチャー企業、フリーランスを経て、2006年、臨床研究を手がけるメビックスに入社。2009年、メビックスのエムスリーグループ入り以降、エムスリーグループ内で主にプロダクトマネジメントを担当する。2012年にグループ会社であるシィ・エム・エス取締役に就任。2015年にデジカルを共同創業、2017年にVPoE(Vice President of Engineering)となり、2018年からエムスリーの執行役員。現在はプロダクトマネージャーとして自ら新規プロダクトに関わりつつ、執行役員 VPoEとして、エムスリーグループを横断してプロダクト志向の開発プロセスおよび組織化を推進。2020年4月からはエンジニアリンググループに加えて、ネイティブアプリ企画部門のマルチデバイスプラットフォームグループと全プロダクトのデザインを推進するデザイングループも統括。2020年10月よりCDO(Chief Design Officer、最高デザイン責任者)に就任。

続きを読む

【Lucene コードリーディングから学ぶ Elasticsearch】 ハイライト&フラグメンターの仕組み

f:id:abctail30:20201010170114p:plain

エムスリーエンジニアリンググループ AI・機械学習チームの中村(@po3rin) です。 好きな言語はGo。仕事では主に検索周りを担当しています。

エムスリーでは検索エンジンとしてElasticsearchを利用しているのですが、Highlightingのフラグメント機能でとある問題が発生しました。その問題を解決する中でElasticsearch Highlighting の内部的な仕組みを理解することの重要性を改めて感じました。

今回はエムスリーで発生した問題の共有からはじめ、どのように解決したのかはもちろん、Elasticsearch Highlighting の内部的な仕組みも一部紹介します。ちなみに今回見ていくLucene のバージョンは 8.6.2 です。

続きを読む

エムスリーのQAメンバーが JaSST Review'20 に登壇します!!

こんにちは。エンジニアリンググループ クオリティアシュアランス(QA)チームリーダーの窪田です。2020年度も半分が経過し、徐々に秋らしい気候になってきましたね。少し肌寒くなってくると我ら品質保証をやっている人は思い出すことがありますね。そうです。JaSST Review の季節です! 今年で第3回を迎える JaSST Review になんと、エムスリーQA の中塚が登壇することになりました!今回は JaSST の紹介と、中塚の登壇内容を少しだけ紹介いたします。

f:id:j-kubota:20201008173949j:plain
これは去年の写真ですが、秋といったら紅葉、JaSST Review ですね。

続きを読む