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
goshushunsuke
April 23, 2019
Business
480
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
AI時代、ホワイトワーカーは結局どうすれば良いのか?環境解説とOODA型キャリア戦略
makaibito
5
440
コンテキストをデータとして扱うDynatraceのAIアーキテクチャ
sukatsu1222
1
160
Crisp Code inc.|わたしたちの事例 / 実績 - Works
so_kotani
0
2.4k
Infcurion Company Deck
infcurion
2
69k
「仕訳」から「取引」へ(fAD2026)
shunsuke_takeuchi
PRO
1
1.5k
FY2026.6 Impact Report JP
mercari_inc
1
130k
アッテル会社紹介資料/culture deck
attelu
11
17k
カンパニーデック_260910.pdf
kojima1
0
580
クリヤマホールディングス㈱採用資料
uemura2024
0
9.3k
株式会社ナーシング_採用資料
hr1nursing
0
140
Sasuke Financial Lab 会社概要
sasukefinanciallab
0
680
Podpora KOVY | 24. 9. 2026
ggfs
PRO
0
430
Featured
See All Featured
The Curse of the Amulet
leimatthew05
3
16k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
590
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
950
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.7k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
400
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
320
YesSQL, Process and Tooling at Scale
rocio
174
15k
Unsuck your backbone
ammeep
672
58k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
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!!
ご清聴 ありがとう ございました