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
世界で戦うエンジニアになるために_公開用.pdf
Search
Fumihiko Shiroyama
March 21, 2019
18
45k
世界で戦うエンジニアになるために_公開用.pdf
Fumihiko Shiroyama
March 21, 2019
Tweet
Share
More Decks by Fumihiko Shiroyama
See All by Fumihiko Shiroyama
The world of Android wireless communications without Internet
srym
1
130
AWS Device FarmとCircleCIでAndroidのUIテストを自動化しよう
srym
1
5k
Spring BootをKotlinで作成しAmazon Elastic Container Service (ECS) で稼働させる
srym
6
1.9k
iOSDC_2019_DeviceFarm.pdf
srym
8
19k
Unit Testing in a Nutshell - DroidKaigi 2018
srym
11
15k
Clean Architecture & TDD
srym
1
3.7k
はやい・やすい・うまい!スタートアップでも使える Retrofit + RxJava で瞬間APIクッキングレシピ
srym
2
600
I/O 2017 Short Report
srym
0
300
Mock Partially using Dagger
srym
0
650
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Side Projects
sachag
452
42k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.4k
It's Worth the Effort
3n
183
28k
Six Lessons from altMBA
skipperchong
27
3.5k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
8.3k
Done Done
chrislema
181
16k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
Reflections from 52 weeks, 52 projects
jeffersonlam
347
20k
RailsConf 2023
tenderlove
29
940
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
Transcript
ੈքͰઓ͏ΤϯδχΞ ʹͳΔͨΊʹ May 2019 - Fumihiko Shiroyama
ࣗݾհ • നࢁ จ • 35ࡀ, 2ঁͷ • Senior Software
Engineer @nikkei • Android, SRE, ML etc...
Android
Android
ΞδΣϯμ • ถࠃϥϘͰͷ׆ಈ • ถࠃʹ͓͚ΔιϑτΣΞΤϯδχΞͷՁ • ถࠃͰιϑτΣΞΤϯδχΞʹͳΔʹ • ੈքͰઓ͏ΤϯδχΞʹͳΔͨΊʹ
ถࠃͷΛฉ্͘Ͱͷҙ
ถࠃͷΛฉ্͘Ͱͷҙ • ʮ୭͕ݴͬͯΔ͔ʯ͕ੌ͘ॏཁ • ཹֶੜɺறࡏһɺ݁ࠗۮऀɺݱब৬ • ͋͘·Ͱ͍ͪαϯϓϧʹա͗ͳ͍͜ͱʹཹҙ ৗʹϙδγϣϯτʔΫͷ ՄೳੑΛ͓ٙ͏
ถࠃϥϘͰͷ׆ಈ
ถࠃϥϘͰͷ׆ಈ • ݚڀ։ൃ • ৽نࣄۀ • ػցֶश • ϏδωεΞϥΠΞϯε •
৽ٕज़τϨϯυͷ࣋ͪؼΓ
৽نࣄۀ ৽نࣄۀʹؔͯ͠ ެ։ࢿྉ͔Βআ
ػցֶश
ػցֶश • τϥΠΞϧϢʔβ͕༗ྉձһʹͳΔ͔ʁ • ಡऀ͕ͬͱڵຯΛͭهࣄΛఏҊͰ͖Δ͔ʁ
ถࠃʹ͓͚Δ ιϑτΣΞΤϯδχΞͷՁ
ΫΠζɿถࠃͷΤϯδχΞ͕ ऩ2000ສΒ͏ͬͯϗϯτʁ
ਖ਼ղɿͻͱʹΑΔ
ਖ਼ղɿͻͱʹΑΔ ϕΠΤϦΞͰ ͋ͳ͕ͪେ͛͞Ͱͳ͍ʂ
ສԁ • https://www.levels.fyi/SE/Google/Facebook/Microsoft • L5(Senior Software Engineer): $363,870 • ※
Base Salary + Bonus + RSU
গΑɺେࢤΛ๊͚ʂ ˞Ձͷҧ͍ʹཹҙͯ͠Ͷʂ
ถࠃͰιϑτΣΞΤϯδχΞ ʹͳΔʹ
ΫΠζɿถࠃͰιϑτΣΞΤ ϯδχΞʹͳΔʹԿ͕ॏཁ͔
ਖ਼ղɿϏβ
ถࠃͰιϑτΣΞΤϯδχΞ ʹͳΔʹ 1.Ϗβ 2. ֶҐʢܭࢉػՊֶɺֶɺཧֶ etc...ʣ 3. ӳޠ
Ϗβ
Ϗβ • ϏβʂϏβʂϏβʂٕज़ऀͱ͔ͯͣ͘͠͠ ͳ͍ͷ͔ʂ • Ϗβͱʹ͔͘ॏཁɻ͍·ٕज़৬ͷՖܗ H-1B͕ͱΓʹ͘͘ͳ͍ͬͯΔɻ • ΈΜͳ͋ͷख͜ͷखͰϏβΛೖख͍ͯ͠Δɻ
ถࠃࡏࢿ֨Ұཡ • ถࢢຽݖऀʢΞϝϦΧࠃ੶ʣ • ถӬॅݖอ࣋ऀʢάϦʔϯΧʔυʣ • ֶੜϏβɺब࿑Ϗβ
ถࠃࡏࢿ֨Ұཡ • ถࢢຽݖऀʢΞϝϦΧࠃ੶ʣ • ถӬॅݖอ࣋ऀʢάϦʔϯΧʔυʣ • ֶੜϏβɺब࿑Ϗβ ΞϝϦΧͰ͏·ΕΔ͔ ͕ΞϝϦΧਓ ؼԽ͢ΔʢӬॅݖऔಘޙ̑Ҏ্ʣ
ถࠃࡏࢿ֨Ұཡ • ถࢢຽݖऀʢΞϝϦΧࠃ੶ʣ • ถӬॅݖอ࣋ऀʢάϦʔϯΧʔυʣ • ֶੜϏβɺब࿑Ϗβ ΞϝϦΧࢢຽݖऀͱ݁ࠗ ब࿑Ϗβ͔ΒӬॅݖਃ %JWFSTJUZ1SPHSBN
ʢ௨শ($͘͡ʣ
ओཁͳϏβҰཡ • H-1Bʢઐ৬Ϗβʣ • L-1A, L-1BʢறࡏһϏβʣ • E2ʢࢿՈϏβʣ • O-1ʢಥग़ͨ͠ೳྗऀʣ
• J-1ʢΠϯλʔϯʣ • F-1ʢֶੜϏβɻOPTͰΠϯλʔϯՄೳʣ
H-1B • ઐ৬ͷՖܗ • స৬Մೳ • άϦʔϯΧʔυਃ͍͢͠ • 2018ݱࡏɺਃ͠ࠐΈ͕ύϯΫ͓ͯ͠ΓநબͰ3ׂఔ •
৬ʹؔ࿈͢ΔֶҐ·࣮ͨܦݧ͕ඞཁ • 4݄ਃɺ10݄ब࿑ͱ͍͏ͷ͔͞Βܟԕ͞ΕΔ ౷ܭ্ɺτϥϯϓݖ ʢࠓͷॴʣ͋·Γؔͳ͍
L-1A, L-1B • றࡏһϏβ • స৬ෆՄೳ • άϦʔϯΧʔυਃ͍͢͠ • ଟࠃ੶اۀͷΦϑΟεؒͷҟಈʹΑ͘ΘΕΔ
• Ͳ͔͜ͷࢧࣾʹ1ࡏ੶ඞਢͳͷͰస৬࣌ͷϏβʹར ༻͢Δ͜ͱͰ͖ͳ͍ ଟࠃ੶اۀͰҟಈ͔Β($α ϙʔτ͕͍·࠷࣮֬ͳํ๏ ͱൃදऀߟ͍͑ͯΔ
E2 • ࢿՈϏβ • స৬ෆՄೳʢE2ಉ࢜Մೳʣ • άϦʔϯΧʔυਃ͠ʹ͍͘ʢඇҠຽϏβʣ • ถͱక݁ࠃͷࢿຊ͕50%Ҏ্ೖ͍ͬͯΔඞཁ͕͋Δ •
ਃ͕ૣ͍ɺࡏ੶͠Γ͕ͳ͍ɺߋ৽͕ӬٱతʹͰ͖Δ • ىۀՈɺࢿՈຊਓɺཧ৬ɺͦΕΒΛิࠤ͢Δٕज़৬ͳͲղऍ ͕͍ͷͰۙͭͱʹΛूΊ͍ͯΔ ͨͱ͑ຊຊ͕ࣾ͋Γɺւ֎ࢧ ࣾʢגࣜͷҎ্Λຊ͕ࣾอ࣋ʣ ͷҟಈͳͲͰར༻Ͱ͖Δ ݅ΛຬͨͤىۀՈຊਓ͕ถࠃʹઃ ཱͨ͠ձࣾͰಇͨ͘ΊʹਃՄೳ
O-1 • Պֶܳज़ɺεϙʔπͳͲͰಥग़ͨ͠࠽ೳΛ࣋ͭͷʹൃߦ ͞ΕΔϏβ • ΦϦϯϐοΫબखɺֶΦϦϯϐοΫɺཧΦϦϯϐοΫͳͲ • CGΫϦΤΠλʔϝσΟΞΞʔςΟετ • ஶ໊ͳจPhDอ࣋ऀɺॻ੶ͷग़൛ͳͲͰՄೳੑ͋Γ
• H-1B͕ػೳ͍ͯ͠ͳ͍ͷͰPhDอ࣋ऀτϥΠ͢ΔՁ͋Γ Ҡຽหޢ࢜ͷ࣍ୈ
J-1 • ΠϯλʔϯτϨΠχʔൃߦ͞ΕΔϏβ • ͕ͨͬͯ͠ߴઐ৬ऀ͕͜ΕΛར༻ͯ͠ઐ৬ʹब͘͜ ͱNG • ऩ্ݶ͕͋ͬͨΓࡏڐՄ͞ΕΔظ͕͔ؒͬͨΓ৭ʑ ੍ݶ͕͋Δ •
Ϗβຬྃޙ࠷2ؒถࠃ֎Ͱա͝͞ͳ͍ͱ࣍ͷब࿑Ϗ βӬॅݖΛਃͰ͖ͳ͍(Two-Year Rule) ˞ಛผͳ߹Λআ͘
F-1 • ֶੜϏβ • ถSTEMֶҐऔಘ͢Δ͜ͱͰOptional Practical Training (OPT) ͱͯ͠࠷େ3ؒΠϯλʔϯ͕Մೳ •
ถେֶΛଔۀͰ͖Δਓ͜ͷํ๏͕࠷Ұൠత • ݫ͍͠AdmissionɺߴֹͳֶඅɺΕΔ΄Ͳͷ՝ ςετΛΓӽ͑ͯଔۀ͠ͳ͍ͱ͍͚ͳ͍ʂ ˞ཁ͢Δʹཧܥͱ͍͏͜ͱ
ΫΠζɿελϯϑΥʔυେֶʹ ௨͏ʹ͍ؒ͘Β͔͔Δʁ
ਖ਼ղɿ$67000ʢ740ສԁʣ https://news.stanford.edu/2018/02/14/trustees-set-2018-19-tuition/ तۀྉສυϧ ྈඅͰສυϧ
ຊͷτοϓߍ ۃΊͯܙ·Ε͍ͯΔͷͩʂ ຊͷେֶग़Ͱ ϕΠΤϦΞͰ׆༂͍ͯ͠Δઌഐ ͨ͘͞Μ͍Δͧ
܅ͨͪʹͰ͖Δ͜ͱ • ΞϝϦΧਓͱ݁ࠗ͢ΔʢGCʣ • ถେֶʹਐֶ͢ΔʢOPTͰब৬ʣ • ຊͷେֶʹਐֶ͢ΔʢH-1BͰब৬ʣ • ຊͰਐֶɺଟࠃ੶اۀʹब৬͠ɺถࠃҟಈΛࢦ͢ʢL-1Bʣ •
ຊͰਐֶɺब৬ɺͦͷޙถࠃब৬Λࢦ͢ʢH-1BɺJ-1ɺO- 1ͳͲʣ
H-1Bνϟʔτ • https://medium.com/@sakamoto.kazuki/ 2017-12-demystifying-us-visa-f596529701a3
ֶҐ
ΞϝϦΧֶྺࣾձ ຊͷൺ͡Όͳ͍ͧʂ
େࣄͳ͜ͱ • େֶ໊͡Όͳͯ͘ઐ߈ • ֶ࢜ΑΓम࢜ɺम࢜ΑΓത࢜ • ઐੑΛຏ͘ɻӳޠग़དྷͯͨΓલ • େֶͷษڧେࣄ͚ͩͲɺब৬ͷͨΊͷτϨʔ χϯάผʢ˞ޙड़ʣ
ϏβͰؔ࿈ֶҐॏཁʂ
ืूҰྫ ઓͷʹ͢Βཱͯͳ͍͜ͱ
ιϑτΣΞΤϯδχΞͳΒ • ίϯϐϡʔλɾαΠΤϯεʢܭࢉػՊֶʣ • σʔλɾαΠΤϯεɺ౷ܭֶ • ֶɺཧֶ • ػցֶɺిࢠֶ
ίϯϐϡʔλɾαΠΤϯε
ίϯϐϡʔλɾαΠΤϯε • ΞϧΰϦζϜͱσʔλߏ • ܭࢉෳࡶੑཧ • ΦϖϨʔςΟϯάγεςϜ • ωοτϫʔΫ etc...
ΫΠζɿੈքਓޱશһͷ໊͔ Β୭͔ͷ໊લΛ୳͢ͷͲͷ͘ Β͍͕͔͔࣌ؒΔʁ ԯਓͱ͠Α͏ ͻͱΓௐΔͷʹඵ ͔͔Δͱ͠Α͏
ਖ਼ղɿ୳͠ํʹେ͖͘ґଘ͢Δ ώϯτɿΈΜͳࣙॻͲ͏ͬͯҾ͘ʁ
ઢܗ୳ࡧ • NݸͷཁૉΛઌ಄͔Βݟ͔ͭΔ·Ͱ୳͢ • 0.01 * 7000000000 / (60 *
60 * 24) / 2≒405 • ࠷ѱܭࢉྔ: O(N) ͻͱΓݟ͚ͭΔͷʹҎ্ʂ
ೋ୳ࡧ • ྻࡁΈͷNݸͷཁૉΛͣͭ୳͢ • Math.log2(7000000000) * 0.01 / 2≒0.16ඵ •
࠷ѱܭࢉྔ: O(logN) ൺʹͳΒͳ͍ʂʂʂ ˞ྻͷίετ֓Ͷ0 /MPH/
ֶ
ֶ ࡾ֯ؔඞཁͳ͍ʂ
ֶ ࡾ֯ؔඞཁͳ͍ʂ
ࡾ֯ؔ • ਤܗͷճసɺԁӡಈ • ճసߦྻʢઢܗʣ • ϕΫτϧͷίαΠϯྨࣅ Θͳ͍ͱ͜ΖΛڍ͛Δํ͕ Ή͔͍͙ͣ͠Β͍ͩͧʂ
ඍ • Ճ • يಓ༧ଌɺఱؾγϛϡϨʔγϣϯ • ػցֶशͷଛࣦؔͷ࠷খԽ ͍·ྲྀߦΓͷػցֶशͰ ͍·͘Δͧʂ
ӳޠ
ΫΠζɿੈքͰઓ͏ͨΊʹඞཁ ͳӳޠྗͬͯͲͷ͘Β͍ͩΖ͏
ਖ਼ղɿx→∞ ͍͘ΒͰ͖ͯଟ͗͢Δͱ͍ ͏͜ͱͳ͍ʂ
ӳޠ • ӳޠ͕Ͱ͖Δ͚ͩͰউෛʹͳΒͳ͍ • Կ͔֬ͨΔઐΛ্࣋ͬͨͰӳޠ͕Ͱ͖Δ͜ ͱڧ͍ثʹͳΔ • TOEIC900ͱ͔Կͷҙຯͳ͍ ཹֶ͢ΔͳΒ50&'-ͱ͔ ҙຯ͕͋ΔͧʂؤுΕʂ
ൃදऀͷମײͰɺ50&*$Ͱݱͷࡀࣇ͙Β͍ͩͳʂ
ੈքͰઓ͏ΤϯδχΞʹ ͳΔͨΊʹ
ੈքͰઓ͏ΤϯδχΞʹͳΔͨΊʹ • কདྷʹ͍ͭͯߟ͑Α͏ • ເ͔Βٯࢉͯ͠ܭըΛཱͯΑ͏ • ಛʹු͔ͳ͍߹ͱʹ͔͘ษڧ͠Α͏ʂ ֶͱӳޠ͕͓͢͢Ίͩͳʂ ͦΕΒ͕ෆཁͳ৬ۀͳΜͯͳ͍ʂ
ϓϩάϥϛϯάඞཁ͔ • ඞͣͦ͠͏Ͱͳ͍ͱൃදऀߟ͑Δ • खஈΛ֮͑ΔΑΓɺຊ࣭Λཧղ͠Α͏ • ڊࢹతͳ؍Ͱޮͷྑ͍ΞϧΰϦζϜσʔ λߏ͕બΕɺݴޠͷҧ͍ͳͲ͍͞͞ͳ ͷͩ
ίʔσΟϯάςετରࡦ • ϕΠΤϦΞͷτοϓاۀͰաࠅͳίʔσΟ ϯάςετ͕՝͞ΕΔ • େֶͷ༰ʹ४ڌ͢Δ͕ɺແରࡦͰಥഁ͢Δ ͷෆՄೳ • AtCoder, LeetCodeͳͲ͕Φεεϝ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ
Thanks • ͍Β͢ͱ • https://www.irasutoya.com/
໔ࣄ߲ • ຊεϥΠυͷ༰ൃදऀͷಠࣗௐࠪͰ͢ɻ ಛʹϏβʹؔͯ͠ඞͣҠຽหޢ࢜ʹ૬ஊ͠ ͍ͯͩ͘͞ɻ • ຊεϥΠυͷ༰Λ࣮ફͨ͜͠ͱʹΑΔ తɺਵతɺ݁Ռతɺؒతɺ͋Δ͍േ తͳଛɺܦඅɺଛࣦɺ·ͨ࠴ʹ͍ͭͯɺ ͍͔ͳΔෛ͍͔Ͷ·͢ɻ