Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Webの技術スタックで マルチプラットフォームアプリ開発を可能にするElixirDeskto...
Search
Yuisho Takafuji
October 29, 2024
Programming
2
1.1k
Webの技術スタックで マルチプラットフォームアプリ開発を可能にするElixirDesktopの紹介
Yuisho Takafuji
October 29, 2024
Tweet
Share
More Decks by Yuisho Takafuji
See All by Yuisho Takafuji
Elixirでスマホ開発の現在
thehaigo
0
41
サクッと画像分類アプリを作ってみる
thehaigo
0
280
ElixirMobile#2 ElixirDesktopの前説
thehaigo
0
180
ElixirDesktop is Production Ready?
thehaigo
0
130
スマホで動く「GPS地図アプリ」はElixirDesktopで割とサックリ作れる
thehaigo
0
140
Phoenix 1.7とElixirDesktopでスマホアプリを作る セットアップ編
thehaigo
0
240
ElixirConf繋がりでLiveViewNativeやってみた
thehaigo
0
270
ElixirDesktop R&D 苦労話
thehaigo
1
110
AxonOnnxとLiveViewで作る AI・MLシステム
thehaigo
0
190
Other Decks in Programming
See All in Programming
複雑なフォームを継続的に開発していくための技術選定・設計・実装 #tskaigi / #tskaigi2025
izumin5210
12
6.3k
TypeScript を活かしてデザインシステム MCP を作る / #tskaigi_after_night
izumin5210
4
470
漸進。
ssssota
0
1.1k
Perlで痩せる
yuukis
1
660
人には人それぞれのサービス層がある
shimabox
3
460
"使いづらい" をリバースエンジニアリングする UI の読み解き方
rebase_engineering
0
110
Doma で目指す ORM 最適解
nakamura_to
1
160
Interface vs Types ~型推論が過多推論~
hirokiomote
1
230
バランスを見極めよう!実装の意味を明示するための型定義 TSKaigi 2025 Day2 (5/24)
whatasoda
2
770
Feature Flag 自動お掃除のための TypeScript プログラム変換
azrsh
PRO
4
620
try-catchを使わないエラーハンドリング!? PHPでResult型の考え方を取り入れてみよう
kajitack
3
290
Use Perl as Better Shell Script
karupanerura
0
650
Featured
See All Featured
The Invisible Side of Design
smashingmag
299
50k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
34
2.3k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
25
2.8k
Optimizing for Happiness
mojombo
378
70k
GraphQLとの向き合い方2022年版
quramy
46
14k
RailsConf 2023
tenderlove
30
1.1k
Code Reviewing Like a Champion
maltzj
523
40k
For a Future-Friendly Web
brad_frost
178
9.7k
Navigating Team Friction
lara
186
15k
Music & Morning Musume
bryan
47
6.5k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.7k
Raft: Consensus for Rubyists
vanstee
137
7k
Transcript
8FCͷٕज़ελοΫͰ ϚϧνϓϥοτϑΥʔϜΞϓϦ։ൃΛՄೳʹ͢Δ &MJYJS%FTLUPQͷհ UIF@IBJHP
➤ Name: ོ౻།ষʢλΧϑδ ϢΠγϣʣ ➤ Twitter: @the_haigo ➤ Github: thehaigo
➤ Job: ૐཿ / ϑϦʔϥϯεΤϯδχΞ ➤ Title: ElixirMobileΦʔΨφΠβʔ ➤ Skill: Elixir, Phoenix, React, ReactNative ➤ ࠷ۙ࡞ͬͨͷ ➤ CallKitͱWebRTCΛ༻ͨ͠ΠϯλʔϗϯΞϓϦ About me
ຊΛࣥච͠·ͨ͠ʂʢڞஶͰʣ dষ"*.-ؔ࿈ ষύλʔϯϚονʹ͍ͭͯ ষೝূγεςϜʹ͍ͭͯ
ٕज़ॻలʢΦϯϥΠϯʣʹͩ͠·͢ʂ ͬͪ͜୯ஶ
&MJYJS.PCJMFͬͯͳΜͧʁ
ຊ
&MJYJSͰεϚϗΞϓϦΛ ࡞ΕΔͷΛ͝ଘͰ͔͢ʁ
&MJYJS%FTLUPQͱ &MJYS1IPFOJYͰϚϧνϓϥοτϑΥʔϜ։ൃ͕Ͱ͖ΔϥΠϒϥϦ܈ ֤04 で &MSBOHٴ び &MJYJSΛىಈ ͦͷ্Ͱ8FCΞ プ Ϧέʔγϣϯαʔ
バ ʔ1IPFOJYΛىಈ ֤04ͷ8FC7JFX(6*ϥΠ ブ ϥϦͷ8Y8JEHFU͔ΒΞΫηεͯ͠දࣔ ͍ΘΏΔ8FC7JFXΞϓϦέʔγϣϯܗࣜ ҧ͍දࣔ͢Δ8FCΞϓϦέʔγϣϯ͕ϩʔΧϧͰಈ͍͍ͯΔ͜ͱ
௨ৗ αʔόʔ 8FC7JFX 4XJGU,PUMJO &SMBOH7. ࣮ߦڥͷ7. &MJYJS ࣮ߦڥ 1IPFOJY 8"'
J04"OESPJE
&MJYJS%FTLUPQ J04"OESPJE 8FC7JFX 4XJGU,PUMJO &SMBOH7. ࣮ߦڥͷ7. &MJYJS ࣮ߦڥ 1IPFOJY 8"'
ϝϦοτ w 8"'ͷϦιʔεΛΫϥΠΞϯτଆ Ͱ͑Δ "-.-ʣ w ΦϑϥΠϯಈ࡞͕Մೳ w 8FCܥͷٕज़Ͱ։ൃͰ͖Δ w
ߏʹΑͬͯ"1*ෆཁ w 3/ 'MVUUFSʹൺͯωΠςΟϒ࿈ܞ ͕༰қ w ൿಗใͷѻ͍͕໘ w #DSZQUͳͲωΠςΟϒϥΠϒϥϦ ͷϥούʔϥΠϒϥϦ͕͑ͳ͍ w ग़དྷ͕ͯઙ͍ w όά͕͍ͬͯΔՄೳੑ w ظӡ༻Ͱͷϊϋෆ σϝϦοτ
ͲΜͳΈͰಈ͍͍ͯΔͷʁ w ֤04Ͱಈ͘&SMBOHϥϯλΠϜΛϏϧυ w /BUJWF#SJHF $ ܦ༝Ͱ&SMBOHΛىಈͦ͠ͷ্Ͱ&MJYJS 1IPFOJYΛىಈ w ϩʔΧϧωοτϫʔΫΛ্্ཱͪ͛ͯهʹίωΫγϣϯΛషΔ
w ֤8FC7JFXϥΠϒϥϦ͔Βଓ w ͋ͱͷࡉ͔͍ઃఆ8FC7JFXͱಉ͡
&MJYJS%FTLUPQ J04"OESPJE 8FC7JFX 4XJGU,PUMJO &SMBOH7. &MJYJS 1IPFOJY $ ܦ༝Ͱىಈ 7.্Ͱ&MJYJSىಈ
8FCαʔόʔىಈ 5$1ίωΫγϣϯΛషΔ
J04
"OESPJE
&SMBOHʹ͍ͭͯ w ฒߦॲཧࢦͷؔܕݴޠ w 04ͱผʹܰྔϓϩηεΛେྔʹ࡞Δ w Ϋϥογϡ͙ͯ͢͠࡞Γ͢ͷͰোੑ͕ߴ͘ϝϞϦޮྑ͍ w ฒྻॲཧΞΫλʔϞσϧΛ࠾༻ w
ͱిަػʢιχʔɾΤϦΫιϯʣͷγεςϜͰΘΕͨ w ࠷ۙ/JOUFOEPͷεϓϥτΡʔϯͰ࠾༻͞Ε͍ͯΔ
&MJYJSʹ͍ͭͯ w ฒྻॲཧࢦͷؔܕݴޠ w &SMBOH7. #&". ্Ͱಈ࡞͢Δ+BWBʹର͢Δ,PUMJOͳײ͡ w &SMBOHʹൺͯΏΔ;Θͳײ͡Ͱ3VCZʹ͍ۙॻ͖ຯ w
Ϋϥεແ͘ɺߏମͱॲཧϞδϡʔϧͷγϯϓϧͳߏ 8"'ͷ1IPFOJYɺ)PU8JSFܥͷ-JWF7JFXɺΈࠐΈͷ/FSWFT +VQZUFSܥͷ-JWFCPPLɺߦྻԋࢉ/Yɺσʔλॲཧ&YQMPSFSɺ"*.-"YPO
1IPFOJYʹ͍ͭͯ w ϑϧελοΫͳ8FCΞϓϦέʔγϣϯϑϨʔϜϫʔΫ w ϝϞϦޮ͕ྑ͘άϩʔεʹڧ͍ w 1JOUFSFTU1ZUIPO1IPFOJYͰΛʹू w 3FBDU7VFͰߏங͢ΔΑ͏ͳ41"ΛΑΓγϯϓϧʹߏஙͰ͖Δ-JWF7JFX w
ೝূػೳδΣωϨʔλΛඪ४ࡌ͠ɺࣗͰ؆୯ʹ֦ுՄೳ w 5BJMXJOEΛ࠾༻͠+4ͱͷ࿈ܞ༰қ
wγεςϜʹ&MJYJSΛಋೖ wNJMJPO ̏ԯԁʣઅ wαʔόʔΛݮগ wͷQZUIPOͷγεςϜΛ &MJYJS̐Ͱ͏ wγεςϜͷ৴པੑͱύϑΥʔϚ ϯεେ෯Ξοϓ &MJYJSΛಋೖͯ͠ίετݮ IUUQTQBSBYJBMJPCMPHFMJYJSTBWJOHT
ϑϩϯτΤϯυͷཱྀͷՌͯʹ-JWF7JFXʹͨͲΓண͍ͨ • 3FBDUKTͱ/FYUKTͰͷ։ൃʹർΕɺ γϯϓϧ͞ΛٻΊͯ3BJMTʹҠߦ • 3BJMTͰϑϩϯτΤϯυͱόοΫΤ ϯυͷ౷߹ͷ͠͞Λײ͡Δ • ࠷ऴతʹ&MJYJSͱ1IPFOJYΛબ͠ɺ γϯϓϧ͞ͱߴύϑΥʔϚϯεΛ࣮
ݱ • &MJYJSίʔυͷಡΈ֦͢͞ுੑ ͕͋Γɺ։ൃମݧ্͕ • ஶऀʹͱͬͯ&MJYJSཧతͳڥͱ ͳΓɺ3FBDUKTͷෛ୲ΛܰݮͰ͖ͨ IUUQTEFWUPEBOJFMCFSHIPM[GSPNOFYUKTUPSBJMTUIFOFMJYJSNZKPVSOFZUISPVHISFBDUKTCVSOPVUIE
&MJYJS%FTLUPQΞϓϦͷಛ w όοΫΤϯυ8FCΞϓϦͱಉ͡ݴޠɺಉٕ͡ज़ελοΫͰ։ൃՄೳ w -JWF7JFX 5BJMXJOEͰ֤छΞϓϦΛߏங w 5BJMXJOEͷࢿݯΛ͑ͯɺڞ௨ͨ͠6*Λૉૣ͘ߏங w QIYHFOMJWFͰ$36%ը໘ΛίϚϯυҰൃ
w QIYHFOBVUIͰೝূػೳίϚϯυҰൃ w ֎෦ͷ௨৴͕ͳ͚ΕΦϑϥΠϯͰಈ࡞Մೳ
̏ͭͷΞϓϦܗࣜ ελϯυΞϩϯߏ %#42-JUF
ΦϑϥΠϯͰಈ࡞Մೳ Ϋϥαόߏ "1*αʔόʔͱ ΫϥΠΞϯτΞϓϦͷ ैདྷͷΈ߹Θͤ "1*αʔόʔ ֎෦%#ΞΫηεߏ ΞϓϦͷσʔλϕʔεͷଓઌʹ֎෦ͷσʔλϕʔεΛࢦఆ͢Δ "1*࡞ෆཁ %#ෛՙΛߟྀͯ͠ಛఆػೳ͚ͩ"1*Λୟ͘͜ͱՄೳ ཧμογϡϘʔυ8FCΞϓϦΛσϓϩΠͯ͠ಉ࣌։ൃ͕༰қ
ωΠςΟϒͳػೳ༻Ͱ͖ͳ͍ʁ
/BUJWFػೳ+4֤04ͷ)PPLΛ༻ͯ͠Մೳ w +48FC"1* w Ґஔใ(FP-PDBUJPO"1* w ΧϝϥɺϚΠΫ.FEJB%FWJDFT"1* w δϟΠϩηϯα%FWJDF.PUJPO&WFOU w
֤04ͷIPPL w ,PUMJO8FC"QQ*OUFSGBDF w 4XJGU8,4DSJQU.FTTBHF)BOEMFS
1VTI௨ʁ
1VTI௨'JSFCBTFΛܦ༝ͯ͠৴Մೳ w &MJYJS%FTLUPQͱผʹ1IPFOJYαʔόʔΛཱͯΔ w "OESPJE J04Ͱ'JSFCBTF4%,ΛೖΕΔ w ৴༻σόΠετʔΫϯΛ1IPFOJYαʔόʔʹอଘ w ৴༻ͷϥΠϒϥϦ1JHFPOΛ༻֤ͯ͠ʹૹ৴
w ड৴࣌ʹ8FC7JFXͷಛఆͷϖʔδΛ։͘ॲཧΛߦ͏
࡞Γํ
w NJYQIYOFXCMPH w DECMPH w NJYFDUPNJHSBUF w ϥΠϒϥϦʹEFTLUPQ@TFUVQΛՃ w NJYEJQTHFU
w NJYEFTLUPQJOTUBMM w NJYEFTLUPQJPTTFUVQ w NJYEFTLUPQBOESPJETFUVQ δΣωϨʔλΛೖΕͯίϚϯυ͚ͩͰྃ
8FCΞϓϦέʔγϣϯϑϨʔϜϫʔΫ ʢ&MJYJS1IPFOJY Ͱ ຊ֨తͳεϚϗΞϓϦ͕࡞ΕΔʁʂ
࡞Γ·ͨ͠ "QQ4UPSF (PPHMF1MBZ
8FCμογϡϘʔυ͋ΔΑʂ IUUQTUSBSFDP fl ZEFW
ͲΜͳΞϓϦ͔ʁ w (PPHMF1MBDFT"1*Ͱݕࡧ͠ɺߦ͖͍ͨεϙοτɺߦͬͨεϙοτΛཧ w ֤04ωΠςΟϒػೳΛͬͯ(14ϩάΛऔಘ w (14ϩάΛ.BQ-JCSF্ʹϦΞϧλΠϜඳը͢Δ w อଘͨ͠εϙοτ͔ΒϓϥϯΛ࡞ w
νΣοΫΠϯػೳ w φϏήʔγϣϯػೳ
ΞϓϦߏ 1PTUHSF42- (14-PHHJOH ʢ%#ߴෛՙʣ "1* 8FC%BTICPBSE
&MJYJS%FTLUPQ`T1IPFOJY 4QPU 'PMEFS 3PVUF$36% %#ෛՙ
༻ͨ͠αʔϏε w 4FSWFS fl ZJP w %#IPTUJOH fl ZJP w
.BJM#SBWP w -PHPEFTJHODPN w %PNBJO͘͞ΒΠϯλʔωοτ
$*$%ʹ͍ͭͯ w $* w (JU)VC"DUJPOTͰ௨ৗͷ1IPFOJYΞϓϦέʔγϣϯͱͯ͠$*ΛճͤΔ w /BUJWFػೳʹؔͯ͠खಈςετ͔ΞϓϦ༻ͷϦϙδτϦΛ࡞͢Δඞཁ͕͋Δ w $% w
(JUIVC"DUJPOTجຊखಈͰߦͬͨͷͰະݕূ w "OESPJEΞϓϦॺ໊Λߦ͍BBCϑΝΠϧΛ"OESPJE4UVEJPͰ࡞ w J04ετΞϖʔδΛ࡞͠ɺ9DPEF͔Β"SDIJWFΛߦ͍JQBϑΝΠϧΛ࡞ɺΞοϓϩʔυ w 9DPEF$MPVEϑΥϧμߏతʹผϦϙδτϦΛ࡞͢Δඞཁ͕͋Δ
ϚωλΠζʹ͍ͭͯ w ՝ۚػೳࠓճ࡞͍ͯ͠ͳ͍͕ɺ8FCμογϡϘʔυ͕͋ΔͷͰ͔ͦ͜ Β4USJQF1BZNFOUΛ͏ͷ͕ແ w ֤ετΞͰ՝ۚΛߦ͏߹ωΠςΟϒػೳͱ࣮͕ͯ͠ඞཁ w ΞϑΣϦΤΠτϦϯΫ)5.-ͳͷͰσϑΥϧτͷϒϥβͰ։͘Α͏ʹ͢ Εେৎͦ͏
ηΩϡϦςΟ w "1*ΩʔͷൿಗใҰԠόΠφϦσʔλԽ͞Ε͍ͯΔ͕ɺΞϓϦϑΝΠϧʹಉ ࠝ͞Ε͍ͯΔͨΊൈ͔ΕΔඞཁ͕͋Δ w ରԠࡦɿಡԽ w ϥΠϒϥϦͰಡΈࠐΈ࣌ʹҎԼͷ༷ͳॲཧΛߦ͏ w ڥม໊Λແؔͳจࣈྻʹม͑Δ
w ൿಗใΛ҉߸Խ͠ɺϥΠϒϥϦ͔ΒಡΈऔΔࡍʹ෮߸ w ىಈ࣌ʹ҉߸Խͨ͠ใʹͯ͠औಘ w ىಈ࣌ʹ*%ΛTBMUʹͯ͠αʔόʔ͔Β҉߸Խ͞ΕͨൿಗใΛऔಘͯ͠෮߸