SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Akkaで学ぶアクターモデル入門

アクターモデルは非同期処理におけるミュータブルオブジェクトの問題点をどう解決するのか

Akkaで学ぶアクターモデル入門 第2回


  • X ポスト
  • このエントリーをはてなブックマークに追加

 マーベリック株式会社のリチャード 伊真岡です。この連載では非同期処理に役立つアクターモデルを学ぶため、JavaとScalaから使えるOSSであり、アクターモデルの実装を提供するAkkaを紹介します。前回の記事では非同期処理によってもたらされるメリット、つまり処理全体の効率化を紹介しました。そしてアクターモデルによってミュータブルオブジェクトを含む非同期処理を安全に実装しやすくなることを述べました。第2回ではミュータブルオブジェクトの管理はなぜ難しいのか、そしてAkkaのアクターモデルの仕組みがなぜミュータブルオブジェクト管理を楽にしてくれるのかを解説します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

Akkaアクターモデルの概要

 まずは簡単にAkkaのアクターモデルについて紹介しましょう。アクターモデルを利用するアプリケーションは、プログラムの小さな処理をアクターという単位に分け、多数のアクターを配置することでアプリケーション全体を構成します。アクター同士はお互いのメソッドを直接呼び出すことはなく、間接的なオブジェクト、Akkaの場合はメッセージキューを介してメッセージを送り合うことで協調して動作します。

 Akkaのアクターモデルは非常に効率がよいことも知られていて、Akkaの公式ページに掲載されたベンチマークによると、1台のマシン上で毎秒5000万メッセージを送受信し、わずか1GBのヒープメモリの利用で250万ものアクターの生成を実現しています。

 アクターモデルのより詳しい紹介は記事の後半に譲って、ここからはマルチスレッド環境でのミュータブルオブジェクト管理の難しさについて説明します。

マルチスレッドとCPU

 非同期処理で重要になるマルチスレッドについておさらいします。ここで言うスレッドとはOSの処理単位であるOSスレッドのことを指し、マルチスレッドとは複数のスレッドを使うということです。OSはCPU上で実行するスレッドを適宜入れ替えます。この時CPU上で同時に実行可能なスレッドの上限はCPUコアの数と同じです。

 前回の記事でも紹介したように、非同期処理を使えば処理全体を効率よく実行でき、例えば以下のようにバックグラウンドスレッドと使い分けることで、画面描画スレッドのフリーズを防げます。

次のページ
ミュータブルオブジェクト管理の難しさ

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Akkaで学ぶアクターモデル入門連載記事一覧

もっと読む

この記事の著者

リチャード 伊真岡(リチャード イマオカ)

 大学卒業後、9年間証券会社にてプログラマ兼技術サポートとして勤務。その後いくつかの企業でバックエンド・エンジニアや技術広報などを務める。  プライベートでは過去にScala/JavaのOSSであるakkaへ貢献。 Twitter:@RichardImaokaJP

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/11888 2020/04/28 18:59

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング