SlideShare una empresa de Scribd logo
1 de 23
Descargar para leer sin conexión
生粋のRubyistが
Javaを好きになった理由
2016/4/28
株式会社ユーザベース
SPEEDA Techチーム 北内 啓
1
Java開発最前線 - UZABASE Meetup#2
● 株式会社ユーザベース SPEEDAエンジニア
○ 2014年11月入社
● アルゴリズム関連の開発を主に担当
○ SPEEDAの各種データの検索
○ 企業の業界推定
○ 企業どうしのマッチング(名寄せ)
など
自己紹介
2
経験したプログラミング言語とエディタ
プログラミング言語 エディタ、開発環境
1982 BASIC BASIC
1986 Z80アセンブリ言語 ZEDA (Z80開発環境)
1990 C MicroEmacs
1990 dBASE VZ Editor
1993 Perl Nemacs, Mule
1999 C++ Mule
2005 Ruby Emacs
2009 JavaScript Emacs
2014 Java Eclipse
少しだけ: Python, PHP, R, Emacs Lisp, Bourne Shell, AWK
3
Rubyの好きなところ
4
1. 短く書ける
● 動的型付き言語なので型の記述が不要
● 便利なメソッドがたくさん用意されている
user_names = [
{ name: "Akira", age: 24 },
{ name: "Bob", age: 30 },
{ name: "Chris", age: 28 },
]
IO.foreach("hoge.txt") do |line|
...
end
last_users = users.last(2)
2. 美しく書ける
● メソッドチェインなど
Rubyの好きなところ
5
users.select {|age| age < 30 }.sort_by(&:age).map(&:name)
File.open("hoge.txt", "w") do |f|
records.each do |columns|
f.puts columns * "t"
end
end
3. 柔軟性が高い
● モンキーパッチ
Rubyの好きなところ
6
class Array
def average
self.inject(&:+).to_f / self.size
end
end
> [3, 1, 5].average
=> 3
● 「Java言語で学ぶデザインパターン入門」を読んでJavaの
ソースコードを見た
● 「Effective Java」をざっと読んだ
● SI企業で事業部がJavaで開発するのを横目で見ていた
ユーザベース入社前のJavaの知識
7
1. 色んな意味で固い
● 主に大規模SIで使われている
● 習得がわりと簡単(Cライクでポインタがない)
● 誰でもわりと高品質なコードを書ける
ユーザベース入社前のJavaの印象
8
2. コードが長い、冗長
ユーザベース入社前のJavaの印象
言語 標準出力への書き込み main関数/メソッド
Ruby puts "Hello" 無し。または
if $0 == __FILE__ ... end
C puts("Hellon"); void main(int argc, char
**argv) { ... }
Java System.out.println
("Hellon");
public static void main
(String args[]) { ... }
9
[その他] getter, setter, 大量のimport...
3. いろいろ面倒
● 1クラス1ファイル。しかもクラスの数が多い
● ディレクトリがすごいことになっている
src/main/java/com/uzabase/speeda/web/industry/Industr
yPanel.java
● Strutsは様々な設定をXMLで書くので面倒らしい
ユーザベース入社前のJavaの印象
10
2014年11月 ユーザベース入社
JDK, Eclipse, Maven, Tomcatなどをインストール、設定
ユーザベースに入社して…
11
1週間後…
ユーザベースに入社して…
12
Javaけっこういいじゃん!
ユーザベースに入社して…
13
1. いくつか誤解していた
2. 周辺ツールでカバーできる問題点が多い
3. Rubyにはないよさがある
分かったこと
14
● 主に大規模SIで使われている?
ベンチャーやOSSなどでも多数使われている
● 習得がわりと簡単(Cライクでポインタがない)?
基本的な文法は簡単だが、スレッド処理、機能が豊富なライブラリや
ウェブフレームワークなど覚えるものも多い
● 誰でもわりと高品質なコードを書ける?
クラス設計に問題があると読みにくい、バグが発生しやすい、拡張しにく
いコードになる。
DRY、命名、メソッドの単位などプログラミング言語共通の問題がたくさ
んある
いくつか誤解していた
15
● コードが長い
Eclipseテンプレート機能を使うと簡単に入力できる
sysout → [Ctrl+Space] → System.out.println();
● クラスやファイルの数が多い、ディレクトリ階層が深い
Eclipseでクラス名を指定して簡単にファイルを開ける、メニューから簡
単にクラスを作成できる
● getter, setterを書くのが面倒
Lombokを使えば楽 (@Getter, @Setter, @Value, @Dataなど)
● 大量のimport
Eclipseが自動的に挿入してくれる
周辺ツールでカバーできる問題点が多い
16
● コンパイラ言語で静的型付きなのでバグに気づきやすい
○ しかも入力時にEclipseが指摘してくれる
● 安定している
○ Javaやライブラリにバグが少ない
○ 下位互換性が高い(Javaのバージョン更新時にライブラリが使えな
くなることがほとんどない)
● ライブラリ、周辺ツールが豊富
● EclipseなどのIDEの入力機能、リファクタリング機能が強力
Rubyにはないよさがある
17
● クラス名、メソッド名、変数名などの補完、リネーム
● メソッドの抽出、シグネチャの変更(引数の順番など)
● ローカル変数への割り当て、抽出、インライン化
Eclipseの入力機能、リファクタリング機能
18
Arrays.asList("Taro", "Akira");
       ↓⌘2 L
List<String> asList = Arrays.asList( "Taro", "Akira");
       ↓⌘1 [Extract to local variable]
String string = "Taro";
List<String> asList = Arrays.asList( string, "Akira");
気になることも多い…
とはいえ
19
1. やっぱりコードが長くなる
例: nullかもしれないリストをmapするコード
<Ruby>
<Java>
やっぱり気になること
20
List<String> encodedIds =
Optional
.ofNullable(ids)
.orElse(Collections.emptyList())
.stream()
.map(id -> IdEncoder.encode(id))
.collect(toList());
(ids || []).map {|id| IdEncoder.encode(id) }
3. 文字列処理が面倒(ex. 正規表現)
やっぱり気になること
21
Ruby Java
マッチするか? s =~ /<.*?>/ s.matches(".*<.*?>.*");
最初にマッチした
箇所の取得
s[/<.*?>/] Pattern p = Pattern.compile("<.*?
>");
Matcher m = p.matcher(s);
if (m.find()) {
String tag = m.group();
}
マッチする箇所を
全部取得
s.scan(/<.*?
>/)
上記のコードで while(m.find()) を使う
3. クラス名が衝突すると面倒
やっぱり気になること
22
/** 検索APIの開発 */
// Elasticsearch で検索
org.elasticsearch.action.search.SearchResponse esRes = execute(req);
org.elasticsearch.search.SearchHits esHits = esRes.getHits();
...
// 検索結果を返す
SearchHits hits = convertSearchHits(esHits);
SearchResponse res = new SearchResponse(esHits, ...);
● Javaを知って以前よりも好きになった
○ ユーザベース入社前はJavaのことをあまり知らなかった
○ 今はJavaを書いていてわりと楽しい
● ただし、不満もある
○ 今後のさらなるJavaの進化に期待
○ Scala, Kotlinなど他のJVM言語にも期待
まとめ
23

Más contenido relacionado

La actualidad más candente

軽量言語メインの 文系エンジニアだった自分が Scalaのシステム開発に携わることになった経緯 @shigemk2
軽量言語メインの 文系エンジニアだった自分が Scalaのシステム開発に携わることになった経緯 @shigemk2軽量言語メインの 文系エンジニアだった自分が Scalaのシステム開発に携わることになった経緯 @shigemk2
軽量言語メインの 文系エンジニアだった自分が Scalaのシステム開発に携わることになった経緯 @shigemk2Michihito Shigemura
 
Yii Framework 2.0 いま求められるRAD標準とは #phpkansai
Yii Framework 2.0 いま求められるRAD標準とは #phpkansaiYii Framework 2.0 いま求められるRAD標準とは #phpkansai
Yii Framework 2.0 いま求められるRAD標準とは #phpkansaiHisateru Tanaka
 
上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと〜戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...
上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと〜戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと〜戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...
上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと〜戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...WebSig24/7
 
VyOSで作るIPv4 Router/IPv6 Bridge
VyOSで作るIPv4 Router/IPv6 BridgeVyOSで作るIPv4 Router/IPv6 Bridge
VyOSで作るIPv4 Router/IPv6 BridgeKLab Inc. / Tech
 
実践DevOps!SonicGarden流Herokuガチ運用術!SonicGarden Study #09
実践DevOps!SonicGarden流Herokuガチ運用術!SonicGarden Study #09実践DevOps!SonicGarden流Herokuガチ運用術!SonicGarden Study #09
実践DevOps!SonicGarden流Herokuガチ運用術!SonicGarden Study #09Masahiro Nishimi
 
組織の問題も解決するアーキテクチャ BackendsForFrontends
組織の問題も解決するアーキテクチャ BackendsForFrontends組織の問題も解決するアーキテクチャ BackendsForFrontends
組織の問題も解決するアーキテクチャ BackendsForFrontendsPIXTA Inc.
 
NuxtJS + SSRで作ったGREE Tech Conference 2020
NuxtJS + SSRで作ったGREE Tech Conference 2020NuxtJS + SSRで作ったGREE Tech Conference 2020
NuxtJS + SSRで作ったGREE Tech Conference 2020gree_tech
 
株式会社サイバーエージェント アドテクスタジオの技術と開発
株式会社サイバーエージェント アドテクスタジオの技術と開発株式会社サイバーエージェント アドテクスタジオの技術と開発
株式会社サイバーエージェント アドテクスタジオの技術と開発Naoyuki Yamada
 
エンジニア採用ヤバイ! PHPカンファレンス関西 懇親会LT
エンジニア採用ヤバイ! PHPカンファレンス関西 懇親会LTエンジニア採用ヤバイ! PHPカンファレンス関西 懇親会LT
エンジニア採用ヤバイ! PHPカンファレンス関西 懇親会LTTomoyuki Sugita
 
中の下のエンジニアを脱出するための仕事術
中の下のエンジニアを脱出するための仕事術中の下のエンジニアを脱出するための仕事術
中の下のエンジニアを脱出するための仕事術Noriaki Kadota
 
10年以上Java屋してたおっさんが 今年からフロントエンジニアやっている話
10年以上Java屋してたおっさんが 今年からフロントエンジニアやっている話10年以上Java屋してたおっさんが 今年からフロントエンジニアやっている話
10年以上Java屋してたおっさんが 今年からフロントエンジニアやっている話takehiko yoshida
 
Go (5) JAZUG 関西とゆかいな仲間たち的な
Go (5) JAZUG 関西とゆかいな仲間たち的なGo (5) JAZUG 関西とゆかいな仲間たち的な
Go (5) JAZUG 関西とゆかいな仲間たち的なKeiji Kamebuchi
 
非エンジニアのためのこれだけは押さえておきたいWEBサービスの基礎技術
非エンジニアのためのこれだけは押さえておきたいWEBサービスの基礎技術非エンジニアのためのこれだけは押さえておきたいWEBサービスの基礎技術
非エンジニアのためのこれだけは押さえておきたいWEBサービスの基礎技術div Inc
 
手っ取り早くプロジェクトをなんとかしたい人のためのnanapi流ツール活用術~WebSig会議 vol.34「Webディレクター必見!プロジェクトを成功に...
手っ取り早くプロジェクトをなんとかしたい人のためのnanapi流ツール活用術~WebSig会議 vol.34「Webディレクター必見!プロジェクトを成功に...手っ取り早くプロジェクトをなんとかしたい人のためのnanapi流ツール活用術~WebSig会議 vol.34「Webディレクター必見!プロジェクトを成功に...
手っ取り早くプロジェクトをなんとかしたい人のためのnanapi流ツール活用術~WebSig会議 vol.34「Webディレクター必見!プロジェクトを成功に...WebSig24/7
 
自動化の下ごしらえ
自動化の下ごしらえ自動化の下ごしらえ
自動化の下ごしらえakira6592
 
もしSIerのエンジニアがSRE本を読んだら
もしSIerのエンジニアがSRE本を読んだらもしSIerのエンジニアがSRE本を読んだら
もしSIerのエンジニアがSRE本を読んだらTomoki Ando
 
5分で分かるサイボウズのSRE
5分で分かるサイボウズのSRE5分で分かるサイボウズのSRE
5分で分かるサイボウズのSREuchan_nos
 
私はこうやってSlackを社内で流行らせました
私はこうやってSlackを社内で流行らせました私はこうやってSlackを社内で流行らせました
私はこうやってSlackを社内で流行らせましたNHN テコラス株式会社
 
ドメイン駆動設計 at DDD.rb #5
ドメイン駆動設計 at DDD.rb #5ドメイン駆動設計 at DDD.rb #5
ドメイン駆動設計 at DDD.rb #5啓 杉本
 

La actualidad más candente (20)

軽量言語メインの 文系エンジニアだった自分が Scalaのシステム開発に携わることになった経緯 @shigemk2
軽量言語メインの 文系エンジニアだった自分が Scalaのシステム開発に携わることになった経緯 @shigemk2軽量言語メインの 文系エンジニアだった自分が Scalaのシステム開発に携わることになった経緯 @shigemk2
軽量言語メインの 文系エンジニアだった自分が Scalaのシステム開発に携わることになった経緯 @shigemk2
 
Yii Framework 2.0 いま求められるRAD標準とは #phpkansai
Yii Framework 2.0 いま求められるRAD標準とは #phpkansaiYii Framework 2.0 いま求められるRAD標準とは #phpkansai
Yii Framework 2.0 いま求められるRAD標準とは #phpkansai
 
上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと〜戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...
上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと〜戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと〜戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...
上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと〜戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...
 
VyOSで作るIPv4 Router/IPv6 Bridge
VyOSで作るIPv4 Router/IPv6 BridgeVyOSで作るIPv4 Router/IPv6 Bridge
VyOSで作るIPv4 Router/IPv6 Bridge
 
実践DevOps!SonicGarden流Herokuガチ運用術!SonicGarden Study #09
実践DevOps!SonicGarden流Herokuガチ運用術!SonicGarden Study #09実践DevOps!SonicGarden流Herokuガチ運用術!SonicGarden Study #09
実践DevOps!SonicGarden流Herokuガチ運用術!SonicGarden Study #09
 
組織の問題も解決するアーキテクチャ BackendsForFrontends
組織の問題も解決するアーキテクチャ BackendsForFrontends組織の問題も解決するアーキテクチャ BackendsForFrontends
組織の問題も解決するアーキテクチャ BackendsForFrontends
 
NuxtJS + SSRで作ったGREE Tech Conference 2020
NuxtJS + SSRで作ったGREE Tech Conference 2020NuxtJS + SSRで作ったGREE Tech Conference 2020
NuxtJS + SSRで作ったGREE Tech Conference 2020
 
株式会社サイバーエージェント アドテクスタジオの技術と開発
株式会社サイバーエージェント アドテクスタジオの技術と開発株式会社サイバーエージェント アドテクスタジオの技術と開発
株式会社サイバーエージェント アドテクスタジオの技術と開発
 
エンジニア採用ヤバイ! PHPカンファレンス関西 懇親会LT
エンジニア採用ヤバイ! PHPカンファレンス関西 懇親会LTエンジニア採用ヤバイ! PHPカンファレンス関西 懇親会LT
エンジニア採用ヤバイ! PHPカンファレンス関西 懇親会LT
 
中の下のエンジニアを脱出するための仕事術
中の下のエンジニアを脱出するための仕事術中の下のエンジニアを脱出するための仕事術
中の下のエンジニアを脱出するための仕事術
 
10年以上Java屋してたおっさんが 今年からフロントエンジニアやっている話
10年以上Java屋してたおっさんが 今年からフロントエンジニアやっている話10年以上Java屋してたおっさんが 今年からフロントエンジニアやっている話
10年以上Java屋してたおっさんが 今年からフロントエンジニアやっている話
 
Go (5) JAZUG 関西とゆかいな仲間たち的な
Go (5) JAZUG 関西とゆかいな仲間たち的なGo (5) JAZUG 関西とゆかいな仲間たち的な
Go (5) JAZUG 関西とゆかいな仲間たち的な
 
非エンジニアのためのこれだけは押さえておきたいWEBサービスの基礎技術
非エンジニアのためのこれだけは押さえておきたいWEBサービスの基礎技術非エンジニアのためのこれだけは押さえておきたいWEBサービスの基礎技術
非エンジニアのためのこれだけは押さえておきたいWEBサービスの基礎技術
 
手っ取り早くプロジェクトをなんとかしたい人のためのnanapi流ツール活用術~WebSig会議 vol.34「Webディレクター必見!プロジェクトを成功に...
手っ取り早くプロジェクトをなんとかしたい人のためのnanapi流ツール活用術~WebSig会議 vol.34「Webディレクター必見!プロジェクトを成功に...手っ取り早くプロジェクトをなんとかしたい人のためのnanapi流ツール活用術~WebSig会議 vol.34「Webディレクター必見!プロジェクトを成功に...
手っ取り早くプロジェクトをなんとかしたい人のためのnanapi流ツール活用術~WebSig会議 vol.34「Webディレクター必見!プロジェクトを成功に...
 
自動化の下ごしらえ
自動化の下ごしらえ自動化の下ごしらえ
自動化の下ごしらえ
 
もしSIerのエンジニアがSRE本を読んだら
もしSIerのエンジニアがSRE本を読んだらもしSIerのエンジニアがSRE本を読んだら
もしSIerのエンジニアがSRE本を読んだら
 
5分で分かるサイボウズのSRE
5分で分かるサイボウズのSRE5分で分かるサイボウズのSRE
5分で分かるサイボウズのSRE
 
161218 cybozu SRE
161218 cybozu SRE161218 cybozu SRE
161218 cybozu SRE
 
私はこうやってSlackを社内で流行らせました
私はこうやってSlackを社内で流行らせました私はこうやってSlackを社内で流行らせました
私はこうやってSlackを社内で流行らせました
 
ドメイン駆動設計 at DDD.rb #5
ドメイン駆動設計 at DDD.rb #5ドメイン駆動設計 at DDD.rb #5
ドメイン駆動設計 at DDD.rb #5
 

Destacado

Reactive programming with Apache Wicket
Reactive programming with Apache WicketReactive programming with Apache Wicket
Reactive programming with Apache WicketRyuhei Ishibashi
 
生産性を高めてハッピーライフを ~2016/06/02 UZABASE Meet Up ~
生産性を高めてハッピーライフを ~2016/06/02 UZABASE Meet Up ~生産性を高めてハッピーライフを ~2016/06/02 UZABASE Meet Up ~
生産性を高めてハッピーライフを ~2016/06/02 UZABASE Meet Up ~Yasushi Nakashima
 
SPEEDAインフラ運営
SPEEDAインフラ運営SPEEDAインフラ運営
SPEEDAインフラ運営yasushi_kanaya
 
GCPでCI環境を構築する
GCPでCI環境を構築するGCPでCI環境を構築する
GCPでCI環境を構築するToshihumi Anan
 
企業・業界データサービスSPEEDAの開発における複雑怪奇なデータとの格闘
企業・業界データサービスSPEEDAの開発における複雑怪奇なデータとの格闘企業・業界データサービスSPEEDAの開発における複雑怪奇なデータとの格闘
企業・業界データサービスSPEEDAの開発における複雑怪奇なデータとの格闘Akira Kitauchi
 
mecab-ipadic-NEologd の効果的な使い方
mecab-ipadic-NEologd の効果的な使い方mecab-ipadic-NEologd の効果的な使い方
mecab-ipadic-NEologd の効果的な使い方Toshinori Sato
 
リアルタイム分析サービス『たべみる』を支える高可用性アーキテクチャ
リアルタイム分析サービス『たべみる』を支える高可用性アーキテクチャリアルタイム分析サービス『たべみる』を支える高可用性アーキテクチャ
リアルタイム分析サービス『たべみる』を支える高可用性アーキテクチャHiroyuki Inoue
 
ブログをいっぱい書いていたら色々とうまくいった話
ブログをいっぱい書いていたら色々とうまくいった話ブログをいっぱい書いていたら色々とうまくいった話
ブログをいっぱい書いていたら色々とうまくいった話Kenji Tanaka
 
SPEEDA/NewsPicksを支える価値を生み出す技術の選定手法
SPEEDA/NewsPicksを支える価値を生み出す技術の選定手法SPEEDA/NewsPicksを支える価値を生み出す技術の選定手法
SPEEDA/NewsPicksを支える価値を生み出す技術の選定手法Hideyuki Takeuchi
 
超大量トラフィックとAWSと私
超大量トラフィックとAWSと私超大量トラフィックとAWSと私
超大量トラフィックとAWSと私Noriaki Kadota
 
[OSC2016] マイクロサービスを支える MQ を考える
[OSC2016] マイクロサービスを支える MQ を考える[OSC2016] マイクロサービスを支える MQ を考える
[OSC2016] マイクロサービスを支える MQ を考えるOhyama Hiroyasu
 
そのときデブの身体の中では一体何が・・・!?
そのときデブの身体の中では一体何が・・・!?そのときデブの身体の中では一体何が・・・!?
そのときデブの身体の中では一体何が・・・!?Masataka Tsukamoto
 
Spring Framework 4.3から5.0へ
Spring Framework 4.3から5.0へSpring Framework 4.3から5.0へ
Spring Framework 4.3から5.0へmovmov
 
Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/Min
Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/MinAdvanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/Min
Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/MinMasahiro Nagano
 
ドメイン駆動設計と サーバサイドと私
ドメイン駆動設計と サーバサイドと私ドメイン駆動設計と サーバサイドと私
ドメイン駆動設計と サーバサイドと私Noriaki Kadota
 
PHPデプロイツールの世界
PHPデプロイツールの世界PHPデプロイツールの世界
PHPデプロイツールの世界Yuuki Takezawa
 
Javaで最強のfizz buzz
Javaで最強のfizz buzzJavaで最強のfizz buzz
Javaで最強のfizz buzzyy yank
 
ハードを知らないソフトエンジニアがIoTをかじってみた話
ハードを知らないソフトエンジニアがIoTをかじってみた話ハードを知らないソフトエンジニアがIoTをかじってみた話
ハードを知らないソフトエンジニアがIoTをかじってみた話Shingo Fukui
 

Destacado (20)

Reactive programming with Apache Wicket
Reactive programming with Apache WicketReactive programming with Apache Wicket
Reactive programming with Apache Wicket
 
生産性を高めてハッピーライフを ~2016/06/02 UZABASE Meet Up ~
生産性を高めてハッピーライフを ~2016/06/02 UZABASE Meet Up ~生産性を高めてハッピーライフを ~2016/06/02 UZABASE Meet Up ~
生産性を高めてハッピーライフを ~2016/06/02 UZABASE Meet Up ~
 
SPEEDAインフラ運営
SPEEDAインフラ運営SPEEDAインフラ運営
SPEEDAインフラ運営
 
GCPでCI環境を構築する
GCPでCI環境を構築するGCPでCI環境を構築する
GCPでCI環境を構築する
 
企業・業界データサービスSPEEDAの開発における複雑怪奇なデータとの格闘
企業・業界データサービスSPEEDAの開発における複雑怪奇なデータとの格闘企業・業界データサービスSPEEDAの開発における複雑怪奇なデータとの格闘
企業・業界データサービスSPEEDAの開発における複雑怪奇なデータとの格闘
 
mecab-ipadic-NEologd の効果的な使い方
mecab-ipadic-NEologd の効果的な使い方mecab-ipadic-NEologd の効果的な使い方
mecab-ipadic-NEologd の効果的な使い方
 
The monad fear
The monad fearThe monad fear
The monad fear
 
リアルタイム分析サービス『たべみる』を支える高可用性アーキテクチャ
リアルタイム分析サービス『たべみる』を支える高可用性アーキテクチャリアルタイム分析サービス『たべみる』を支える高可用性アーキテクチャ
リアルタイム分析サービス『たべみる』を支える高可用性アーキテクチャ
 
ブログをいっぱい書いていたら色々とうまくいった話
ブログをいっぱい書いていたら色々とうまくいった話ブログをいっぱい書いていたら色々とうまくいった話
ブログをいっぱい書いていたら色々とうまくいった話
 
SPEEDA/NewsPicksを支える価値を生み出す技術の選定手法
SPEEDA/NewsPicksを支える価値を生み出す技術の選定手法SPEEDA/NewsPicksを支える価値を生み出す技術の選定手法
SPEEDA/NewsPicksを支える価値を生み出す技術の選定手法
 
超大量トラフィックとAWSと私
超大量トラフィックとAWSと私超大量トラフィックとAWSと私
超大量トラフィックとAWSと私
 
[OSC2016] マイクロサービスを支える MQ を考える
[OSC2016] マイクロサービスを支える MQ を考える[OSC2016] マイクロサービスを支える MQ を考える
[OSC2016] マイクロサービスを支える MQ を考える
 
minne の API 改善
minne の API 改善minne の API 改善
minne の API 改善
 
そのときデブの身体の中では一体何が・・・!?
そのときデブの身体の中では一体何が・・・!?そのときデブの身体の中では一体何が・・・!?
そのときデブの身体の中では一体何が・・・!?
 
Spring Framework 4.3から5.0へ
Spring Framework 4.3から5.0へSpring Framework 4.3から5.0へ
Spring Framework 4.3から5.0へ
 
Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/Min
Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/MinAdvanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/Min
Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/Min
 
ドメイン駆動設計と サーバサイドと私
ドメイン駆動設計と サーバサイドと私ドメイン駆動設計と サーバサイドと私
ドメイン駆動設計と サーバサイドと私
 
PHPデプロイツールの世界
PHPデプロイツールの世界PHPデプロイツールの世界
PHPデプロイツールの世界
 
Javaで最強のfizz buzz
Javaで最強のfizz buzzJavaで最強のfizz buzz
Javaで最強のfizz buzz
 
ハードを知らないソフトエンジニアがIoTをかじってみた話
ハードを知らないソフトエンジニアがIoTをかじってみた話ハードを知らないソフトエンジニアがIoTをかじってみた話
ハードを知らないソフトエンジニアがIoTをかじってみた話
 

Similar a 生粋のRubyistがJavaを好きになった理由

OpenStack環境構築支援について
OpenStack環境構築支援についてOpenStack環境構築支援について
OpenStack環境構築支援についてSatoshi Konno
 
WordPressのローカル開発環境構築【WordBench Nagoya 5月度勉強会】
WordPressのローカル開発環境構築【WordBench Nagoya 5月度勉強会】WordPressのローカル開発環境構築【WordBench Nagoya 5月度勉強会】
WordPressのローカル開発環境構築【WordBench Nagoya 5月度勉強会】masaya yamao
 
Web関連技術の最新動向・プログラミング言語(サーバ側)
Web関連技術の最新動向・プログラミング言語(サーバ側)Web関連技術の最新動向・プログラミング言語(サーバ側)
Web関連技術の最新動向・プログラミング言語(サーバ側)masayoshi takahashi
 
OpenStack Days Tokyo 2014のプレゼンテーション資料(モーフ・ラボ & アセアン・ラボ)
OpenStack Days Tokyo 2014のプレゼンテーション資料(モーフ・ラボ & アセアン・ラボ)OpenStack Days Tokyo 2014のプレゼンテーション資料(モーフ・ラボ & アセアン・ラボ)
OpenStack Days Tokyo 2014のプレゼンテーション資料(モーフ・ラボ & アセアン・ラボ)Satoshi Konno
 
株式会社インタースペース 沖本様 登壇資料
株式会社インタースペース 沖本様 登壇資料株式会社インタースペース 沖本様 登壇資料
株式会社インタースペース 沖本様 登壇資料leverages_event
 
ローカルでのWordPress開発環境に向けて【WordBench 三重 5月度勉強会】
ローカルでのWordPress開発環境に向けて【WordBench 三重 5月度勉強会】ローカルでのWordPress開発環境に向けて【WordBench 三重 5月度勉強会】
ローカルでのWordPress開発環境に向けて【WordBench 三重 5月度勉強会】masaya yamao
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版DIVE INTO CODE Corp.
 
Rubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアRubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアKouhei Sutou
 
新技術で未来の扉を開け! - Node-REDの環境構築と社内導入 -
新技術で未来の扉を開け! - Node-REDの環境構築と社内導入 - 新技術で未来の扉を開け! - Node-REDの環境構築と社内導入 -
新技術で未来の扉を開け! - Node-REDの環境構築と社内導入 - Makoto SAKAI
 
Wakayama.rbが目指すもの
Wakayama.rbが目指すものWakayama.rbが目指すもの
Wakayama.rbが目指すもの三七男 山本
 
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~infinite_loop
 
iOSアプリにおけるリリースフローとCI環境
iOSアプリにおけるリリースフローとCI環境iOSアプリにおけるリリースフローとCI環境
iOSアプリにおけるリリースフローとCI環境Toshiyuki Hirata
 
Movable Type Data API Swiftアプリ作成事例
Movable Type Data API Swiftアプリ作成事例Movable Type Data API Swiftアプリ作成事例
Movable Type Data API Swiftアプリ作成事例FromF
 
愛せよ、さもなくば捨てよ。
愛せよ、さもなくば捨てよ。愛せよ、さもなくば捨てよ。
愛せよ、さもなくば捨てよ。Sho Yoshida
 
ソフトウェアエンジニアと高位合成
ソフトウェアエンジニアと高位合成ソフトウェアエンジニアと高位合成
ソフトウェアエンジニアと高位合成Kenichiro MITSUDA
 
20150207 何故scalaを選んだのか
20150207 何故scalaを選んだのか20150207 何故scalaを選んだのか
20150207 何故scalaを選んだのかKatsunori Kanda
 
20160127三木会 RDB経験者のためのspark
20160127三木会 RDB経験者のためのspark20160127三木会 RDB経験者のためのspark
20160127三木会 RDB経験者のためのsparkRyuji Tamagawa
 

Similar a 生粋のRubyistがJavaを好きになった理由 (20)

OpenStack環境構築支援について
OpenStack環境構築支援についてOpenStack環境構築支援について
OpenStack環境構築支援について
 
WordPressのローカル開発環境構築【WordBench Nagoya 5月度勉強会】
WordPressのローカル開発環境構築【WordBench Nagoya 5月度勉強会】WordPressのローカル開発環境構築【WordBench Nagoya 5月度勉強会】
WordPressのローカル開発環境構築【WordBench Nagoya 5月度勉強会】
 
Web関連技術の最新動向・プログラミング言語(サーバ側)
Web関連技術の最新動向・プログラミング言語(サーバ側)Web関連技術の最新動向・プログラミング言語(サーバ側)
Web関連技術の最新動向・プログラミング言語(サーバ側)
 
OSC福岡 20111203
OSC福岡 20111203OSC福岡 20111203
OSC福岡 20111203
 
OpenStack Days Tokyo 2014のプレゼンテーション資料(モーフ・ラボ & アセアン・ラボ)
OpenStack Days Tokyo 2014のプレゼンテーション資料(モーフ・ラボ & アセアン・ラボ)OpenStack Days Tokyo 2014のプレゼンテーション資料(モーフ・ラボ & アセアン・ラボ)
OpenStack Days Tokyo 2014のプレゼンテーション資料(モーフ・ラボ & アセアン・ラボ)
 
株式会社インタースペース 沖本様 登壇資料
株式会社インタースペース 沖本様 登壇資料株式会社インタースペース 沖本様 登壇資料
株式会社インタースペース 沖本様 登壇資料
 
ローカルでのWordPress開発環境に向けて【WordBench 三重 5月度勉強会】
ローカルでのWordPress開発環境に向けて【WordBench 三重 5月度勉強会】ローカルでのWordPress開発環境に向けて【WordBench 三重 5月度勉強会】
ローカルでのWordPress開発環境に向けて【WordBench 三重 5月度勉強会】
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
 
Rubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアRubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェア
 
新技術で未来の扉を開け! - Node-REDの環境構築と社内導入 -
新技術で未来の扉を開け! - Node-REDの環境構築と社内導入 - 新技術で未来の扉を開け! - Node-REDの環境構築と社内導入 -
新技術で未来の扉を開け! - Node-REDの環境構築と社内導入 -
 
Wakayama.rbが目指すもの
Wakayama.rbが目指すものWakayama.rbが目指すもの
Wakayama.rbが目指すもの
 
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
 
iOSアプリにおけるリリースフローとCI環境
iOSアプリにおけるリリースフローとCI環境iOSアプリにおけるリリースフローとCI環境
iOSアプリにおけるリリースフローとCI環境
 
Movable Type Data API Swiftアプリ作成事例
Movable Type Data API Swiftアプリ作成事例Movable Type Data API Swiftアプリ作成事例
Movable Type Data API Swiftアプリ作成事例
 
愛せよ、さもなくば捨てよ。
愛せよ、さもなくば捨てよ。愛せよ、さもなくば捨てよ。
愛せよ、さもなくば捨てよ。
 
ソフトウェアエンジニアと高位合成
ソフトウェアエンジニアと高位合成ソフトウェアエンジニアと高位合成
ソフトウェアエンジニアと高位合成
 
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
 
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
 
20150207 何故scalaを選んだのか
20150207 何故scalaを選んだのか20150207 何故scalaを選んだのか
20150207 何故scalaを選んだのか
 
20160127三木会 RDB経験者のためのspark
20160127三木会 RDB経験者のためのspark20160127三木会 RDB経験者のためのspark
20160127三木会 RDB経験者のためのspark
 

生粋のRubyistがJavaを好きになった理由