エムスリーテックブログ

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

エムスリーが技術書典14で新刊を出すので紹介します!

エムスリーエンジニアリンググループ AI・機械学習チームでソフトウェアエンジニアをしている中村(@po3rin) です。

技術書典14が2023/05/21に開催されます。 techbookfest.org

今回エムスリーでは有志で新刊を携えて参戦します。今回も多様な分野・技術について弊社スタッフが執筆いたしました。エムスリーのギークな面がふんだんに詰まった一冊となります。

エムスリーテックブック4では表紙も一新しました。

オンラインでの購入は5/20以降、こちらからも可能です! techbookfest.org

この記事では皆さんに新刊を手に取ってもらえるように、各章がどんな内容になっているのかを紹介します。

エムスリーテックブックについて

技術書典は技術書オンリーの同人誌イベントで、今回が14回目の開催になります。 今回は有志で「エムスリーエンジニアリンググループ執筆部」というサークル名で参戦します。

前回のエムスリーテックブック3の113ページから、今回は144ページに増えています! しかも、前回は電子版のみで1000円だったのに対して、今回は電子版が800円とお得になっています。 また、物理本+電子版も1000円で手に入れることが出来ます。

techbookfest.org

以下が今回作成した技術書の目次になります!

目次1
目次2

第1章 「漫画でわかるエムスリー AI・機械学習チーム」を Stable Diffusion で作る

中村(@po3rin) が担当する章です。

Stable Diffusionなど、画像生成AIが進歩したことにより、絵心のない私でも漫画が作れる世界になりました。今回は新メンバーやインターン生を対象読者としたオンボーディングドキュメントを「漫画でわかるエムスリーAI・機械学習チーム」と題して、ChatGPT + Stable Diffusionで漫画化した話を書きました。

キーワード: 画像生成AI, Stable Diffusion, 漫画

ターゲット:
• 漫画が好きで、自分でも漫画を作ってみたいが、画力がゼロな方
• 画像生成AIに興味のある方

第2章 エムスリーでのMLOps

AI・機械学習チームのデータエンジニアの北川(@kitagry) が担当の章です。

現在AI・機械学習チームはメンバーが10人ほどに対して、30近くのプロダクトを開発・運用しています。 このような少人数で多くのプロダクトを運用するためにはMLOpsが欠かせません。 この章では、新卒で入った筆者の視点から少人数で開発・運用まで行うために重要だと思った取り組みについて書きました。

もし、MLOpsに興味がある方がいれば手にとってもらえると嬉しいです!

キーワード: MLOps

ターゲット:
• MLOpsを普段取り組んでいる方
• MLOpsに興味のある方

第3章 ChatGPTに任意のドメインのアキネイターを作らせる ~AIが作るAI~

AI・機械学習チームリーダー、MLエンジニアの大垣(@Hi_king)です。

以下のようなアキネイターを、ChatGPTを利用して自動で作成するネタです!ChatGPT単体だと、ハルシネーションなどの問題があり扱いにくさがあるため、一度ChatGPTにデータを作らせて、それを元に別のシンプルなAIをトレーニングすることで実用化しやすくなるのでは、という挑戦です。

並列処理をサポートしていますか?
type 0 or 1 ... 0: ['いいえ', '場合による'], 1: ['はい']1

あなたの回答: 1 ['はい']

候補: ['SFL', 'X10', 'Eiffel', 'Julia', 'Object Pascal'] など 107候補
...

候補: ['Python' 'REBOL']
数値計算に適していますか?
type 0 or 1 ... 0: ['いいえ', '場合による'], 1: ['はい']1

あなたの回答: 1 ['はい']

あなたが思い浮かべているのは Python です

ざっくりとは以下のようなプロセスで、アキネイターの質問を作らせる部分と、各データになりきって質問に回答させる部分をChatGPTにこなさせることで、最後逆算してアキネイター(決定木)をscikit-learnでつくるよ、という流れです。

詳細は本誌をお楽しみに!

ターゲット:
• ChatGPTを実サービス応用したい方

第4章 ボードゲーム「コードネーム」のヒント出題 AI を作る

池嶋(@mski_iksm) 担当の章です。

「コードネーム」というボードゲームをご存知でしょうか。 2つのチームに分かれて、フィールド上に置かれた25枚の単語カードの中から自分チームの単語カードを探し当てるゲームです。各チーム、答えを知っているボス1人とその他のプレイヤーに別れ、ボスが出したヒント単語を元に他のプレイヤーがどの単語カードが自分チームのものかを予想します。先に自分チームのカードをすべて見つけ出せたチームの勝利です*1

今回、ボス役としてこのゲームでヒントを出すAIを作ってみました。

例題:
• 自分チームの単語: ライター, トキ, キウイ, ソウル, ハチミツ, パイプ, ビン, スタッフ, 水
• それ以外の単語: 穴, ペンギン, ウマ, ネズミ, リンク, タブレット, コード, ゴースト, チェック, ラップ, ルーレット, 空気, トラック, 月, 王冠, ピース

みなさんも上記の例題に対して、「自分チームの単語」のいくつかを連想できるヒント単語を考えてみてください。

出来上がったAIの出したヒントは「ヒント: 飲み物、枚数: 4枚」でした。 このヒントでは「水」「ビン」は容易に連想ができ、さらにはちみつレモンから「ハチミツ」、キウイジュースから「キウイ」も連想が可能そうな良いヒントと言えそうです。

4章では、このAIをどのように作成したか、また人間の出したヒントと比べてどうだったのかを紹介しています。

キーワード: ボードゲーム, NLP, ChatGPT, Word2Vec, WordNet

ターゲット:
• ボードゲームに興味のある方
• 類義語・関連語探索に興味のある方

第5章 トランザクション分離レベル整理チャレンジ

横本(@yokomotod) 担当の章です。

みなさん BEGIN してますか。トランザクションにはお世話になっていますよね。では SET TRANSACTION ISOLATION LEVEL はどうでしょうか。

私は普段おもにMySQL(以下InnoDB前提でMySQLと呼びます)エンジンを利用していて、デフォルトのまま REPEATABLE READ の世界に生きています。「トランザクション分離レベル」でググると「REPEATABLE READはファントムリードという不整合を防がない。ただしMySQLでは発生しない」などの情報がヒットします。MySQLすごいと思うかもしれませんが、PostgreSQL、Oracleの REPEATABLE READ もファントムリードを防ぎます。Microsoft SQL Serverの REPEATABLE READ ではファントムが発生しますが、代わりに SNAPSHOT という分離レベルが存在していて・・・?

データベースごとにバラバラに思える挙動について、「MySQL」「PostgreSQL」「Microsoft SQL Server」「Oracle DB」「IBM Db2」の5種類のデータベースで発生する不整合やロックの挙動を、実際に実験して整理を試みてみました。

キーワード: データベース, トランザクション, 分離レベル, ロック, スナップショット分離

ターゲット:
• データベースでトランザクションを含むアプリケーションを開発したことのある方
• 普段使っているデータベースの挙動がほかと比べてどう違っているか知っておきたい方

第6章 Playフレームワークのマイグレーション

安江が担当する章です。

エムスリーではPlayフレームワークで作られたサービスが長年稼働しています。Playフレームワークはバージョンアップと共に大きく変わっていきました。そのため、古いバージョンのPlayフレームワークで作られたサービスを新しいバージョンのPlayフレームワークに移行する必要があります。この記事では、著者がPlayフレームワークのバージョンアップに伴う移行作業で得た知見を共有します。

キーワード: Play, Scala

ターゲット:
• Playフレームワークで作られたサービスを保守している方

まとめ

新刊も含め、今回はオンラインで既刊3冊も販売しております。

techbookfest.org

We're hiring !!!

エムスリーでは今回紹介したようなギークな内容について日々語りながら、医療をよくするためのサービスを開発しています。 「ちょっと話を聞いてみたいかも」という人はこちらから!

jobs.m3.com