Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Javaのバージョニング問題の話しよっか
Search
RyotaMurohoshi
January 21, 2016
Technology
0
27
Javaのバージョニング問題の話しよっか
2016/01/21(木)に行われた第1回ゆるゆる高専エンジニアLT大会 at FULLER
の発表資料です。
RyotaMurohoshi
January 21, 2016
Tweet
Share
More Decks by RyotaMurohoshi
See All by RyotaMurohoshi
Tilemapのアップデートについて
ryotamurohoshi
0
55
Unityの合同同人誌や合同商業誌を書いてる僕は感想やレビューや評価が欲しい
ryotamurohoshi
0
560
Unity 2021.1での Unityパッケージの名称変更について
ryotamurohoshi
0
770
Odin Validationはいいぞ!
ryotamurohoshi
2
1k
Tilemapはいいぞ!2020 〜すごいぞ、プロジェクト専用拡張Brush〜
ryotamurohoshi
0
2.4k
Unityでも、新しいC#
ryotamurohoshi
0
1.4k
Riderはいいぞ!
ryotamurohoshi
1
3.6k
Riderのススメ〜俺はRiderここが好き〜
ryotamurohoshi
1
2.6k
Unity開発者に伝えたい.NETのこと
ryotamurohoshi
4
38k
Other Decks in Technology
See All in Technology
[Neurogica] 採用ポジション/ Recruitment Position
neurogica
1
120
Identity Management for Agentic AI 解説
fujie
0
470
2025-12-27 Claude CodeでPRレビュー対応を効率化する@機械学習社会実装勉強会第54回
nakamasato
4
960
_第4回__AIxIoTビジネス共創ラボ紹介資料_20251203.pdf
iotcomjpadmin
0
130
AWSインフルエンサーへの道 / load of AWS Influencer
whisaiyo
0
220
まだ間に合う! Agentic AI on AWSの現在地をやさしく一挙おさらい
minorun365
17
2.7k
AgentCore BrowserとClaude Codeスキルを活用した 『初手AI』を実現する業務自動化AIエージェント基盤
ruzia
7
1.5k
ESXi のAIOps だ!2025冬
unnowataru
0
350
「図面」から「法則」へ 〜メタ視点で読み解く現代のソフトウェアアーキテクチャ〜
scova0731
0
500
特別捜査官等研修会
nomizone
0
560
Oracle Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
2
200
事業の財務責任に向き合うリクルートデータプラットフォームのFinOps
recruitengineers
PRO
2
200
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Code Review Best Practice
trishagee
74
19k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
7.9k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Mind Mapping
helmedeiros
PRO
0
39
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
Six Lessons from altMBA
skipperchong
29
4.1k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
1
210
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
230
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
330
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