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
Javaのバージョニング問題の話しよっか
Search
RyotaMurohoshi
January 21, 2016
Technology
0
21
Javaのバージョニング問題の話しよっか
2016/01/21(木)に行われた第1回ゆるゆる高専エンジニアLT大会 at FULLER
の発表資料です。
RyotaMurohoshi
January 21, 2016
Tweet
Share
More Decks by RyotaMurohoshi
See All by RyotaMurohoshi
Unityの合同同人誌や合同商業誌を書いてる僕は感想やレビューや評価が欲しい
ryotamurohoshi
0
490
Unity 2021.1での Unityパッケージの名称変更について
ryotamurohoshi
0
680
Odin Validationはいいぞ!
ryotamurohoshi
2
910
Tilemapはいいぞ!2020 〜すごいぞ、プロジェクト専用拡張Brush〜
ryotamurohoshi
0
2.3k
Unityでも、新しいC#
ryotamurohoshi
0
1.3k
Riderはいいぞ!
ryotamurohoshi
1
3.4k
Riderのススメ〜俺はRiderここが好き〜
ryotamurohoshi
1
2.3k
Unity開発者に伝えたい.NETのこと
ryotamurohoshi
4
37k
ImportedLinqのススメ
ryotamurohoshi
0
1.3k
Other Decks in Technology
See All in Technology
事業を差別化する技術を生み出す技術
pyama86
2
540
Aurora PostgreSQLがCloudWatch Logsに 出力するログの課金を削減してみる #jawsdays2025
non97
1
250
JavaにおけるNull非許容性
skrb
2
2.7k
困難を「一般解」で解く
fujiwara3
8
2.4k
エンジニアの健康管理術 / Engineer Health Management Techniques
y_sone
7
3.6k
どうすると生き残れないのか/how-not-to-survive
hanhan1978
2
780
役員・マネージャー・著者・エンジニアそれぞれの立場から見たAWS認定資格
nrinetcom
PRO
5
6.9k
事業モメンタムを生み出すプロダクト開発
macchiitaka
0
110
EMConf JP 2025 懇親会LT / EMConf JP 2025 social gathering
sugamasao
2
210
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
19k
QAエンジニアが スクラムマスターをすると いいなぁと思った話
____rina____
0
180
Amazon Q Developerの無料利用枠を使い倒してHello worldを表示させよう!
nrinetcom
PRO
2
120
Featured
See All Featured
It's Worth the Effort
3n
184
28k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.6k
For a Future-Friendly Web
brad_frost
176
9.6k
Gamification - CAS2011
davidbonilla
80
5.2k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Designing on Purpose - Digital PM Summit 2013
jponch
117
7.1k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.3k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.3k
Java REST API Framework Comparison - PWX 2021
mraible
29
8.4k
Faster Mobile Websites
deanohume
306
31k
Agile that works and the tools we love
rasmusluckow
328
21k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
Transcript
Javaͷόʔδϣχϯά ͷ͠Α͔ͬ ྄ࣨଠ 2016/01/21()(ୈ1ճ(ΏΔΏΔߴઐΤϯδχΞLTେձ(at(FULLER
ಥવͰ͕͢Ͱ͢
͜ͷΫϥεΛؚΉϥΠϒϥϦ͕͋Γ·͢(core_v1.jar) package com.mrstar.versioning_problem.core; public final class Core { private Core()
{} public static String getTitle() { return "΄͛;͕"; } public final static String MESSAGE = "ͽΑͽΑʂ"; }
͖ͬ͞ͷϥΠϒϥϦʹґଘ͢ΔϥΠϒϥϦ͕͋Γ·͢(framework.jar) package com.mrstar.versioning_problem.framework; import com.mrstar.versioning_problem.core.Core; public class Framework { private
Framework(){ } public static void showTitle() { System.out.println(Core.getTitle()); } public static void showMessage() { System.out.println(Core.MESSAGE); } }
None
͜Μͳײ͡Ͱ͍·͢ package com.mrstar; import com.mrstar.versioning_problem.framework.Framework; public class Main { public
static void main(String[] args) { Framework.showTitle(); Framework.showMessage(); } }
࣮ߦ͢Δͱɽɽɽ package com.mrstar; import com.mrstar.versioning_problem.framework.Framework; public class Main { public
static void main(String[] args) { Framework.showTitle(); // ʮ΄͛;͕ʯͬͯදࣔ͞ΕΔ Framework.showMessage(); // ʮͽΑͽΑʂʯͬͯදࣔ͞ΕΔ } }
͔ͬ͜Β͕ϙΠϯτͰ͢ ͏ͪΐͬͱঢ়گઆ໌͕ଓ͖·͢
ԾͷจݴΛຊ൪༻ʹมߋ͠ɺόʔδϣϯΞοϓʢcore_v2.jarʣ package com.mrstar.versioning_problem.core; public final class Core { private Core()
{} public static String getTitle() { return "ϝΠϯϖʔδ"; //ɹ͖ͬ͞·Ͱʮ΄͛;͕ʯ } // ͖ͬ͞·ͰʮͽΑͽΑʂʯ public final static String MESSAGE = "͜Μʹͪʂ"; }
None
core_v2.jarʹஔ͖͑ͯɺframework.jarͦͷ··Ͱ package com.mrstar; import com.mrstar.versioning_problem.framework.Framework; public class Main { public
static void main(String[] args) { Framework.showTitle(); // Q1 ͳΜͯදࣔ͞ΕΔʁ Framework.showMessage(); // Q2 ͳΜͯදࣔ͞ΕΔʁ } }
Q1#ʮFramework.showTitle();ʯ • ʮ΄͛;͕ʯͬͯදࣔ͞ΕΔͱࢥ͏ਓʁ • ʮϝΠϯϖʔδʯͬͯදࣔ͞ΕΔͱࢥ͏ਓʁ
Q2#ʮFramework.showMessage();ʯ • ʮͽΑͽΑʂʯͬͯදࣔ͞ΕΔͱࢥ͏ਓʁ • ʮ͜Μʹͪʂʯͬͯදࣔ͞ΕΔͱࢥ͏ਓʁ
͑߹Θͤʂ
Q1#Framework.showTitle() ʮϝΠϯϖʔδʯͬͯදࣔ͞Ε·͢ ɹ Q2#Framework.showMessage() ʮͽΑͽΑʂʯͬͯදࣔ͞Ε·͢
͋ͬͯͨʁ
ղઆʂ
framework.jarͷFramework.java(࠶ܝ) package com.mrstar.versioning_problem.framework; import com.mrstar.versioning_problem.core.Core; public class Framework { private
Framework(){ } public static void showTitle() { System.out.println(Core.getTitle()); } public static void showMessage() { System.out.println(Core.MESSAGE); } }
͜ΕΛίϯύΠϧͨ݁͠Ռ͕ϙΠϯτʂ framework.jarͷதΛσίϯύΠϧ͢Δͱɽɽɽ
σίϯύΠϧͨ͠Framework.class package com.mrstar.versioning_problem.framework; import com.mrstar.versioning_problem.core.Core; public class Framework { private
Framework() {} public static void showTitle() { System.out.println(Core.getTitle()); } public static void showMessage() { System.out.println("ͽΑͽΑʂ"); } }
ؾ͍ͮͨʁ ͏ҰճΈͯΈ·͠ΐ͏ʂ
Framework.javaͷίʔυ package com.mrstar.versioning_problem.framework; import com.mrstar.versioning_problem.core.Core; public class Framework { private
Framework(){ } public static void showTitle() { System.out.println(Core.getTitle()); } public static void showMessage() { System.out.println(Core.MESSAGE); } }
σίϯύΠϧͨ͠Framework.class package com.mrstar.versioning_problem.framework; import com.mrstar.versioning_problem.core.Core; public class Framework { private
Framework() {} public static void showTitle() { System.out.println(Core.getTitle()); } public static void showMessage() { System.out.println("ͽΑͽΑʂ"); } }
͓Θ͔Γ͍͚ͨͩ·͔ͨ͠ʁ
σίϯύΠϧͨ͠.class Core.MESSAGEͷจࣈྻϦςϥϧͷʮͽΑͽΑʯ ຒΊࠐ·Ε͍ͯ·ͨ͠Ͷʂ
Core.MESSAGEͷจࣈྻϦςϥϧɺ ຒΊࠐ·Ε͍ͯ·ͨ͠Ͷʂ
public'sta+c'final'String'MESSAGE'(ུ) ຒΊࠐ·Ε͍ͯ·ͨ͠Ͷʂ
όʔδϣχϯάʂ ༻ޠࣗମC#ͷͷ
public'sta+c'final'intpublic'sta+c'final'String ΫϥεఆͷՕॴίϯύΠϧ͢Δͱ ɾจࣈྻϦςϥϧʹల։͞Ε·͢ʂ
framework.jar core_v1.jarʹґଘ͠Ϗϧυ͠·ͨ͠ ͦͷޙɺ࠶Ϗϧυ͠·ͤΜͰͨ͠Ͷ
framework.jarΛ࠶Ϗϧυ͢Δ·ͰɺFramewarkΫϥεͷ CoreΫϥεͷఆCore.MESSAGEΛ͍ͬͯΔՕॴ core_v1ͷʮͽΑͽΑʯͷ··Ͱ͢
૾͍ͯͩ͘͠͞ʂ ൛ͷϓϩάϥϜͰςετ༻ͷจݴ͕ग़͖ͯͯ͠·͏ͷΛʂ
((((ʀƅДƅ))))
·͊ͿͬͪΌ͚ ϐϤϐϤ ͱ͔ɺ͔Θ͍͍ΜͩΑͶ()
ʮ͜͜ʹࣹ৺ΛδϟϒδϟϒἤΔจݴʯ স͑ͳ͍Ͷ
ϙΠϯτ͓͞Β͍ public'sta+c'final'intΈ͍ͨͳఆ ίϯύΠϧ͢ΔͱϦςϥϧͱͯ͠ల։͞ΕΔ ※ϓϦϛςΟϒܕͱStringܕ
ʮframework.jar࠶Ϗϧυ͢ΓΌΑ͘Ͷʁʯ ·͊ͦ͏ͳΜ͚ͩͲɺJavaॻ͘ͳΒ͜Εͬͱ͍ͯ΄͍͠ ఆ͕ຒΊࠐ·ΕͯࢥΘ͵όάͷݪҼʹͳΔ͔Βʂ
͘ͳΓ·͕ͨࣗ͠ݾհ • ྄ࣨଠ • ࠷ॳJavaͰAndroid+(2016ͰJava6+orz) • ࠷ۙ·ͰC#ͰUnity+(2016ͰC#3.0(Ұ෦4.0)+orz) • ࠓTypeScriptͰNode.js+(JavaScriptΉ͍ͣͶ)
ʮόʔδϣχϯάɺكͳέʔεͳΜͰ͠ΐʁʯ
Θͨͦ͠͏ࢥ͍ͬͯͨ࣌ظ͕͋Γ·ͨ͠ɻ
ڈૺ۰͠·ͨ͠ Unity&+&Android&+&͋ΔࠂSDKͰ
·ͨ·ͨͰ͢ʂ ࠓAndroidܦݧऀ͕ର
AndroidͰpublic,sta0c,final,int ͳΑ͘͏ͭͬͯͳʙΜͩʂʁ
RΫϥε
R.layout.activity_mainͷΑ͏ͳϦιʔεID ϨΠΞτը૾ʹৼΒΕΔϦιʔεID(intͳఆ) RΫϥεͷύοέʔδ໊ΞϓϦͷύοέʔδ໊ʹ
RΫϥεͷϦιʔεIDར༻ྫ public class MainActivity extends Activity { @Override protected void
onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // ͜ΕʂʂʂϏϧυ͢ΔͱϦςϥϧʹ setContentView(R.layout.activity_main); } }
Unity&+&Android&+&͋ΔࠂSDKͰ όʔδϣχϯά͕ݪҼͷෆ۩߹ʹૺ۰ʂ
Unity+Android+͋ΔࠂSDKͷߏྫ ͜ΕUnity4·ͰͷΓํͰݱࡏඇਪ
None
ϨΠΞτͷXMLը૾ͳͲͷϦιʔε ্هϦιʔεΛ͏ࠂදࣔػೳͷjar (AndroidManifest.xml)
jarͷதͷΫϥεͰɺR.layout.activity_main Έ͍ͨͳϦιʔεIDͷఆɺϦςϥϧͱͯ͠ల։͞ΕͯΔΑͶʂ
UnityϏϧυ࣌ɺAndroidͷΞϓϦΛ࡞ΔͨΊ ৽ͨʹAndroidϓϩδΣΫτΛ࡞ͬͯ ͜ͷλΠϛϯάͰϦιʔεʹ࠶ϦιʔεID͕ৼΒΕ·͢
None
jarͷதͷΫϥεͰɺR.layout.activity_main Έ͍ͨͳϦιʔεIDͷఆɺϦςϥϧͱͯ͠ల։͞ΕͯΔΑͶʂ
͠
ϓϥάΠϯ͕ೋͭʹͳͬͨΒ
None
ϓϥάΠϯ͕ೋͭʹͳͬͨΒ
͜ͷঢ়ଶͰAndroidϓϩδΣΫτΛ࡞Γ ϦιʔεIDΛৼΓͨ͠Β
ϓϥάΠϯͷJarͷதͷϦςϥϧͱ Unity͕৽ͨʹ࡞ΔϦιʔεIDͷ͕ ͣΕΔʂ
࣮ߦ࣌Τϥʔʂ
λν͕ѱ͍
public'sta+c'final'int͕ϕλॻ͖͞Εͨ jarΛ࡞ͬͨSDK։ൃऀ͕ѱ͍ʂ jarͷதͷϦιʔεIDͱUnity͕࡞ΔAndroidϓϩδΣΫτͷϦιʔεIDͱ͕Ұக͠ͳ͍ʂ
࠷ѱɺඇৗʹΪϧςΟ
ͯͯ͞͞ɺ όʔδϣχϯά ཧղͯ͠Β͑·͔ͨ͠ʁ
ΈΜͳόʔδϣχϯάΛ Ҿ͖ىͦ͜͠͏ͳϥΠϒϥϦ ࡞ͬͪΌ͍͚·ͤΜΑʂ
ଋͳʂ
Javaͷόʔδϣχϯάͷ͠Α͔ͬ ɹ ྄ࣨଠ 2016/01/21()(ୈ1ճ(ΏΔΏΔߴઐΤϯδχΞLTେձ(at(FULLER