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
34
サクッと画像分類アプリを作ってみる
thehaigo
0
260
ElixirMobile#2 ElixirDesktopの前説
thehaigo
0
170
ElixirDesktop is Production Ready?
thehaigo
0
120
スマホで動く「GPS地図アプリ」はElixirDesktopで割とサックリ作れる
thehaigo
0
130
Phoenix 1.7とElixirDesktopでスマホアプリを作る セットアップ編
thehaigo
0
220
ElixirConf繋がりでLiveViewNativeやってみた
thehaigo
0
250
ElixirDesktop R&D 苦労話
thehaigo
1
100
AxonOnnxとLiveViewで作る AI・MLシステム
thehaigo
0
170
Other Decks in Programming
See All in Programming
GoとPHPのインターフェイスの違い
shimabox
2
210
1年目の私に伝えたい!テストコードを怖がらなくなるためのヒント/Tips for not being afraid of test code
push_gawa
1
610
AIの力でお手軽Chrome拡張機能作り
taiseiue
0
190
コードを読んで理解するko build
bells17
1
110
密集、ドキュメントのコロケーション with AWS Lambda
satoshi256kbyte
1
210
たのしいSocketのしくみ / Socket Under a Microscope
coe401_
8
1.3k
一休.com のログイン体験を支える技術 〜Web Components x Vue.js 活用事例と最適化について〜
atsumim
0
990
CDK開発におけるコーディング規約の運用
yamanashi_ren01
2
250
Ruby on cygwin 2025-02
fd0
0
180
Rails アプリ地図考 Flush Cut
makicamel
1
130
バッチを作らなきゃとなったときに考えること
irof
2
530
ソフトウェアエンジニアの成長
masuda220
PRO
12
2.1k
Featured
See All Featured
Fontdeck: Realign not Redesign
paulrobertlloyd
83
5.4k
Being A Developer After 40
akosma
89
590k
Site-Speed That Sticks
csswizardry
4
410
Optimising Largest Contentful Paint
csswizardry
34
3.1k
Gamification - CAS2011
davidbonilla
80
5.2k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
100
18k
Measuring & Analyzing Core Web Vitals
bluesmoon
6
260
YesSQL, Process and Tooling at Scale
rocio
172
14k
Why Our Code Smells
bkeepers
PRO
336
57k
Fireside Chat
paigeccino
34
3.2k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
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ʹͯ͠αʔόʔ͔Β҉߸Խ͞ΕͨൿಗใΛऔಘͯ͠෮߸