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
どうしてこのコードエラーになるんですか?
Search
RyotaMurohoshi
January 15, 2015
Technology
0
27
どうしてこのコードエラーになるんですか?
2015/01/15 Xamarin 本社に Mono 申したい会 兼 Xamarin 新年会で発表した際の資料です
※元々はSlideShareで公開していた資料です
RyotaMurohoshi
January 15, 2015
Tweet
Share
More Decks by RyotaMurohoshi
See All by RyotaMurohoshi
Tilemapのアップデートについて
ryotamurohoshi
0
36
Unityの合同同人誌や合同商業誌を書いてる僕は感想やレビューや評価が欲しい
ryotamurohoshi
0
540
Unity 2021.1での Unityパッケージの名称変更について
ryotamurohoshi
0
730
Odin Validationはいいぞ!
ryotamurohoshi
2
990
Tilemapはいいぞ!2020 〜すごいぞ、プロジェクト専用拡張Brush〜
ryotamurohoshi
0
2.4k
Unityでも、新しいC#
ryotamurohoshi
0
1.3k
Riderはいいぞ!
ryotamurohoshi
1
3.5k
Riderのススメ〜俺はRiderここが好き〜
ryotamurohoshi
1
2.5k
Unity開発者に伝えたい.NETのこと
ryotamurohoshi
4
37k
Other Decks in Technology
See All in Technology
Language Update: Java
skrb
2
280
「魔法少女まどか☆マギカ Magia Exedra」のグローバル展開を支える、開発チームと翻訳チームの「意識しない協創」を実現するローカライズシステム
gree_tech
PRO
0
570
フィンテック養成勉強会#56
finengine
0
130
Snowflakeの生成AI機能を活用したデータ分析アプリの作成 〜Cortex AnalystとCortex Searchの活用とStreamlitアプリでの利用〜
nayuts
0
300
Automating Web Accessibility Testing with AI Agents
maminami373
0
1.1k
研究開発と製品開発、両利きのロボティクス
youtalk
1
480
まだ間に合う! StrandsとBedrock AgentCoreでAIエージェント構築に入門しよう
minorun365
PRO
11
950
AI開発ツールCreateがAnythingになったよ
tendasato
0
110
AI エージェントとはそもそも何か? - 技術背景から Amazon Bedrock AgentCore での実装まで- / AI Agent Unicorn Day 2025
hariby
4
1.2k
「魔法少女まどか☆マギカ Magia Exedra」での負荷試験の実践と学び
gree_tech
PRO
0
610
dbt開発 with Claude Codeのためのガードレール設計
10xinc
0
110
5年目から始める Vue3 サイト改善 #frontendo
tacck
PRO
3
200
Featured
See All Featured
Building Applications with DynamoDB
mza
96
6.6k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
Agile that works and the tools we love
rasmusluckow
330
21k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Reflections from 52 weeks, 52 projects
jeffersonlam
352
21k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
580
Being A Developer After 40
akosma
90
590k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
Optimising Largest Contentful Paint
csswizardry
37
3.4k
Transcript
Ͳ͏ͯ͜͠ͷίʔυ ΤϥʔʹͳΔΜͰ͔͢ʁ ྄ࣨଠ 2015/1/15()(Xamarin(ຊࣾʹ(Mono(ਃ͍ͨ͠ձ(݉(Xamarin(৽ձ
͍͢·ͤΜ
೦ͳ͕Β Xamain.iOSͱXamarin.Androidͷ
͠·ͤΜʂ
͜ΜΜ ͓ٱ͠ͿΓͰ͢ ͘͠ ͡Ί·ͯ͠
UnityίϛϡχςΟ͔Βདྷ·ͨ͠ʂ
ࣗݾհ • ໊લ:྄ࣨଠ • ձࣾ:FULLERגࣜձࣾ • ࣄ:UnityήʔϜΤϯδϯͰͷεϚϗήʔϜ։ൃ • ίϛϡχςΟ:,ຊAndroidͷձUnity෦ͷ͓ख͍
UnityήʔϜΤϯδϯ monoΛ͍ͬͯ·͢ʂ iOSɺAndroidɺMacɺWinɺήʔϜઐ༻ػ͍Ζ͍Ζಈ͘ (Ͷɺ΄ΒʂXamarinؔͳ͘ͳ͍ʂ)
ͯ͞ɺ
Xamarinɺͦͯ͠mono ͢Β͍͠Ͱ͢Ͷʂ
(৮ͬͨ͜ͱແ͍͚ΕͲɽɽɽ) UI෦ϓϥοτϑΥʔϜݻ༗ͷػೳΛআ͖ ίΞϩδοΫͷ෦Λڞ௨ԽͰ͖Δʂʂʂ ͢Β͍͠ʂ
ͭ·Γ Andorid༻ʹॻ͍ͨίΞϩδοΫ iOSͰಈ͘ʂ
100%ಈ͘ʂ
Μʁ
ຊʹʁ!ᴺ!ᴺ_ŋ)ŢƄŖ
Xamarin͢Β͍͠ʂ ͚ͲɺϩδοΫଆ࣮100%Ͱͳ͍Ͱ͢ΑͶ
Limita&ons h"p:/ /developer.xamarin.com/guides/ios/advanced_topics/limita8ons/
iOSͳͲ࣮ߦ࣌ͷίʔυੜΛೝΊ͍ͯͳ͍ڥ͕͋Δ ͦ͏͍͏ڥͩͱJITίϯύΠϧͰ͖ͳ͍ ͦΜͳڥͩͱAOT(Ahead)Of)Time)ίϯύΠϧʂ
͚ͲɺAOTίϯύΠϧͩͱ͍Ζ͍Ζ Ͱ͖ͳ͍͜ͱ͕͋ͬͨΓɺ Τϥʔʹͳͬͯ͠·͏ίʔυ͕͋Δ
ྫ͑δΣωϦΫε
͜ΜͳΫϥε͕͋ͬͯ static class Utility{ static class PredicateOf<T>{ public static Func<T,
bool> Always = t => true; } public static void ShowIfAble<T> (T source, Func<T, bool> predicate){ if (predicate (source)) Console.WriteLine (source); } public static void Show<T> (T source) { if (PredicateOf<T>.Always (source)) Console.WriteLine (source); } }
iOSͰ࣍ͷΑ͏ʹݺͼग़͢ͱɽɽɽ Utility.Show(1);
ʊਓਓ!ਓਓʊ ʼ!ಥવͷࢮ!ʻ ʉY^Y^Y^Yʉ
Why?
͍ɺ ʮAOTͷ੍ݶʹҾ͔͔ͬΔ͔Βʯ ͬͯͷΘ͔ΔΜͰ͚͢ͲͶ
Xamarin༷ࣾʹMonoਃ͍ͨ͠ ʮAOTίϯύΠϧڥԼͰɺ ͳ੍ͥݶ͕͋Δ͔ɺ ͦͷཧ༝ɾΈΛڭ͍͑ͯͩ͘͞ʯ
ͪͳΈʹ͖ͬ͞ͷίʔυ static class Utility{ static class PredicateOf<T>{ public static Func<T,
bool> Always = t => true; } public static void ShowIfAble<T> (T source, Func<T, bool> predicate){ if (predicate (source)) Console.WriteLine (source); } public static void Show<T> (T source) { if (PredicateOf<T>.Always (source)) Console.WriteLine (source); } }
ͪͳΈʹ͖ͬ͞ͷίʔυ LINQ%to%ObjectsͷதͰಉ͡Α͏ͳ͜ͱ͍ͬͯΔ Countͱ͔FirstOrDefualtͱ͔ɺFunc<T,%bool>ͳड़ޠؔΛ ҾʹͱΔͷɾͱΒͳ͍ͷͷΦʔόʔϩʔυ͕͋ΔͭͰ (iOSͳͲAOTͳڥͰ#ifΛར༻ͯ͠ɺΘͳ͍Α͏ذ) αϯϓϧͳͨΊͷίʔυͰͳͯ͘ɺ࣮༻ίʔυʂ h"ps:/ /github.com/mono/mono/blob/master/mcs/class/System.Core/System.Linq/Enumerable.cs#L48
ิ ӿຊ͞Μ(@atsushieno)͕ ʮΠϯαΠυXamarin(6)*Xamarin.iOSͰ༻͢ΔϥΠϒϥϦʯ ͷίϥϜͰ͋Δఔɺཧ༝Λઆ໌͞Ε͍ͯ·͢ɻ Ͱ͜Ε࠷৽൛Ͱͳ͍Α͏Ͱ͢ɻ h"p:/ /www.buildinsider.net/mobile/insidexamarin/06
એɾใࠂ ୈ2ճͷJXUGͷษڧձͰɺ ʮUnityͩͱLINQࢮʹ·͘ΔʯͳLT͠·ͨ͠ UnityͰࢮͳͳ͍(͜ͱΛඪͱͨ͠) LINQޓϥΠϒϥϦ࡞ͬͯެ։ͯ͠·͢
ɹ͓ئ͍ monoͷ$$aot=fullͳϏϧυͱ$$full$aotͳ.exeͷ࣮ߦɺ ࢼͨ͠ͷͰ͕͢ɺ͍·͍ͪ͜ΕͰ͍͍͔͔Γ·ͤΜ .NETɺmonoͷϥϯλΠϜίϯύΠϧ ʹ͍ͭͯΞυόΠε͍͚ͨͩΔͱخ͍͠Ͱ͢
ؔ࿈ϦϯΫ • h#p:/ /www.mono,project.com/docs/advanced/aot/ • h#p:/ /www.mono,project.com/docs/advanced/run7me/docs/ aot/ • h#p:/
/developer.xamarin.com/guides/ios/advanced_topics/ limita7ons/
͓·͚2 F#ͰίΞϩδοΫ࡞ͬͯ UnityͰήʔϜ࡞ͬͯΈ·ͨ͠ PS#Vitaͷ࣮ػͰಈ͔ͨ͠Βࢮʹ·ͨ͠ ޙͰΞυόΠεԼ͍͞