SlideShare a Scribd company logo
IEXを学ぶ
自己紹介
名前:橘田 隼一
TwitterID:hayabusa333
興味:カーネル、GC、Erlang、Elixir
お仕事:派遣ウェッブプログラマ
所属:Joel教、翔鶴瑞鶴仲良し姉妹同盟
自己紹介(宣伝)
ElixirとPhoenixの薄い本を出しました
(ページ数:240)
自己紹介(宣伝)
・80部完売(Elixir/Phoenixの本に需要はあった!)
・電子書籍版をBOOTHで販売中
https://hayabusa333.booth.pm/items/186705
本日のお話
ohrdevさん:
Elixirアプリの運用周りの話
ma2geさん:
PowerAssertについて
 →さて、何を話すか?
Elixirの内部の話じゃね?
IExのコードを読んでいき
Elixirの内部をみていきます
本日の目標
• なんとなくElixirのコード読めた感
を出す
• Elixirのコードはむずかしくない
• Erlangまでは下りていかない
• Elixirの内部はErlangのコード
それでは
見ていきましょう!
まずは起動したら、
どこが動くのかをmix.exsにて
確認する
lib/iex/mix.exs
def application do
[registered: [IEx.Supervisor, IEx.Config],
mod: {IEx.App, []},
env: [
autocomplete_server: IEx.Server,
colors: [],
inspect: [],
history_size: 20,
default_prompt: "%prefix(%counter)>",
alive_prompt: "%prefix(%node)%counter>"]]
end
lib/iex/mix.exs
def application do
[registered: [IEx.Supervisor, IEx.Config],
mod: {IEx.App, []},
∼略∼
lib/iex/mix.exs
∼略∼
env: [
autocomplete_server: IEx.Server,
colors: [],
inspect: [],
history_size: 20,
default_prompt: "%prefix(%counter)>",
alive_prompt: "%prefix(%node)%counter>"]]
end
mod: {IEx.App, []} と記載されている箇所から
IEx.Appをまず最初に呼び出すことが
わかります。
mod: で最初に動く関数は
startメソッドのため
IEx.App.start/2メソッドを
見に行きます
lib/iex/lib/iex/app.ex
def start(_type, _args) do
import Supervisor.Spec
children = [worker(IEx.Config, [])]
options = [strategy: :one_for_one, name: IEx.Supervisor]
tab = IEx.Config.new()
case Supervisor.start_link(children, options) do
{:ok, pid} ->
{:ok, pid, tab}
{:error, _} = error ->
IEx.Config.delete(tab)
error
end
end
modにて起動される
IEx.App.start/2を
確認するが長そう
少しずつ見ていこう
lib/iex/lib/iex/app.ex
def start(_type, _args) do
import Supervisor.Spec
新規のスーパーバイザーの定義を
行うためにSupervisor.Specの
importを実行する
lib/iex/lib/iex/app.ex
children = [worker(IEx.Config, [])]
options =
[strategy: :one_for_one, name: IEx.Supervisor]
tab = IEx.Config.new()
workerについて
worker(module, args, options  [])
メソッドを呼び出している
worker(IEx.Config, [])
worker(module, args, options  [])
引数の数が違わない?
引数が
options  [] のように  が記載さ
れている場合は、メソッド呼び出し
の際に値がない場合に  の後ろの []
が値として入ってくる
例
iex(1)> defmodule Test do
...(1)> def test(options  []) do
...(1)> case options do
...(1)> [] -> IO.puts "[]"
...(1)> _ -> IO.puts "ちゃうよ"
...(1)> end
...(1)> end
...(1)> end
iex(2)> Test.test
[]
:ok
iex(3)> Test.test([1,2])
ちゃうよ
:ok
worker(IEx.Config, [])
worker(module, args, options  [])
第一引数が IEx.Configというモジュール名
第二引数が空配列
第三引数も空配列でWokerを作成
っということで
Supervisor.Spec.worker/3の
実装をみていくよー
lib/elixir/lib/supervisor/spec.ex
def worker(module, args, options  []) do
child(:worker, module, args, options)
end
Supervisor.Spec.child/4を呼び
出しているだけですね。
Supervisor.Spec.child/4の実装
を確認しにいきましょう。
lib/elixir/lib/supervisor/spec.ex
defp child(type, module, args, options) do
id = Keyword.get(options, :id, module)
modules = Keyword.get(options, :modules, modules(module))
function = Keyword.get(options, :function, :start_link)
restart = Keyword.get(options, :restart, :permanent)
shutdown = Keyword.get(options, :shutdown, 5000)
{id, {module, function, args},
restart, shutdown, type, modules}
end
Keyword.getをして、取得した値を返
しているようである
KeywordはElixirにて定義されて
いるモジュール
Keyword.getはキーに一致する値を取
得します。
取得できなかった場合はデフォルト値
となる
それでは、コードを戻っ
ていきましょう
lib/iex/lib/iex/app.ex
children = [worker(IEx.Config, [])]
options =
[strategy: :one_for_one, name: IEx.Supervisor]
tab = IEx.Config.new()
Workerの登録は実施したので、次はスーパーバ
イザーの戦略を決定していきます。
[strategy: :one_for_one, name:
IEx.Supervisor]
と記載されている通り、IExでは one_for_one
の戦略をとっているようです。
one_for_oneの戦略は自
分自身が死んだとしても他
人に影響されずに再起動す
るという戦略となります。
one_for_one以外の戦略としては、
下記のような戦略があります。
• simple_one_for_one
• rest_for_one
• one_for_all
スーパーバイザーを使用
するために起動戦略を設
定しないといけないため、
その設定を行いました。
lib/iex/lib/iex/app.ex
children = [worker(IEx.Config, [])]
options =
[strategy: :one_for_one, name: IEx.Supervisor]
tab = IEx.Config.new()
IEx.Config.newの結果を
tabにパターンマッチして
いるようです。
IEx.Config.newを見
てみましょう。
lib/iex/lib/iex/config.ex
def new() do
tab =
  :ets.new(@table, [:named_table, :public])
true =
:ets.insert_new(tab, [after_spawn: []])
tab
end
それほど長くなさそう
いけるいける
lib/iex/lib/iex/config.ex
@table __MODULE__
def new() do
tab =
  :ets.new(@table, [:named_table, :public])
true =
:ets.insert_new(tab, [after_spawn: []])
tab
end
ETSはErlangのETSモジュールを
介してメモリ内のテーブルに保存
しておくことができるものです。
:ets.newにて新しいテーブル
を作成します。
@table は __MODULE__ と定義さ
れているため定義されている箇所の
モジュール名が値として入っており
ます。
今回で言えば、IEx.Config ですね。
lib/iex/lib/iex/config.ex
def new() do
tab =
  :ets.new(@table, [:named_table, :public])
true =
:ets.insert_new(tab, [after_spawn: []])
tab
end
:ets.insert_newにて
オブジェクトの追加を行います。
lib/iex/lib/iex/config.ex
def new() do
tab =
  :ets.new(@table, [:named_table, :public])
true =
:ets.insert_new(tab, [after_spawn: []])
tab
end
Elixirは最後の結果が返り値と
なるため tab にパターンマッ
チされた結果が返る
lib/iex/lib/iex/app.ex
tab = IEx.Config.new()
case Supervisor.start_link(children, options) do
{:ok, pid} ->
{:ok, pid, tab}
{:error, _} = error ->
IEx.Config.delete(tab)
error
end
IEx.Config.newで返ってきた
tabの値をtabにパターンマッ
チさせる
lib/iex/lib/iex/app.ex
tab = IEx.Config.new()
case Supervisor.start_link(children, options) do
{:ok, pid} ->
{:ok, pid, tab}
{:error, _} = error ->
IEx.Config.delete(tab)
error
end
Supervisor.start_link(children, options)
にてスーパーバイザーの登録を行う。
成功したら {:ok, pid, tab}を返す
失敗したら IEx.Config.delete(tab) を実
行してから、errorを返す
これでIExの
スーパーバイザーの登録が完了!
あれ?
登録だけで、実際のIExの動作関連は?
ドキュメントにも
なにも書いていない…
lib/iex/lib/iex.ex
def start(opts  [], mfa  {IEx, :dont_display_result, []}) do
spawn fn ->
case :init.notify_when_started(self()) do
:started -> :ok
_ -> :init.wait_until_started()
end
:ok = start_iex()
:ok = set_expand_fun()
:ok = run_after_spawn()
IEx.Server.start(opts, mfa)
end
end
lib/iex/lib/iex.ex
def start(opts  [], mfa 
{IEx, :dont_display_result, []}) do
spawn fn ->
case :init.notify_when_started(self()) do
:started -> :ok
_ -> :init.wait_until_started()
end
lib/iex/lib/iex.ex
:ok = start_iex()
:ok = set_expand_fun()
:ok = run_after_spawn()
IEx.Server.start(opts, mfa)
end
end
IEx.startが
動くはずである
ドキュメントを探る
• Mix
→ 書いてない
• IEx
→ 書いてない
オワタ\(^o^)/
過去のコードを追う!
IExが初めて入ってきたのはElixir v0.7.0か
らだけど、そのときのコードの動作だと
スーパーバイザーは使っていない
※ちなみにコードが綺麗に
分割されているのはElixir v0.6.0からのよ
うなので、読むなら、そのあたりから読み
始めると良さそう。
過去のコードから追いかけるか…
しかし時間終了
…と思ったら
Elixirのドキュメントの
Applicationの中に書いてありそう
・・・
次回作にご期待ください!
ちなみに
lib/iex/mix.exs
∼略∼
env: [
autocomplete_server: IEx.Server,
colors: [],
inspect: [],
history_size: 20,
default_prompt: "%prefix(%counter)>",
alive_prompt: "%prefix(%node)%counter>"]]
end
mix.exsに見慣れない
envの設定がある
一応、関係ありそうな変更を発見
https://github.com/elixir-lang/elixir/
commit/
5e21d0d22dbbd55ff603763a31afe
21885c12658
lib/iex/lib/iex/autocomplete.ex
defp env_aliases do
- IEx.Server.current_env.aliases
+
Application.get_env(:iex, :autocomplete_serve
r).current_env.aliases
end
lib/iex/mix.exs
[registered: [IEx.Supervisor, IEx.Config],
mod: {IEx.App, []},
env: [
+ autocomplete_server: IEx.Server,
colors: [],
inspect: [],
history_size: 20,
default_prompt: "%prefix(%counter)>",
alive_prompt: "%prefix(%node)%counter>"]]
end
IEx envをautocomplete
server側に移したという
コミットメッセージ
他のElixirのライブラリで
は誰も行っていない方法
これだけだとわからない
よね…
Elixirのドキュメントの
Applicationの中に:envについて
も書いてあった
次回作に(ry
Elixirのガチ勢の
ガチコードはわからん
Elixirにて実装されている内部
コードを読むとElixirの実行
コードを読むことになる
Elixirの良い勉強になる
それほど難しくもない
※ただしドキュメントが
ある範囲での話
誰かの良い情報になった
のならば幸いです
ご静聴ありがとうございました

More Related Content

Viewers also liked

ホワイトボックステスト技法
ホワイトボックステスト技法ホワイトボックステスト技法
ホワイトボックステスト技法
hayabusa333
 
漏れのある抽象化の法則
漏れのある抽象化の法則漏れのある抽象化の法則
漏れのある抽象化の法則hayabusa333
 
ブラックボックステスト技法
ブラックボックステスト技法ブラックボックステスト技法
ブラックボックステスト技法
hayabusa333
 
Cowboyとelixir
CowboyとelixirCowboyとelixir
Cowboyとelixir
hayabusa333
 
Cowboyとphoenixの速度比較
Cowboyとphoenixの速度比較Cowboyとphoenixの速度比較
Cowboyとphoenixの速度比較
hayabusa333
 
現場にsahaginを取り入れた話
現場にsahaginを取り入れた話現場にsahaginを取り入れた話
現場にsahaginを取り入れた話
hayabusa333
 
Elixirのhoundを使ってみて
Elixirのhoundを使ってみてElixirのhoundを使ってみて
Elixirのhoundを使ってみて
hayabusa333
 
Getting test world
Getting test worldGetting test world
Getting test world
hayabusa333
 
E言語スタック
E言語スタックE言語スタック
E言語スタック
hayabusa333
 
Elixirについて私が知ってる二、三の事柄
Elixirについて私が知ってる二、三の事柄Elixirについて私が知ってる二、三の事柄
Elixirについて私が知ってる二、三の事柄
Tsunenori Oohara
 
Erlang and Elixir
Erlang and ElixirErlang and Elixir
Erlang and Elixir
hayabusa333
 
派遣社員が現場にRubyを取り入れるまで
派遣社員が現場にRubyを取り入れるまで派遣社員が現場にRubyを取り入れるまで
派遣社員が現場にRubyを取り入れるまで
hayabusa333
 
Elixir v1.3 で入るかもしれない機能
Elixir v1.3 で入るかもしれない機能Elixir v1.3 で入るかもしれない機能
Elixir v1.3 で入るかもしれない機能
hayabusa333
 
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
Tsunenori Oohara
 
脆弱性検査ツールってどうよ
脆弱性検査ツールってどうよ脆弱性検査ツールってどうよ
脆弱性検査ツールってどうよ
Masakazu Ikeda
 
Serverspecの本気をみるのです
Serverspecの本気をみるのですServerspecの本気をみるのです
Serverspecの本気をみるのです
hayabusa333
 
地獄のElixir(目黒スタートアップ勉強会)
地獄のElixir(目黒スタートアップ勉強会)地獄のElixir(目黒スタートアップ勉強会)
地獄のElixir(目黒スタートアップ勉強会)
Tsunenori Oohara
 

Viewers also liked (17)

ホワイトボックステスト技法
ホワイトボックステスト技法ホワイトボックステスト技法
ホワイトボックステスト技法
 
漏れのある抽象化の法則
漏れのある抽象化の法則漏れのある抽象化の法則
漏れのある抽象化の法則
 
ブラックボックステスト技法
ブラックボックステスト技法ブラックボックステスト技法
ブラックボックステスト技法
 
Cowboyとelixir
CowboyとelixirCowboyとelixir
Cowboyとelixir
 
Cowboyとphoenixの速度比較
Cowboyとphoenixの速度比較Cowboyとphoenixの速度比較
Cowboyとphoenixの速度比較
 
現場にsahaginを取り入れた話
現場にsahaginを取り入れた話現場にsahaginを取り入れた話
現場にsahaginを取り入れた話
 
Elixirのhoundを使ってみて
Elixirのhoundを使ってみてElixirのhoundを使ってみて
Elixirのhoundを使ってみて
 
Getting test world
Getting test worldGetting test world
Getting test world
 
E言語スタック
E言語スタックE言語スタック
E言語スタック
 
Elixirについて私が知ってる二、三の事柄
Elixirについて私が知ってる二、三の事柄Elixirについて私が知ってる二、三の事柄
Elixirについて私が知ってる二、三の事柄
 
Erlang and Elixir
Erlang and ElixirErlang and Elixir
Erlang and Elixir
 
派遣社員が現場にRubyを取り入れるまで
派遣社員が現場にRubyを取り入れるまで派遣社員が現場にRubyを取り入れるまで
派遣社員が現場にRubyを取り入れるまで
 
Elixir v1.3 で入るかもしれない機能
Elixir v1.3 で入るかもしれない機能Elixir v1.3 で入るかもしれない機能
Elixir v1.3 で入るかもしれない機能
 
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
 
脆弱性検査ツールってどうよ
脆弱性検査ツールってどうよ脆弱性検査ツールってどうよ
脆弱性検査ツールってどうよ
 
Serverspecの本気をみるのです
Serverspecの本気をみるのですServerspecの本気をみるのです
Serverspecの本気をみるのです
 
地獄のElixir(目黒スタートアップ勉強会)
地獄のElixir(目黒スタートアップ勉強会)地獄のElixir(目黒スタートアップ勉強会)
地獄のElixir(目黒スタートアップ勉強会)
 

Recently uploaded

CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 

Recently uploaded (14)

CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 

IEXを学ぶ