Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Javaあるある
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
goshushunsuke
April 23, 2019
Business
470
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Javaあるある
goshushunsuke
April 23, 2019
Other Decks in Business
See All in Business
malna-recruiting-pitch
malna
0
26k
どうせなら「楽しい仕事」をする
kozotaira
0
320
匠技研工業 採用紹介資料
takumiengineering
0
230
Cobe Associe: Who we are? /コンサル・市場調査・人材紹介のCobe Associe
nozomi
6
21k
課題発見から始めるプロダクト密着型TA組織立ち上げ 〜小規模TAチームが3Dアセットの生産性を倍にした方法〜
gree_tech
PRO
0
900
PMは、ブランドマネージャーになる。 / PM to BrandManager
sninomi1018
1
270
キャリアを紡ぐ透明性〜肩書に縛られない転職を実現する/Transparency Weaving Your Career
ikuodanaka
3
1.1k
なんとかする力 〜 Android エンジニアからマネージャー、さらにその先へ? 〜
m_coder
2
450
PMよ、エゴイストになれ!
suh1101
0
200
会社説明資料
xinghr
0
3.1k
データマネジメント研修(デジタル庁)
haseryo
22
27k
20260828_15minLT_データ分析10倍時代を考える
doradora09
PRO
0
950
Featured
See All Featured
Writing Fast Ruby
sferik
630
63k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
890
Docker and Python
trallard
47
4.2k
Git: the NoSQL Database
bkeepers
PRO
432
67k
Designing Experiences People Love
moore
143
24k
Product Roadmaps are Hard
iamctodd
55
13k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
660
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
230
Build your cross-platform service in a week with App Engine
jlugia
234
19k
The Pragmatic Product Professional
lauravandoore
37
7.4k
How to build a perfect <img>
jonoalderson
1
6k
Documentation Writing (for coders)
carmenintech
77
5.5k
Transcript
JAVAあるある and factory株式会社 江州俊亮
自己紹介 • 名前:江州 俊亮 • 所属:and factory株式会社 • 職種:サーバサイドエンジニア –
アプリのバックエンド – 社内向けシステムの構築 • RPG:1年 • Java:10年 • Ruby:2年 • Go:5ヶ月(←今ココ!) • 研究とかで触ったもの:R言語,python
一番長くやってたJavaについて あれこれ語るとです。
まずは言語比較(一部私見) • JAVA,Go,Rubyでよくある比較 JAVA Go Ruby 生産性 △ ◦ ◦
経験者採用容易性 ◎ × △ 実行速度 ◦ ◎ △ コンパイル速度 × ◎ ◎ 分散処理 △ ◎ ◦ コーディングの統 一容易性 ◎ ◦ △
Javaのメリット • なんといっても経験者の豊富さ。 • コーディングガイドラインを厳格に決めればある程度の統一 性も担保され開発プロジェクト途中からでも参入しやすい。 • 以下のように流動的に参画メンバーが変わるようなプロジェ クトではJavaが圧倒的に優位(逆にGOは人員確保が超ハード。 絶賛募集中!!)
→新規プロジェクト発足 →人が足りない →新規採用、協力会社から人員確保 →開発スタート
プログラミング言語ランキング TIOBE社が発表するプログラミング言語ランキングでは、2001年のリリース以来、2015年を除い て、Javaが常に第1位を維持しています。このことからも、世界的にJavaのニーズは安定して高い ことが伺えます。
Javaのデメリット •単純にコード記述量が多い •コンパイルが遅い →前職のとあるWebサービスではモンスターボリュームだった為 ローカルPCで普通にビルドすると1時間近くかかるという事態に。 (_□_;)!!
実際にjavaを書いてみる 整数nが与えられたとき、0からnの間の全ての数を書くのに必要とされる「1」の数を 返す関数があります。たとえば、『f(16)=9』になります。また、『f(1)=1』に注意。 『f(n)=n』となるような、2番目に大きいnを求めなさい。 某G社様入社問題
実際にjavaを書いてみる package test; public class SampleForLt { /** * @param
args */ public static void main(String[] args) { int ret =0; for(int i=1;i<9999999;i++){ ret +=("(σ´・∀・`)σ" + i + "乁( •ω•乁)").split("1").length-1; if(i <= ret){ if(i != 1) { System.out.println(ret); break; } } } } } 出力結果:199981 整数nが与えられたとき、0からnの間の全ての数を書くのに必要とされる「1」の数を 返す関数があります。たとえば、『f(16)=9』になります。また、『f(1)=1』に注意。 『f(n)=n』となるような、2番目に大きいnを求めなさい。
実際にjavaを書いてみる package test; public class SampleForLt { /** * @param
args */ public static void main(String[] args) { int ret =0; // いくつでヒットするか分からないのでとりあえず大きい数を入れておく。本来なら入力からとれるようにするべきだが今回は簡単の為割愛 for(int i=1;i<9999999;i++){ // 顔文字は無駄です。絶対にやめましょう。 // 例えばi=1の時split(“1”)で分割すると "(σ´・∀・`)σ1乁( •ω•乁)"が"(σ´・∀・`)σ1”と”乁( •ω•乁)”の2つの配列になる // そのlength-1をとればiに含まれる1の数を導ける。 ret +=("(σ´・∀・`)σ" + i + "乁( •ω•乁)").split("1").length-1; if(i <= ret){ if(i != 1) { // 2番目に大きいnを求めよとのことなのでi=1は除去 System.out.println(ret); break; // 2番目に大きいnを求めよとのことなので3番目以降は不要のためbreakして処理を終わらせる。 } } } } } 解説
実際にjavaを書いてみる 10未満の自然数のうち、3もしくは5の倍数になっているものは3, 5, 6, 9の4つがあり, これらの合計は 23 になる。同じようにして、1000 未満の 3
か 5 の倍数になってい る数字の合計を求めよ。 よくある問題
実際にjavaを書いてみる package test; public class SampleForLt2 { /** * @param
args */ public static void main(String[] args) { int total = 0; for (int i = 1; i < 1000; i++) { if (i % 3 == 0 || i % 5 == 0) { total += i; } } System.out.println(total); } } 出力結果:233168 10未満の自然数のうち、3もしくは5の倍数になっているものは3, 5, 6, 9の4つがあり, これらの合計は 23 になる。同じようにして、1000 未満の 3 か 5 の倍数になってい る数字の合計を求めよ。
実際にjavaを書いてみる package test; public class SampleForLt2 { /** * @param
args */ public static void main(String[] args) { int total = 0; for (int i = 1; i < 1000; i++) { // 1から999までループさせて3又は5で割った時の剰余が0の時totalに足しこんでいけば良い。 if (i % 3 == 0 || i % 5 == 0) { total += i; } } System.out.println(total); } } 解説
実際にjavaを書いてみる package test; public class SampleForLt2 { /** * @param
args */ public static void main(String[] args) { int total = 0; for (int i = 1; i < 1000; i++) { if (i % 3 == 0 || i % 5 == 0) { total += i; } } System.out.println(total); } } package test; import java.util.stream.IntStream; public class SampleForLt2 { /** * @param args */ public static void main(String[] args) { int total = IntStream.range(1, 1000).filter(i -> i % 3 == 0 || i % 5 == 0).sum(); System.out.println(total); } } java8から使えるラムダ式で書くと。。 1ステップで書けちゃう!(゚ロ゚屮)屮 でも慣れないとパッと見何してるか分かりにくいというのはありけり。。 私はjava7が長かったので左のが読みやすくて好きだったりします。
Javaで良く言われてるやつへの所感 ▪学習コストが高くな~い( ,,`・ ω´・)? これは仕方がないのかなと思います。 Javaは、ある程度プログラミングの全体像を理解していないと システム設計がスムーズにできない為知識の幅と深さがより 求められるイメージです。 ▪生産性が低くな~い( ,,`・
ω´・)? これについてはそうは思いません。確かに記述量は多めですが その分標準機能やIDEでできることが充実しているし、Webでの 情報量はぶっちぎりでNo1なので記述量=生産性とはならない かと思っています。
最後に ▪言語に関していえばトレンドもあるし色々触ってみるのが良いと 思っています。 なんでこの言語◦◦がないんだよ~ヽ(`Д´#)ノ とか思いながら 触ったことない言語で開発するの結構好きです(*´∀`*) Enjoy the work!!
ご清聴 ありがとう ございました