SlideShare ist ein Scribd-Unternehmen logo
1 von 32
PHPerが
Java屋になるために
乗り越えたこと
株式会社ビズリーチ
芹沢和洋
@seri_k
第一回 Shibuya.java
自己紹介再び
芹沢和洋
株式会社ビズリーチ
エンジニア
@seri_k
id:serihiro
Blog:seri::Programing Diary
•上流SEとして社会人スタート→2年半で挫折
•SE時代にPHP独学1年
•転職してPHPで業務1年
•転職して今の会社でJava 半年
ドワンゴさんの新人研修資料より
http://ch.nicovideo.jp/dwango-engineer/blomaga/ar246504
PHPが書ける人がJavaを
修得するコストより
Javaを書ける人が
PHPを修得するコスト
の方が低い らしい
つまり
・・・なのか?
PHPerはアホなので
Javaを覚えるのは
すっげー大変
実際に
やってみた
2012年12月
株式会社ビズリーチJOIN
前職は受託でPHPで画面とかバッチとか書いてた
訪れた環境の変化
転職後
• 自社サービス
• java
• Struts2 + Spring2.5
• 社員100名近く
• エンジニア12~3名
(当時)
• Git
• Redmineによるチケッ
ト駆動開発
前職
• BtoB受託開発
• PHP
• PHP4ベースの
謎フレームワーク
• 社員5人
• エンジニア2人
• SVN
• 脳内タスク管理
結果
3つの壁に
ブチ当たる
壁その1
DIコンテナ
現場で最初に読んだコード
@Autowired
private HogeLogic hogeLogic
@Result(name = “/", value = "index.jsp")
public String index() {
form = hogeLogic.methodA();
return “success”;
}
hogeLogicが
newされてない。
でもなんか動いてる・・
普通に考えたら・・・
@Autowired
private HogeLogic hogeLogic
@Result(name = “/", value = "index.jsp")
public String index() {
hogeLogic = new HogeLogic();
form = hogeLogic.methodA();
return “success”;
}
Newしないと
ぬるぽっちゃうはず
HogeLogic.methodA()はstatic?
Public Class HogeLogic{
@Component
public void methodA(){
…..
}
….
}
Staticじゃない
でもなんか付いてる
分からないなりに考えた
• JavaがPHPパクってどんなメソッドもstatic呼び
出しできるようになっていた
• 実は誰かがNewしてる
• Newしなくても使えるようにコンパイラが独自
拡張された(もしくはやった)
• 秘書が勝手にやった
先輩に聞いた結果
• Springっていうのが@Componentってのが付いて
るクラスだけ勝手にnewしてプロパティに突っ込
めるようにしてくれてるから気にすんな。
→わたし、気になります
• 勝手にnewできる対象のクラスはxxx-bean.xmlっ
てファイルに書いてあるから
それ見れば分かる
→何書いてあるか分かりません(´・ω・`)
解決策:学ぶ
@IT
「Spring Frameworkで理解するDI」
シリーズ
•DIとはそもそもなんぞや?
•DIコンテナは何してくれるの?
•Springでどうやって実現するの?
という疑問の解消
http://www.atmarkit.co.jp/ait/articles/0504/29/ne
ws022.html
解決策:学ぶ
http://www.amazon.co.jp/dp/4774130001
「 Spring2.0入門」
•Beanの書き方
•interceptorの解説と使い方
の習得。
今でもちょいちょい業務中にチェック
ちなみに
• PHPにもDIフレームワーク(AOPフレームワー
ク)は存在します
• PHP5.4以降対応なので新しすぎてまだあまり普及してないぽいですが
https://code.google.com/p/bearsunday/wiki/introduction
壁その2
StackTrace
分かりづらい…読むのだるい…
java.util.MissingResourceException: Can't find bundle for base name
jp.apli.sdk.eie.EIEBufferCSyuyakuListOut, locale ja_JP at
java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:707) at
java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:679) at
java.util.ResourceBundle.getBundle(ResourceBundle.java:546) at
jp.apli.sdk.common.corba.SdkCorbaDataBuffer.<init>(SdkCorbaDataBuffer.java:74) at
jp.apli.sdk.common.corba.SdkCorbaData.<init>(SdkCorbaData.java:120) at
jp.apli.sdk.eie.servlet.SdkDataBuilder.buildSdkCorbaData (SdkDataBuilder.java:59) at
jp.apli.sdk.common.corba.SdkCorbaExec.buildDatas(SdkCorbaExec.java:130) at
jp.apli.sdk.common.corba.SdkCorbaExec.function(SdkCorbaExec.java:77) at
jp.apli.sdk.eie.servlet.SdkServletEvent$DataSend.exec(SdkServletEvent.java:307) at
jp.apli.sdk.common.event.SdkEvent.execEvent(SdkEvent.java:93) at
jp.apli.sdk.eie.servlet.SdkServletEvent.execEvent(SdkServletEvent.java:1609) at
jp.apli.sdk.eie.servlet.SdkServlet.doPost(SdkServlet.java:700) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:772) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:865) at
com.fujitsu.interstage.jservlet.tomcat.core.ServletWrapper.handleRequest
(ServletWrapper.java:415) at
com.fujitsu.interstage.jservlet.tomcat.core.ServletWrapper.handleRequest
(ServletWrapper.java:447) at com.fujitsu.interstage.jservlet.tomcat.servlets.InvokerServlet.service
(InvokerServlet.java:257) at javax.servlet.http.HttpServlet.service(HttpServlet.java:865) at
com.fujitsu.interstage.jservlet.tomcat.core.ServletWrapper.handleRequest
(ServletWrapper.java:415) at com.fujitsu.interstage.jservlet.tomcat.core.ContextManager.service
(ContextManager.java:541) at com.fujitsu.interstage.jservlet.tomcat.service.connector.
Ajp12ConnectionHandler.processConnection(Ajp12ConnectionHandler.java:147) at
com.fujitsu.interstage.jservlet.tomcat.service.TcpConnectionThread.run
(SimpleTcpEndpoint.java:334) at java.lang.Thread.run(Thread.java:484)
すぐ分かればいいけど
java.util.MissingResourceException: Can't find bundle for base name
jp.apli.sdk.eie.EIEBufferCSyuyakuListOut, locale ja_JP at
java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:707) at
java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:679) at
java.util.ResourceBundle.getBundle(ResourceBundle.java:546) at
jp.apli.sdk.common.corba.SdkCorbaDataBuffer.<init>(SdkCorbaDataBuffer.java:74) at
jp.apli.sdk.common.corba.SdkCorbaData.<init>(SdkCorbaData.java:120) at
jp.apli.sdk.eie.servlet.SdkDataBuilder.buildSdkCorbaData (SdkDataBuilder.java:59) at
jp.apli.sdk.common.corba.SdkCorbaExec.buildDatas(SdkCorbaExec.java:130) at
jp.apli.sdk.common.corba.SdkCorbaExec.function(SdkCorbaExec.java:77) at
jp.apli.sdk.eie.servlet.SdkServletEvent$DataSend.exec(SdkServletEvent.java:307) at
jp.apli.sdk.common.event.SdkEvent.execEvent(SdkEvent.java:93) at
jp.apli.sdk.eie.servlet.SdkServletEvent.execEvent(SdkServletEvent.java:1609) at
jp.apli.sdk.eie.servlet.SdkServlet.doPost(SdkServlet.java:700) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:772) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:865) at
com.fujitsu.interstage.jservlet.tomcat.core.ServletWrapper.handleRequest
(ServletWrapper.java:415) at
com.fujitsu.interstage.jservlet.tomcat.core.ServletWrapper.handleRequest
(ServletWrapper.java:447) at com.fujitsu.interstage.jservlet.tomcat.servlets.InvokerServlet.service
(InvokerServlet.java:257) at javax.servlet.http.HttpServlet.service(HttpServlet.java:865) at
com.fujitsu.interstage.jservlet.tomcat.core.ServletWrapper.handleRequest
(ServletWrapper.java:415) at com.fujitsu.interstage.jservlet.tomcat.core.ContextManager.service
(ContextManager.java:541) at com.fujitsu.interstage.jservlet.tomcat.service.connector.
Ajp12ConnectionHandler.processConnection(Ajp12ConnectionHandler.java:147) at
com.fujitsu.interstage.jservlet.tomcat.service.TcpConnectionThread.run
(SimpleTcpEndpoint.java:334) at java.lang.Thread.run(Thread.java:484)
この辺まで読なきゃいけ
ないケースが辛い…
この辺はすぐ読めるが
でも読まないとどうしようもない
謎エラーが出て悩む
→無精してついつい読まずに先輩に聞いてしまう
→再現させてConsole上のStacktrace見せる
先輩「ああ分かった。
下の方のここでコケてる。
ここがおかしいから上でコケてる」
→Stacktraceをしっかりエラーの原因が
分かるケースが存在する・・みたい?
解決策:頑張って読むクセを付ける
• 最初はしんどい。。が、時間かかってでも読む。
• 頑張って読んでるうちに、どこを見るべきか分
かってくる。
• 本当の原因箇所は冒頭の数行にあるとは限ら
ない。下から順番に読んでいって何が起きてい
るかを把握するように意識する。
→ケース毎の読み方が分かってきて
最近は解決が早くなってきた(気が
する)
参考:DBFlute久保さんのブログ
「デバッグ手順(スタックトレース重要)」
http://d.hatena.ne.jp/jflute/20090224/1235473382
壁その3
SAStruts使用時の
ハマリやすさ
そもそも導入がしんどい
• CakePHP,Symphony,Zendframework等
→ファイル落としてきてフォルダ毎入れれば終了
• SAStruts
→自分でjarを落としてきてbuildパスに通すか、
Mavenのpomにゴリゴリ書いて落とす
→MavenだとTomcatのWEB-INF/lib配下に依存ライ
ブラリが入らないから設定書いて動かす
そして何故か早い段階でハマる
ハマったケース
・SAStruts + S2Chronosの構成を作る時に、
s2chronos-coreの参照をpomに記述すると
バージョンの不整合なのかS2コンテナ初期化
で失敗して起動しない
→s2chronos-coreのバージョンの問題??
参考:
http://kinjouj.hatenablog.jp/entry/20121026/1351226167
そして何故か早い段階でハマる
ハマったケース
・MavenのArchetypeで作成したSAStrutsプロ
ジェクトはそのままだとjettyで起動できない
→2リクエスト目以降でぬるぽが発生
→jettyのバグが原因
→Tomcatでは起こらない
http://dev.classmethod.jp/cloud/p6881/
web.xml上で指定するrequestDumpFilterを外すことで解決
参考:
解決策:自分なりのベストプラクティスを
構築する
• 「こう構築すれば絶対上手くいく」パターンを
見つけるまで試行錯誤する。何度も作っては
壊しを繰り返して良い方法を見つける。
• SAStrus自体はもう進化しない(多分)が、
周辺環境は進化する。
それに併せて環境構築の手順も変わってくる。
まとめ:3つの壁と乗り越えるための対策
• DIコンテナ:
知らなければ外部リソースから学ぶ
実際に手を動かして使ってみて覚える
• StackTrace:
読むための修行をする
• SAStruts環境構築:
スクラップアンドビルドで
ベストプラクティスを探す
宣伝
株式会社ビズリーチはエンジニア絶賛募集中です。
・Webサービス開発に興味がある
・新規事業立ち上げに関わりたい(色々と企画立案中)
・Javaでアジャイルな開発がしたい
・Struts2使いたい
・AWSとバリバリ連携したものを作りたい
→現状:EC2,RDS, EMR,S3,ELB を使用
・Mongo,Cassandra等のNoSQLを使ったシステム開発がしたい
・芹沢と一緒にUTの普及を進めたい
一つでもピンと来たら
https://www.bizreach.co.jp/recruit/
ご清聴ありがとうございました

Weitere ähnliche Inhalte

Was ist angesagt?

Loose and fluffy_ddd_intro
Loose and fluffy_ddd_introLoose and fluffy_ddd_intro
Loose and fluffy_ddd_introcch-robo
 
Yii Framework 2.0 いま求められるRAD標準とは #phpkansai
Yii Framework 2.0 いま求められるRAD標準とは #phpkansaiYii Framework 2.0 いま求められるRAD標準とは #phpkansai
Yii Framework 2.0 いま求められるRAD標準とは #phpkansaiHisateru Tanaka
 
業務アプリにおける VB との付き合い方
業務アプリにおける VB との付き合い方業務アプリにおける VB との付き合い方
業務アプリにおける VB との付き合い方s_earlgrey
 
KanJava 201804 Career 思い込みから逃れた先には、可能性がある
KanJava 201804 Career 思い込みから逃れた先には、可能性があるKanJava 201804 Career 思い込みから逃れた先には、可能性がある
KanJava 201804 Career 思い込みから逃れた先には、可能性があるKoichi Sakata
 
Vue Nativeに挑戦してみた
Vue Nativeに挑戦してみたVue Nativeに挑戦してみた
Vue Nativeに挑戦してみたtagashira jun
 
Ruby on vim yokohama.vim発表資料
Ruby on vim yokohama.vim発表資料Ruby on vim yokohama.vim発表資料
Ruby on vim yokohama.vim発表資料Shohei Kobayashi
 
グローバル人事塾【採用の未来2020】 レアジョブ山田プレゼン
グローバル人事塾【採用の未来2020】 レアジョブ山田プレゼングローバル人事塾【採用の未来2020】 レアジョブ山田プレゼン
グローバル人事塾【採用の未来2020】 レアジョブ山田プレゼンYuichiro "Philip" Yamada
 
エンジニア採用ヤバイ! PHPカンファレンス関西 懇親会LT
エンジニア採用ヤバイ! PHPカンファレンス関西 懇親会LTエンジニア採用ヤバイ! PHPカンファレンス関西 懇親会LT
エンジニア採用ヤバイ! PHPカンファレンス関西 懇親会LTTomoyuki Sugita
 
わかると楽しいInfrastructure as code
わかると楽しいInfrastructure as codeわかると楽しいInfrastructure as code
わかると楽しいInfrastructure as codeShohei Kobayashi
 
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方Roy Kim
 
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについてDaisuke Tamada
 
エンジニア向け絶対に挫折しない個人サービスの作り方
エンジニア向け絶対に挫折しない個人サービスの作り方エンジニア向け絶対に挫折しない個人サービスの作り方
エンジニア向け絶対に挫折しない個人サービスの作り方Atsushi Harada
 
Redmineで始めるチケット駆動開発
Redmineで始めるチケット駆動開発Redmineで始めるチケット駆動開発
Redmineで始めるチケット駆動開発Takuya Sato
 
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー「速」を落とさないコードレビュー
「速」を落とさないコードレビューTakafumi ONAKA
 
これからはフリーランスのエンジニアがもっと増える
これからはフリーランスのエンジニアがもっと増えるこれからはフリーランスのエンジニアがもっと増える
これからはフリーランスのエンジニアがもっと増えるAtsushi Harada
 
HTML5でteratailが喋った!
HTML5でteratailが喋った!HTML5でteratailが喋った!
HTML5でteratailが喋った!Shohei Tai
 
WordPressとわぷーのGPL 奈良編
WordPressとわぷーのGPL 奈良編WordPressとわぷーのGPL 奈良編
WordPressとわぷーのGPL 奈良編Shigeki Takai
 
three.jsによる一歩進めたグラフィカルな表現
three.jsによる一歩進めたグラフィカルな表現three.jsによる一歩進めたグラフィカルな表現
three.jsによる一歩進めたグラフィカルな表現Kei Yagi
 

Was ist angesagt? (20)

Pr
PrPr
Pr
 
Loose and fluffy_ddd_intro
Loose and fluffy_ddd_introLoose and fluffy_ddd_intro
Loose and fluffy_ddd_intro
 
Yii Framework 2.0 いま求められるRAD標準とは #phpkansai
Yii Framework 2.0 いま求められるRAD標準とは #phpkansaiYii Framework 2.0 いま求められるRAD標準とは #phpkansai
Yii Framework 2.0 いま求められるRAD標準とは #phpkansai
 
業務アプリにおける VB との付き合い方
業務アプリにおける VB との付き合い方業務アプリにおける VB との付き合い方
業務アプリにおける VB との付き合い方
 
KanJava 201804 Career 思い込みから逃れた先には、可能性がある
KanJava 201804 Career 思い込みから逃れた先には、可能性があるKanJava 201804 Career 思い込みから逃れた先には、可能性がある
KanJava 201804 Career 思い込みから逃れた先には、可能性がある
 
Vue Nativeに挑戦してみた
Vue Nativeに挑戦してみたVue Nativeに挑戦してみた
Vue Nativeに挑戦してみた
 
Ruby on vim yokohama.vim発表資料
Ruby on vim yokohama.vim発表資料Ruby on vim yokohama.vim発表資料
Ruby on vim yokohama.vim発表資料
 
グローバル人事塾【採用の未来2020】 レアジョブ山田プレゼン
グローバル人事塾【採用の未来2020】 レアジョブ山田プレゼングローバル人事塾【採用の未来2020】 レアジョブ山田プレゼン
グローバル人事塾【採用の未来2020】 レアジョブ山田プレゼン
 
エンジニア採用ヤバイ! PHPカンファレンス関西 懇親会LT
エンジニア採用ヤバイ! PHPカンファレンス関西 懇親会LTエンジニア採用ヤバイ! PHPカンファレンス関西 懇親会LT
エンジニア採用ヤバイ! PHPカンファレンス関西 懇親会LT
 
わかると楽しいInfrastructure as code
わかると楽しいInfrastructure as codeわかると楽しいInfrastructure as code
わかると楽しいInfrastructure as code
 
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
 
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
 
エンジニア向け絶対に挫折しない個人サービスの作り方
エンジニア向け絶対に挫折しない個人サービスの作り方エンジニア向け絶対に挫折しない個人サービスの作り方
エンジニア向け絶対に挫折しない個人サービスの作り方
 
Redmineで始めるチケット駆動開発
Redmineで始めるチケット駆動開発Redmineで始めるチケット駆動開発
Redmineで始めるチケット駆動開発
 
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
 
これからはフリーランスのエンジニアがもっと増える
これからはフリーランスのエンジニアがもっと増えるこれからはフリーランスのエンジニアがもっと増える
これからはフリーランスのエンジニアがもっと増える
 
HTML5でteratailが喋った!
HTML5でteratailが喋った!HTML5でteratailが喋った!
HTML5でteratailが喋った!
 
WordPressとわぷーのGPL 奈良編
WordPressとわぷーのGPL 奈良編WordPressとわぷーのGPL 奈良編
WordPressとわぷーのGPL 奈良編
 
three.jsによる一歩進めたグラフィカルな表現
three.jsによる一歩進めたグラフィカルな表現three.jsによる一歩進めたグラフィカルな表現
three.jsによる一歩進めたグラフィカルな表現
 
関数型Swift
関数型Swift関数型Swift
関数型Swift
 

Ähnlich wie PHPerがJava屋になるために乗り越えたこと

Hello Girl's World!!@女子エンジニアLT会 #dotsgirls
Hello Girl's World!!@女子エンジニアLT会 #dotsgirlsHello Girl's World!!@女子エンジニアLT会 #dotsgirls
Hello Girl's World!!@女子エンジニアLT会 #dotsgirlsHikari Fukasawa
 
エンジニア×デザイナー GitHubで変わるコミュニケーション(PHPカンファレンス2014 P4Dセッション)
エンジニア×デザイナー GitHubで変わるコミュニケーション(PHPカンファレンス2014 P4Dセッション)エンジニア×デザイナー GitHubで変わるコミュニケーション(PHPカンファレンス2014 P4Dセッション)
エンジニア×デザイナー GitHubで変わるコミュニケーション(PHPカンファレンス2014 P4Dセッション)Hiroyuki Yamaoka
 
目黒スタートアップ勉強会
目黒スタートアップ勉強会目黒スタートアップ勉強会
目黒スタートアップ勉強会gaooh
 
よちよちと歩んだ2014年
よちよちと歩んだ2014年よちよちと歩んだ2014年
よちよちと歩んだ2014年pupupopo88
 
第一回Shibuya.javaオープニング
第一回Shibuya.javaオープニング第一回Shibuya.javaオープニング
第一回Shibuya.javaオープニングKazuhiro Serizawa
 
じっくりコトコト煮込んだJavaスープ
じっくりコトコト煮込んだJavaスープじっくりコトコト煮込んだJavaスープ
じっくりコトコト煮込んだJavaスープKazuhiro Serizawa
 
Webデザイナーのためのphp wordpress
Webデザイナーのためのphp wordpressWebデザイナーのためのphp wordpress
Webデザイナーのためのphp wordpressgalluda
 
エンジニアが人に言われることあるある(副題「LaravelとReactで開発したい!」)
エンジニアが人に言われることあるある(副題「LaravelとReactで開発したい!」)エンジニアが人に言われることあるある(副題「LaravelとReactで開発したい!」)
エンジニアが人に言われることあるある(副題「LaravelとReactで開発したい!」)プログラミングをする パンダ
 
PHPとか よくわかんない系WEBデザイナーでもShifterでいろいろできたよ!というお話。
PHPとか よくわかんない系WEBデザイナーでもShifterでいろいろできたよ!というお話。PHPとか よくわかんない系WEBデザイナーでもShifterでいろいろできたよ!というお話。
PHPとか よくわかんない系WEBデザイナーでもShifterでいろいろできたよ!というお話。Mariko Imamura
 
PHP-MLを使用して気軽に機械学習にトライしてみる
PHP-MLを使用して気軽に機械学習にトライしてみるPHP-MLを使用して気軽に機械学習にトライしてみる
PHP-MLを使用して気軽に機械学習にトライしてみるRyo Shibayama
 
PHP conference kansai2018_ishihara
PHP conference kansai2018_ishiharaPHP conference kansai2018_ishihara
PHP conference kansai2018_ishiharaishihara_yuki
 
ぼくのNode.jsのだいいっぽ
ぼくのNode.jsのだいいっぽぼくのNode.jsのだいいっぽ
ぼくのNode.jsのだいいっぽ拓弥 遠藤
 
[TechLION] PHP Conference Japan 2014
[TechLION] PHP Conference Japan 2014[TechLION] PHP Conference Japan 2014
[TechLION] PHP Conference Japan 2014Yuki MAEJIMA
 
ほぼ初心者からのマッチングサービス開発のリアル Feat. 嫁
ほぼ初心者からのマッチングサービス開発のリアル Feat. 嫁 ほぼ初心者からのマッチングサービス開発のリアル Feat. 嫁
ほぼ初心者からのマッチングサービス開発のリアル Feat. 嫁 宜浩 香月
 
php-timecopを実戦投入してみた
php-timecopを実戦投入してみたphp-timecopを実戦投入してみた
php-timecopを実戦投入してみたYoshio Hanawa
 
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudyライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudyKenichi Mukai
 
Rubyist started to learn Groovy - things important to leran new LL
Rubyist started to learn Groovy - things important to leran new LLRubyist started to learn Groovy - things important to leran new LL
Rubyist started to learn Groovy - things important to leran new LLUchio Kondo
 
10/12 WordBench神戸 WordPressの学習方法
10/12 WordBench神戸 WordPressの学習方法10/12 WordBench神戸 WordPressの学習方法
10/12 WordBench神戸 WordPressの学習方法Yoshiko Sarakai
 

Ähnlich wie PHPerがJava屋になるために乗り越えたこと (20)

Hello Girl's World!!@女子エンジニアLT会 #dotsgirls
Hello Girl's World!!@女子エンジニアLT会 #dotsgirlsHello Girl's World!!@女子エンジニアLT会 #dotsgirls
Hello Girl's World!!@女子エンジニアLT会 #dotsgirls
 
C#とaop
C#とaopC#とaop
C#とaop
 
エンジニア×デザイナー GitHubで変わるコミュニケーション(PHPカンファレンス2014 P4Dセッション)
エンジニア×デザイナー GitHubで変わるコミュニケーション(PHPカンファレンス2014 P4Dセッション)エンジニア×デザイナー GitHubで変わるコミュニケーション(PHPカンファレンス2014 P4Dセッション)
エンジニア×デザイナー GitHubで変わるコミュニケーション(PHPカンファレンス2014 P4Dセッション)
 
PHP with Visual Studio
PHP with Visual StudioPHP with Visual Studio
PHP with Visual Studio
 
目黒スタートアップ勉強会
目黒スタートアップ勉強会目黒スタートアップ勉強会
目黒スタートアップ勉強会
 
よちよちと歩んだ2014年
よちよちと歩んだ2014年よちよちと歩んだ2014年
よちよちと歩んだ2014年
 
第一回Shibuya.javaオープニング
第一回Shibuya.javaオープニング第一回Shibuya.javaオープニング
第一回Shibuya.javaオープニング
 
じっくりコトコト煮込んだJavaスープ
じっくりコトコト煮込んだJavaスープじっくりコトコト煮込んだJavaスープ
じっくりコトコト煮込んだJavaスープ
 
Webデザイナーのためのphp wordpress
Webデザイナーのためのphp wordpressWebデザイナーのためのphp wordpress
Webデザイナーのためのphp wordpress
 
エンジニアが人に言われることあるある(副題「LaravelとReactで開発したい!」)
エンジニアが人に言われることあるある(副題「LaravelとReactで開発したい!」)エンジニアが人に言われることあるある(副題「LaravelとReactで開発したい!」)
エンジニアが人に言われることあるある(副題「LaravelとReactで開発したい!」)
 
PHPとか よくわかんない系WEBデザイナーでもShifterでいろいろできたよ!というお話。
PHPとか よくわかんない系WEBデザイナーでもShifterでいろいろできたよ!というお話。PHPとか よくわかんない系WEBデザイナーでもShifterでいろいろできたよ!というお話。
PHPとか よくわかんない系WEBデザイナーでもShifterでいろいろできたよ!というお話。
 
PHP-MLを使用して気軽に機械学習にトライしてみる
PHP-MLを使用して気軽に機械学習にトライしてみるPHP-MLを使用して気軽に機械学習にトライしてみる
PHP-MLを使用して気軽に機械学習にトライしてみる
 
PHP conference kansai2018_ishihara
PHP conference kansai2018_ishiharaPHP conference kansai2018_ishihara
PHP conference kansai2018_ishihara
 
ぼくのNode.jsのだいいっぽ
ぼくのNode.jsのだいいっぽぼくのNode.jsのだいいっぽ
ぼくのNode.jsのだいいっぽ
 
[TechLION] PHP Conference Japan 2014
[TechLION] PHP Conference Japan 2014[TechLION] PHP Conference Japan 2014
[TechLION] PHP Conference Japan 2014
 
ほぼ初心者からのマッチングサービス開発のリアル Feat. 嫁
ほぼ初心者からのマッチングサービス開発のリアル Feat. 嫁 ほぼ初心者からのマッチングサービス開発のリアル Feat. 嫁
ほぼ初心者からのマッチングサービス開発のリアル Feat. 嫁
 
php-timecopを実戦投入してみた
php-timecopを実戦投入してみたphp-timecopを実戦投入してみた
php-timecopを実戦投入してみた
 
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudyライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
 
Rubyist started to learn Groovy - things important to leran new LL
Rubyist started to learn Groovy - things important to leran new LLRubyist started to learn Groovy - things important to leran new LL
Rubyist started to learn Groovy - things important to leran new LL
 
10/12 WordBench神戸 WordPressの学習方法
10/12 WordBench神戸 WordPressの学習方法10/12 WordBench神戸 WordPressの学習方法
10/12 WordBench神戸 WordPressの学習方法
 

Mehr von Kazuhiro Serizawa

Rubyはとても「人間的」
Rubyはとても「人間的」Rubyはとても「人間的」
Rubyはとても「人間的」Kazuhiro Serizawa
 
第八回 #渋谷Java 最近のjava PaaS事情
第八回 #渋谷Java 最近のjava PaaS事情第八回 #渋谷Java 最近のjava PaaS事情
第八回 #渋谷Java 最近のjava PaaS事情Kazuhiro Serizawa
 
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
第六回 #渋谷java Javaを書き始めて 1年半が経って思うことKazuhiro Serizawa
 
第四回 #渋谷java オープニング
第四回 #渋谷java オープニング第四回 #渋谷java オープニング
第四回 #渋谷java オープニングKazuhiro Serizawa
 
Juzu Frameworkを使ってみた @第四回 渋谷java
Juzu Frameworkを使ってみた @第四回 渋谷javaJuzu Frameworkを使ってみた @第四回 渋谷java
Juzu Frameworkを使ってみた @第四回 渋谷javaKazuhiro Serizawa
 
第3回渋谷javaオープニング
第3回渋谷javaオープニング第3回渋谷javaオープニング
第3回渋谷javaオープニングKazuhiro Serizawa
 
第二回渋谷Java Opening #渋谷Java
第二回渋谷Java Opening #渋谷Java第二回渋谷Java Opening #渋谷Java
第二回渋谷Java Opening #渋谷JavaKazuhiro Serizawa
 

Mehr von Kazuhiro Serizawa (8)

Introduction to Retrofit
Introduction to RetrofitIntroduction to Retrofit
Introduction to Retrofit
 
Rubyはとても「人間的」
Rubyはとても「人間的」Rubyはとても「人間的」
Rubyはとても「人間的」
 
第八回 #渋谷Java 最近のjava PaaS事情
第八回 #渋谷Java 最近のjava PaaS事情第八回 #渋谷Java 最近のjava PaaS事情
第八回 #渋谷Java 最近のjava PaaS事情
 
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
 
第四回 #渋谷java オープニング
第四回 #渋谷java オープニング第四回 #渋谷java オープニング
第四回 #渋谷java オープニング
 
Juzu Frameworkを使ってみた @第四回 渋谷java
Juzu Frameworkを使ってみた @第四回 渋谷javaJuzu Frameworkを使ってみた @第四回 渋谷java
Juzu Frameworkを使ってみた @第四回 渋谷java
 
第3回渋谷javaオープニング
第3回渋谷javaオープニング第3回渋谷javaオープニング
第3回渋谷javaオープニング
 
第二回渋谷Java Opening #渋谷Java
第二回渋谷Java Opening #渋谷Java第二回渋谷Java Opening #渋谷Java
第二回渋谷Java Opening #渋谷Java
 

Kürzlich hochgeladen

新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールsugiuralab
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価sugiuralab
 

Kürzlich hochgeladen (7)

新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
 

PHPerがJava屋になるために乗り越えたこと