SlideShare a Scribd company logo
1 of 111
Download to read offline
Copyright © BizReach, Inc. All Right Reserved.
株式会社ビズリーチ 荒井利晃
JJUG CCC 2015 Spring
新人エンジニア奮闘記
「 Javaって何? からwebサービスを公開するまで 」
Copyright © BizReach, Inc. All Right Reserved.
発表内容
1. 自己紹介
2. 新卒研修で学んだこと
3. Webサービス開発で学んだこと
4. ビズリーチという環境
5. まとめ
2
Copyright © BizReach, Inc. All Right Reserved. 3
自己紹介1
Copyright © BizReach, Inc. All Right Reserved.
自己紹介
4
荒井利晃
(Arai Toshiaki)
■ 経歴
電気通信大学 電子工学科卒業
電気通信大学 大学院
情報・通信工学研究科卒業
2014年 4月 ビズリーチ入社
趣味は音楽、読書
Java歴 1年
Twitter: toshi_moz
Copyright © BizReach, Inc. All Right Reserved.
学部時代の私
 入学した頃はPCの使い方すら怪しい
 プログラミングは授業で触った程度
 マージャン、バンド、モンハンをしてたら4年間が終了
5
Copyright © BizReach, Inc. All Right Reserved.
大学院時代の私
 大学院では超音波など、音響工学の研究
 研究にはMATLABという数値解析ソフトを使用
 便利な関数が多数、コードはほとんど書かず
6
毎日波形とにらめっこ
Copyright © BizReach, Inc. All Right Reserved.
プログラミングのトラウマ
7
大学院時代に海外インターンでタイに行き、
研究でプログラミングをすることになった
-> まったく読めない & まったく書けない
-> 上司に苦笑いされる日々…
プログラミングに対する苦手意識
Copyright © BizReach, Inc. All Right Reserved.
それでもエンジニアを目指した理由
8
ものづくりが好きだった
ITに関する技術を身に付けたかった
エンジニアに対する憧れがあった
Copyright © BizReach, Inc. All Right Reserved.
そんな私はこんなことやりました
9
お腹を空かせた学生のための肉食就活サイト
Webサービスの開発を一人で担当しました
学生登録数: 約3,000人
企業登録数: 約80社
Copyright © BizReach, Inc. All Right Reserved.
本日伝えたいこと
1. 1年間でどのようにJavaを学んだのか
2. Javaのこんなところでつまづいた
3. 事業会社の開発スタイル
10
新卒研修とニクリーチ開発のお話
Copyright © BizReach, Inc. All Right Reserved. 11
新卒研修で学んだこと2
Copyright © BizReach, Inc. All Right Reserved.
2014年 4月
株式会社ビズリーチ入社
Java歴 0ヶ月
新卒研修
Copyright © BizReach, Inc. All Right Reserved.
新卒研修の目標
13
一人でひとつのアプリを作りきる
Webサービスの作り方を一通り知る
エンジニアリングの楽しさを知る
わからないときの調べ方を知る
Copyright © BizReach, Inc. All Right Reserved.
新卒研修の内容
14
Webの基礎知識
フロントエンド
セキュリティ
プログラミング言語
サーバサイド
インフラ
Web開発の基礎を3ヶ月で学んだ
Copyright © BizReach, Inc. All Right Reserved.
新卒研修で学んだ言語など
15
Javaは17日間
Webサービス開発に必要な技術を約3ヶ月で学ぶ
Copyright © BizReach, Inc. All Right Reserved.
新卒研修: Javaの講師
16
久保 雅彦 (jflute) 先生
OSSプロダクトDBFluteの作者兼
コミッター、カンファレンスやイ
ベントでの講演も多数有
新卒研修のJava講師も担当
ブログ: jfluteの日記 (http://d.hatena.ne.jp/jflute/)
Twitter: @jflute
Copyright © BizReach, Inc. All Right Reserved.
Java研修でやったこと
17
明解Java(入門編)
-> Javaの基本から一つ一つのステップを丁寧に解説
-> 図が多く視覚的にも理解しやすい
-> 各章に練習問題があり、理解が深まる
-> あくまで入門編の内容
Java本で基礎的な知識を身につける
Copyright © BizReach, Inc. All Right Reserved.
本に書いてない部分は補う
18
-> 久保さんオリジナルの研修コンテンツ
-> 文字検索、置換、StringBuilderなど、文字列の基本操作を学ぶ
-> 現場で使われているDBツールを学びつつ死ぬほど修行プログラミング
-> レビューがめちゃくちゃ厳しい
-> セクション11までクリアするとランチに連れて行ってもらえる
 例外、コレクション
 StringTest
 DBFluteハンズオン (http://dbflute.seasar.org/ja/tutorial/handson/)
-> 明解Javaに記載されていないが重要な項目は別途補習
Copyright © BizReach, Inc. All Right Reserved.
ビズリーチ流Java研修①
19
とにかく現場思考で教える
学んだことが現場でどのように使われるのかをイメージする
Copyright © BizReach, Inc. All Right Reserved.
とにかく現場思考で教える
20
 テキストを読んで学習する
-> 情報量が多すぎて、何が大切なのか分からない
 現場の話を聞きながら学習する
-> 具体的な使い方のイメージが湧く
-> 本当に身に付けるべきことが分かる
-> 現場配属に向けた準備運動となる
Copyright © BizReach, Inc. All Right Reserved. 21
圧倒的な開発スピードを実現するための指捌き
タイピング強化、ショートカットキーの徹底
ビズリーチ流Java研修②
Copyright © BizReach, Inc. All Right Reserved.
開発スピードを高めるための指捌き
22
事業会社のプロダクト開発はスピードが命
■ 様々な施策における新規機能実装
■ 2週間に一度のアップデート
■ MTGなどコーディング以外の業務
そこで…
-> 始業時間までタイピング練習
-> よく使う機能のショートカットを記憶
タイピング練習サイト:http://typing.lk/
Copyright © BizReach, Inc. All Right Reserved. 23
可読性の高いコードにこだわる
チーム開発を意識した変数名、メソッド名、コメントなど
ビズリーチ流Java研修③
Copyright © BizReach, Inc. All Right Reserved.
可読性の高いコードにこだわる
24
チームで開発するという意識を持つ
■ 流し読みして処理の流れが分かるか?
■ 変数名、メソッド名のつけ方は適切か?
-> 最上位のメソッドは処理のフローを書く
-> 一つのメソッド内に大量の処理は書かない
-> 人が読むことを意識して名前をつける
-> 小説を書くかの如く
Copyright © BizReach, Inc. All Right Reserved.
Java研修でできるようになったこと
25
■分岐、繰り返しなどの基本的な処理
■型の扱い(基本型、配列やコレクションなど)
■クラスの概念
やはりクラスあたりから理解がしんどくなる…
がんばれ!
Copyright © BizReach, Inc. All Right Reserved.
総合演習
Twitter課題
Java歴 3ヶ月
Copyright © BizReach, Inc. All Right Reserved.
Twitterクローン課題
 Javaを使ったはじめてのアプリケーション開発
 新卒エンジニア一人一つのTwitterクローンを作る
 機能要件、非機能要件、納品要件、特別要件あり
27
機能要件
-> 会員登録できること
-> ログイン/ログアウトできること
-> 140文字以下でつぶやけること
-> タイムラインでつぶやきが閲覧できること
-> 他の会員のフォローが出来ること
Copyright © BizReach, Inc. All Right Reserved.
基礎からwebの世界へ
28
Javaの基礎 Webの世界
- if文、for文などの処理
- int、Stringなどの型
- クラスの使い方
- サーブレット
- webフレームワーク
- Tomcat
- ビルド、デプロイ
なにやら難しい言葉がたくさん出てきた…
Copyright © BizReach, Inc. All Right Reserved.
Twitter課題の構造
29
Copyright © BizReach, Inc. All Right Reserved.
Twitter課題ではまったこと
 基礎的な文法だけでは歯が立たないwebの世界
 System.out.println ってなんだったんだ…
 DB検索、画面への値の渡し方、どうすれば…
30
アーキテクチャとか言われても、な
んのことかさっぱり分からないよ!
JSP?画面のコーディングって
HTMLじゃないの?
Maven、依存ライブラリ、ビルド、
僕が学んできたJavaって一体…
Copyright © BizReach, Inc. All Right Reserved.
Twitter課題ではまったこと
31
画面から値を受け取ってDBに入れる、
イメージは湧くけど実装がわからん
検索したデータを画面に渡したい、一
度に渡す方法ってどうするの?
XSSとかCSRFとか、いろいろ対策し
ないといけないんだなぁ
 アクション、フォーム、セッション!?
 Beanて何?ググっても「豆」としか出てこない
 セキュリティ対策、どこまですればいいの?
Copyright © BizReach, Inc. All Right Reserved.
どのように進めたか
 とにかく本家Twitterを観察して動きを学んだ
 それぞれの動きで何が行われるか分解して考えた
 「Seasar2徹底入門」を読んで理解を深めた
32
Webフレームワークの使い方を学んだ
Javaの基礎文法だけでは作れない
Copyright © BizReach, Inc. All Right Reserved.
Twitter課題:成果発表
33
各自作ったTwitterを発表する
 どんな点に注力したか?つまずいたか?
 「この季節が来たか」と先輩方がニヤニヤ
 実際に先輩方に使ってもらう
セキュリティホールがないか実際にアタックして確認
Copyright © BizReach, Inc. All Right Reserved.
先輩方の洗礼
34
ツイートがデカい
セキュリティ対策の
サイトに飛ばされる
エスケープをしておらず、<h1>タグが有効に
クロスサイトスクリプティング…
Copyright © BizReach, Inc. All Right Reserved.
Twitter課題を通して得られたもの
 WebサービスにおけるJavaの位置づけ
 Webフレームワークの使い方
 一人でサービスを形にする実現力
 正解までたどり着くためのググり力
 セキュリティ対策の重要性
35
そして
Copyright © BizReach, Inc. All Right Reserved.
エラーメッセージ読め読め大合唱
37
エラーメッセージは必ず読め!
強く言われ続けたこと
※ 大切なのは答えではなく、それを導くプロセス
「これ、動かないんです」と先輩のところに相談し
にいくと、「エラーメッセージは読んだ?」「そこ
にはなんて書いてある?」と必ず聞かれた
詳しくは「エラーメッセージ読め読め大合唱」で検索!
Copyright © BizReach, Inc. All Right Reserved.
エンジニアとしてはじめて感じたブレイクスルー
■ プログラムを書いてても実際の使い方が分からなかった
■ コンソール上に何かを出力するという経験だけだった
動くものを作ったことでプログラミングが楽しくなった
38
Copyright © BizReach, Inc. All Right Reserved. 39
Webサービス開発で学んだこと3
Copyright © BizReach, Inc. All Right Reserved.
初めての配属
ビズリーチ事業
Java歴 4ヶ月
Copyright © BizReach, Inc. All Right Reserved.
初めての配属
41
会員制転職サイト「ビズリーチ」の開発
Copyright © BizReach, Inc. All Right Reserved.
初めての現場で完全に圧倒された
 ソースの量がTwitter課題の比じゃない
 ソースを読んでも何をしてるか分からない
 そもそもサービスの仕様が分からない
42
ちょ、一体どれだけ
ファイルあるんですか!
研修ではSAStruts、今度使うのは別
のフレームワーク!
サービス上で使われる言葉、定義な
んかもきちんと覚えないと
Copyright © BizReach, Inc. All Right Reserved.
2ヶ月でこなした業務
43
1ヶ月目
2ヶ月目
-> シナリオテストを行い、サービスのことを知った
-> 先輩にいろいろと聞きながら現場の開発を学んだ
-> はじめはサイトの文言変更などの軽い修正から行った
-> バグ修正などでいろいろな機能を触った
-> 「分からないことが分かる」ようになってきた
-> 営業さんからヒアリングを行い、新規機能を追加をした
ある日
こんなやりとりがありました
ニクリーチってサービス新卒に作って
もらおうと思うんだけど、
だれかやりたい人いる?
(おっ、なんだか面白そうだな)
僕、やりたいです!
CTO 竹内 真
新卒わたし
こんなやりとりがありました
開発期間は2ヶ月、そして一人
Web開発未経験者がこれだけのも
のつくるとなると相当しんどいよ?
多分だいじょ…いや、
やりきってみせます!
(内心ビビってた)
CTO 竹内 真
新卒わたし
Copyright © BizReach, Inc. All Right Reserved.
エンジニアとしての初めての挑戦
ニクリーチ2016開発
Java歴 6ヶ月
Copyright © BizReach, Inc. All Right Reserved.
ニクリーチ2016というwebサービス
48
履歴書を登録 企業からスカウト お肉を食べる
Step 1 Step 2 Step 3
お肉を通じて学生と企業をマッチング
Copyright © BizReach, Inc. All Right Reserved.
ニクリーチ開発スタート!
49
開発期間は2ヶ月
ニクリーチの主な機能要件
-> 学生はニクリーチに履歴書を登録できること
-> 企業は学生の履歴書を検索できること
-> 企業は学生をスカウトできること
-> 学生をスカウトしたらメールが飛ぶこと
よし、早速作り始めるぞ!
Copyright © BizReach, Inc. All Right Reserved.
何から始めていいか分からない
Copyright © BizReach, Inc. All Right Reserved.
サービスの設計をする
52
どういう開発スタイル? そもそも何がしたい?
使い慣れたものはある?
学習コストはどれくらい?データベースは何使う?
フレームワークは何使う?
スピード重視で開発したい!
開発のスタイルは…
Copyright © BizReach, Inc. All Right Reserved.
スピード重視の開発スタイル
53
スピード重視の開発
なぜ?
仕様書が存在しないため作る&改善の繰り返し
Copyright © BizReach, Inc. All Right Reserved.
トライ&エラーが多い
54
 自分は新卒、何が正しい実装なのかわからない
 そもそも業務自体がトライ&エラーの繰り返し
 プログラムの改変が非常に多い (正解がない)
Copyright © BizReach, Inc. All Right Reserved.
ニクリーチ2016の構成
55
■ Twitter課題とほぼ同じ構成
■ Java8を使って開発
Copyright © BizReach, Inc. All Right Reserved.
サービス作りで初めて触った機能
56
ファイル操作
メール配信
外部APIとの連携
画像のアップロードに利用した。inputStreamとか初めて触った。
通知メール配信などの実装をした。ここで大はまりした。
FacebookAPIとか触った。普段自分が利用しているアプリって
こんな風に実装されてたんだなーと理解できた。
Copyright © BizReach, Inc. All Right Reserved.
Java8を使った開発
57
■ Lambda式
■ Optional
-> Java8版のDBFluteを使用、ネストが少なくなり
コードがすっきりした
-> スコープを意識、安全な実装をすることができた
-> ぬるぽ対策になった
-> nullに対する意識が向上した
Copyright © BizReach, Inc. All Right Reserved.
Java8の実装 (1件検索)
58
Copyright © BizReach, Inc. All Right Reserved. 59
Java8の実装 (リスト検索)
スピード開発を
実現した役者たち
Copyright © BizReach, Inc. All Right Reserved.
ニクリーチで使用したwebフレームワーク
61
SAFlute
-> SAStrutsをベースにスピード開発に特化
-> リーンスタートアップがテーマのフレームワーク
-> トライ & エラーがしやすいホットデプロイ
-> (Web側でも) 変更に強いタイプセーフ実装
-> とにかく気合の入ったログ
これらのテーマを実現する機能
あ’’ーーーーーーー!
思ったように動かない!
何度もソースを書き直し!
再起動せず動作を確認できる
Copyright © BizReach, Inc. All Right Reserved.
ホットデプロイの恩恵
64
「あー、ここちょっとソース直したいなー」
アプリを再起動せず確認できる
ホットデプロイ!
「こう書いたらどう動くかな?」
思考が妨げられず、実装に集中できる
きれいにファイル管理したい
ファイル名を変えなきゃ!
指定したファイルは見当たります
Copyright © BizReach, Inc. All Right Reserved.
タイプセーフ実装 (return)
67
Forword
Redirect
return “index.jsp”
SAStruts
SAFlute
Forword
Redirect
ベタで記述
return “/edit/” + id + “/?redirect=true”
↑ URLを指定してリダイレクト
return path_IndexJsp 自動生成されたパス
return redirectById(MemberAction.class, id)
↑ リダイレクト用のメソッド
またエラーか…
一体なにがいけないの?
エラーログが読みやすい
Copyright © BizReach, Inc. All Right Reserved.
とにかく気合の入ったログ
70
エラー修正やテストにおいてログは超重要!
コードを変更 ログを確認 修正 or 続行
SAFlute
-> 元のアクション、実行SQL、Requestパラメータなど
-> 読む気になるエラーログ!
※ 詳しくは「ログにこだわるSAFlute」で検索
リリース4日前
CTO竹内からのメール
CTO 竹内 真
学生に登録してもらう履歴書に
英語力を取得する欄を追加しよう。
英語レベルとTOEICの点数ね。
メールを開くと…
突然の仕様変更
ちょwwwまwwwwwwえ?
Copyright © BizReach, Inc. All Right Reserved.
使ってよかったDBFlute
76
ビズリーチでも採用しているDBツール
幾度とある
仕様変更
それに伴う
DB変更
DBFlute
「DB変更に強い」をコンセプトに作られたDBツール
DBFluteの機能に何度も助けられた
Copyright © BizReach, Inc. All Right Reserved. 77
たくさん不安との戦い
人生初めてのwebサービス
一般公開するというプレッシャー
ギリギリの開発スケジュール
飛ばないメール
悲しみをもたらす500エラー
Copyright © BizReach, Inc. All Right Reserved.
リリース日に、メールが飛ばない!
78
12/9 午後リリース予定
午前中に最終チェックをしていたら、高確率でメール
配信に失敗することを確認
冷や汗が止まらない私。見かねたCTO竹内が自ら手を動
かし、メール配信処理を別スレッドにすることで対応
このとき、マルチスレッドという概念を知る
その他にも
いろいろ
ハマった
Copyright © BizReach, Inc. All Right Reserved. 80
先輩に相談しまくりました!
先輩、偉大。
2ヶ月間
がんばった
TOP画像(焼肉)
探しながら
コンビニ飯
思考停止
しているのに
手は動く
\サイコーにハイだぜ!/
そして
なんとか
Copyright © BizReach, Inc. All Right Reserved.
2014/12/09
ニクリーチ2016リリース
Java歴 8ヶ月
Copyright © BizReach, Inc. All Right Reserved.
したのですが
どうやらバグってるらしい。
Copyright © BizReach, Inc. All Right Reserved.
リリース後の対応
 学生の履歴書が登録できない
89
 メールが配信されてない
リリース前のテストの大切さを学んだ
-> 登録学生からの問い合わせを受け発覚
-> バリデーションのバグ、急いで修正してリリース
-> メールサーバにコネクションを貼る際に落ちている
-> リトライ機能を実装して対応
現在のニクリーチ
Copyright © BizReach, Inc. All Right Reserved.
現在のニクリーチ
91
お腹を空かせた学生のための肉食就活サイト
学生登録数: 約3,000人
企業登録数: 約80社
Copyright © BizReach, Inc. All Right Reserved.
ニクリーチのメディア掲載実績
92
新聞
とくダネ!
スーパーニュース
TV
日経MJ
日本経済新聞
WEB
エンジニアtype
キャリコネニュース
週アスPLUS
Copyright © BizReach, Inc. All Right Reserved.
Twitterでも話題に
93
#ニクリーチ
Copyright © BizReach, Inc. All Right Reserved.
2ヶ月間でやったこと
94
設計 開発
マネジメント
進捗管理、進捗報告
コンテンツの依頼
プロダクト管理
画面デザイン、遷移
機能要件定義
DB設計、など
開発環境整備
DB構築
画面コーディング
アプリコーディング
インフラ構築
テスト
リリース作業
ニクリーチ開発でかなり成長できた!
Copyright © BizReach, Inc. All Right Reserved. 96
ビズリーチという環境4
Copyright © BizReach, Inc. All Right Reserved.
エクセレントなエンジニア達
97
■竹添直樹
Seasar、Apache Click、GitBucket、Scalatra
などのオープンソース活動、JavaやScalaなどの、
数々の技術系書籍の執筆
■久保雅彦
OSSプロダクトDBFluteの作者兼コミッター、
カンファレンスやイベントでの講演も多数有
新卒研修のJava講師も担当
Copyright © BizReach, Inc. All Right Reserved.
著者のサインをいただきました!笑
98
竹添さん 島本さん
Java逆引きレシピ
Copyright © BizReach, Inc. All Right Reserved.
働く環境
99
オライリー本(日本語版)全巻完備
Copyright © BizReach, Inc. All Right Reserved.
働く環境
100
ペアプログラミングスペース
Copyright © BizReach, Inc. All Right Reserved.
働く環境
101
ハニカムオフィス
Copyright © BizReach, Inc. All Right Reserved.
働く環境
102
ミーティングスペース
Copyright © BizReach, Inc. All Right Reserved.
働く環境
103
サイレントルーム
Copyright © BizReach, Inc. All Right Reserved.
Javaで事業を作りたい
エンジニアさん大募集!
株式会社ビズリーチでは
Copyright © BizReach, Inc. All Right Reserved.
ほぼ毎日
勉強会も開催!
株式会社ビズリーチでは
Copyright © BizReach, Inc. All Right Reserved. 106
まとめ5
Copyright © BizReach, Inc. All Right Reserved.
まとめ
 Javaまったくの初心者から1年間でサービスを作った
 とはいえ先輩にいろいろ助けてもらった
 事業会社の開発はとにかくスピード重視だった
 スピード開発を実現する数々の道具を使った
 サービス作りにはほんとうにたくさんの学びがあった
107
Copyright © BizReach, Inc. All Right Reserved. 108
エンジニアとして大切にしたいこと
学ぶ環境 学ぶ気持ち
先輩エンジニアは偉大
チャレンジできる環境
目線の高さ
学ぶ姿勢を止めない
人は最強の教科書
みんなと競う
Copyright © BizReach, Inc. All Right Reserved.
これから学ぶ人へ
109
とにかく手を動かす
分からなければ人に聞く
成果が出るまでは努力
頭で考えることと、実際に作ることには大きな差がある
とにかく手を動かしてプログラムを書くことに慣れること
学び始めはとにかく分からないことが多くていやになる
そんなときは人に聞いてとにかく前に進むことが大切
始めはコンソールに文字を出力することから始まる
実際に動くものを作るのはそれなりに努力が必要
Copyright © BizReach, Inc. All Right Reserved.
まだまだ分からないことばかりだけど
プログラムを書くの楽しい
現在 Java歴 1年
JJUG CCC 2015 Spring 「新人エンジニア奮闘記 - Javaって何?からwebサービスを公開するまで -」発表スライド

More Related Content

What's hot

CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善Ito Takayuki
 
アーキテクチャとアジャイルプロジェクトをまともに進めるための両輪について-DevLOVE関西 #DevKan
アーキテクチャとアジャイルプロジェクトをまともに進めるための両輪について-DevLOVE関西 #DevKan アーキテクチャとアジャイルプロジェクトをまともに進めるための両輪について-DevLOVE関西 #DevKan
アーキテクチャとアジャイルプロジェクトをまともに進めるための両輪について-DevLOVE関西 #DevKan Yusuke Suzuki
 
私にとってのテスト
私にとってのテスト私にとってのテスト
私にとってのテストTakuto Wada
 
大企業アジャイルの勘所 #devlovex #devlovexd
大企業アジャイルの勘所 #devlovex #devlovexd大企業アジャイルの勘所 #devlovex #devlovexd
大企業アジャイルの勘所 #devlovex #devlovexdItsuki Kuroda
 
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjugフロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjugItsuki Kuroda
 
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜aha_oretama
 
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みChihiro Ito
 
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with KarateTakanori Suzuki
 
ログの書き方がチームの生産性を爆上げする話
ログの書き方がチームの生産性を爆上げする話ログの書き方がチームの生産性を爆上げする話
ログの書き方がチームの生産性を爆上げする話Tsuyoshi Ushio
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織Takafumi ONAKA
 
「PdMと考えるQAとプロダクトマネジメント」
「PdMと考えるQAとプロダクトマネジメント」「PdMと考えるQAとプロダクトマネジメント」
「PdMと考えるQAとプロダクトマネジメント」大貴 蜂須賀
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンAkihiko Horiuchi
 
営業さんまで、社員全員がSQLを使う 「越境型組織」 ができるまでの3+1のポイント | リブセンス
営業さんまで、社員全員がSQLを使う 「越境型組織」 ができるまでの3+1のポイント | リブセンス営業さんまで、社員全員がSQLを使う 「越境型組織」 ができるまでの3+1のポイント | リブセンス
営業さんまで、社員全員がSQLを使う 「越境型組織」 ができるまでの3+1のポイント | リブセンスLivesense Inc.
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean ArchitectureAtsushi Nakamura
 
新規事業が対峙する現実からエンジニアリングを俯瞰する #devsumiB #devsumi
新規事業が対峙する現実からエンジニアリングを俯瞰する #devsumiB #devsumi新規事業が対峙する現実からエンジニアリングを俯瞰する #devsumiB #devsumi
新規事業が対峙する現実からエンジニアリングを俯瞰する #devsumiB #devsumiItsuki Kuroda
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)NTT DATA Technology & Innovation
 
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化Flutterで単体テストを行う方法とGitHub Actionsを使った自動化
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化Shinnosuke Tokuda
 
アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~gree_tech
 

What's hot (20)

CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
 
アーキテクチャとアジャイルプロジェクトをまともに進めるための両輪について-DevLOVE関西 #DevKan
アーキテクチャとアジャイルプロジェクトをまともに進めるための両輪について-DevLOVE関西 #DevKan アーキテクチャとアジャイルプロジェクトをまともに進めるための両輪について-DevLOVE関西 #DevKan
アーキテクチャとアジャイルプロジェクトをまともに進めるための両輪について-DevLOVE関西 #DevKan
 
私にとってのテスト
私にとってのテスト私にとってのテスト
私にとってのテスト
 
大企業アジャイルの勘所 #devlovex #devlovexd
大企業アジャイルの勘所 #devlovex #devlovexd大企業アジャイルの勘所 #devlovex #devlovexd
大企業アジャイルの勘所 #devlovex #devlovexd
 
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjugフロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
 
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
 
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
 
品質基礎知識
品質基礎知識品質基礎知識
品質基礎知識
 
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate
 
ログの書き方がチームの生産性を爆上げする話
ログの書き方がチームの生産性を爆上げする話ログの書き方がチームの生産性を爆上げする話
ログの書き方がチームの生産性を爆上げする話
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
「PdMと考えるQAとプロダクトマネジメント」
「PdMと考えるQAとプロダクトマネジメント」「PdMと考えるQAとプロダクトマネジメント」
「PdMと考えるQAとプロダクトマネジメント」
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
 
営業さんまで、社員全員がSQLを使う 「越境型組織」 ができるまでの3+1のポイント | リブセンス
営業さんまで、社員全員がSQLを使う 「越境型組織」 ができるまでの3+1のポイント | リブセンス営業さんまで、社員全員がSQLを使う 「越境型組織」 ができるまでの3+1のポイント | リブセンス
営業さんまで、社員全員がSQLを使う 「越境型組織」 ができるまでの3+1のポイント | リブセンス
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 
新規事業が対峙する現実からエンジニアリングを俯瞰する #devsumiB #devsumi
新規事業が対峙する現実からエンジニアリングを俯瞰する #devsumiB #devsumi新規事業が対峙する現実からエンジニアリングを俯瞰する #devsumiB #devsumi
新規事業が対峙する現実からエンジニアリングを俯瞰する #devsumiB #devsumi
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
 
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化Flutterで単体テストを行う方法とGitHub Actionsを使った自動化
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化
 
アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~
 
UXとブランド
UXとブランドUXとブランド
UXとブランド
 

Similar to JJUG CCC 2015 Spring 「新人エンジニア奮闘記 - Javaって何?からwebサービスを公開するまで -」発表スライド

初めてのWebプログラミング講座
初めてのWebプログラミング講座初めてのWebプログラミング講座
初めてのWebプログラミング講座DIVE INTO CODE Corp.
 
Developers Summit 2019 Summer(デブサミ2019夏)
Developers Summit 2019 Summer(デブサミ2019夏)Developers Summit 2019 Summer(デブサミ2019夏)
Developers Summit 2019 Summer(デブサミ2019夏)tracksrun
 
Hybrid appmeetssecurity kdl20171017-20
Hybrid appmeetssecurity kdl20171017-20Hybrid appmeetssecurity kdl20171017-20
Hybrid appmeetssecurity kdl20171017-20龍弘 岡
 
初めてのWebプログラミング講座
初めてのWebプログラミング講座初めてのWebプログラミング講座
初めてのWebプログラミング講座DIVE INTO CODE Corp.
 
企業と勉強会 @nifty エンジニアサポート
企業と勉強会 @nifty エンジニアサポート企業と勉強会 @nifty エンジニアサポート
企業と勉強会 @nifty エンジニアサポートDaichi Morifuji
 
Google apps scriptを使って業務改善
Google apps scriptを使って業務改善Google apps scriptを使って業務改善
Google apps scriptを使って業務改善dcubeio
 
ビジネス職新卒向け Web基礎研修
ビジネス職新卒向け Web基礎研修ビジネス職新卒向け Web基礎研修
ビジネス職新卒向け Web基礎研修Taku Unno
 
株式会社リブセンス会社説明資料(転職エージェント企業様向け)
株式会社リブセンス会社説明資料(転職エージェント企業様向け)株式会社リブセンス会社説明資料(転職エージェント企業様向け)
株式会社リブセンス会社説明資料(転職エージェント企業様向け)Taku Unno
 
プログラミングを学ぶと何が良いのか
プログラミングを学ぶと何が良いのかプログラミングを学ぶと何が良いのか
プログラミングを学ぶと何が良いのかHaruo Sato
 
イケてない開発チームがイケてる開発を始めようとする軌跡
イケてない開発チームがイケてる開発を始めようとする軌跡イケてない開発チームがイケてる開発を始めようとする軌跡
イケてない開発チームがイケてる開発を始めようとする軌跡NTT Communications Technology Development
 
Spath for enterprise
Spath for enterpriseSpath for enterprise
Spath for enterpriseKoichiro Sumi
 
ソフトウェアのように〇〇を作る
ソフトウェアのように〇〇を作るソフトウェアのように〇〇を作る
ソフトウェアのように〇〇を作るTaku Unno
 
IT革命からコミュニティ、コミュニケーション革命に!
IT革命からコミュニティ、コミュニケーション革命に!IT革命からコミュニティ、コミュニケーション革命に!
IT革命からコミュニティ、コミュニケーション革命に!Yuichi Morito
 
HCCソフト 2024新卒 会社説明会
HCCソフト 2024新卒 会社説明会HCCソフト 2024新卒 会社説明会
HCCソフト 2024新卒 会社説明会JiiMoya
 
アドテク案件入門講座 8月20日(公開版)
アドテク案件入門講座 8月20日(公開版)アドテク案件入門講座 8月20日(公開版)
アドテク案件入門講座 8月20日(公開版)伊藤 孝
 
開発者からサポートエンジニアにジョブチェンジした話
開発者からサポートエンジニアにジョブチェンジした話開発者からサポートエンジニアにジョブチェンジした話
開発者からサポートエンジニアにジョブチェンジした話Ito Takayuki
 
第11回SIA例会プレゼン資料
第11回SIA例会プレゼン資料第11回SIA例会プレゼン資料
第11回SIA例会プレゼン資料Tae Yoshida
 
株式会社リブセンス会社説明資料(Kiitok Career Fair 2019)
株式会社リブセンス会社説明資料(Kiitok Career Fair 2019)株式会社リブセンス会社説明資料(Kiitok Career Fair 2019)
株式会社リブセンス会社説明資料(Kiitok Career Fair 2019)Taku Unno
 

Similar to JJUG CCC 2015 Spring 「新人エンジニア奮闘記 - Javaって何?からwebサービスを公開するまで -」発表スライド (20)

初めてのWebプログラミング講座
初めてのWebプログラミング講座初めてのWebプログラミング講座
初めてのWebプログラミング講座
 
Developers Summit 2019 Summer(デブサミ2019夏)
Developers Summit 2019 Summer(デブサミ2019夏)Developers Summit 2019 Summer(デブサミ2019夏)
Developers Summit 2019 Summer(デブサミ2019夏)
 
Hybrid appmeetssecurity kdl20171017-20
Hybrid appmeetssecurity kdl20171017-20Hybrid appmeetssecurity kdl20171017-20
Hybrid appmeetssecurity kdl20171017-20
 
初めてのWebプログラミング講座
初めてのWebプログラミング講座初めてのWebプログラミング講座
初めてのWebプログラミング講座
 
企業と勉強会 @nifty エンジニアサポート
企業と勉強会 @nifty エンジニアサポート企業と勉強会 @nifty エンジニアサポート
企業と勉強会 @nifty エンジニアサポート
 
Google apps scriptを使って業務改善
Google apps scriptを使って業務改善Google apps scriptを使って業務改善
Google apps scriptを使って業務改善
 
ビジネス職新卒向け Web基礎研修
ビジネス職新卒向け Web基礎研修ビジネス職新卒向け Web基礎研修
ビジネス職新卒向け Web基礎研修
 
株式会社リブセンス会社説明資料(転職エージェント企業様向け)
株式会社リブセンス会社説明資料(転職エージェント企業様向け)株式会社リブセンス会社説明資料(転職エージェント企業様向け)
株式会社リブセンス会社説明資料(転職エージェント企業様向け)
 
プログラミングを学ぶと何が良いのか
プログラミングを学ぶと何が良いのかプログラミングを学ぶと何が良いのか
プログラミングを学ぶと何が良いのか
 
[Biz reach qa meetup] qa team_build
[Biz reach qa meetup] qa team_build[Biz reach qa meetup] qa team_build
[Biz reach qa meetup] qa team_build
 
イケてない開発チームがイケてる開発を始めようとする軌跡
イケてない開発チームがイケてる開発を始めようとする軌跡イケてない開発チームがイケてる開発を始めようとする軌跡
イケてない開発チームがイケてる開発を始めようとする軌跡
 
Spath for enterprise
Spath for enterpriseSpath for enterprise
Spath for enterprise
 
ソフトウェアのように〇〇を作る
ソフトウェアのように〇〇を作るソフトウェアのように〇〇を作る
ソフトウェアのように〇〇を作る
 
Goalist会社概要
Goalist会社概要Goalist会社概要
Goalist会社概要
 
IT革命からコミュニティ、コミュニケーション革命に!
IT革命からコミュニティ、コミュニケーション革命に!IT革命からコミュニティ、コミュニケーション革命に!
IT革命からコミュニティ、コミュニケーション革命に!
 
HCCソフト 2024新卒 会社説明会
HCCソフト 2024新卒 会社説明会HCCソフト 2024新卒 会社説明会
HCCソフト 2024新卒 会社説明会
 
アドテク案件入門講座 8月20日(公開版)
アドテク案件入門講座 8月20日(公開版)アドテク案件入門講座 8月20日(公開版)
アドテク案件入門講座 8月20日(公開版)
 
開発者からサポートエンジニアにジョブチェンジした話
開発者からサポートエンジニアにジョブチェンジした話開発者からサポートエンジニアにジョブチェンジした話
開発者からサポートエンジニアにジョブチェンジした話
 
第11回SIA例会プレゼン資料
第11回SIA例会プレゼン資料第11回SIA例会プレゼン資料
第11回SIA例会プレゼン資料
 
株式会社リブセンス会社説明資料(Kiitok Career Fair 2019)
株式会社リブセンス会社説明資料(Kiitok Career Fair 2019)株式会社リブセンス会社説明資料(Kiitok Career Fair 2019)
株式会社リブセンス会社説明資料(Kiitok Career Fair 2019)
 

JJUG CCC 2015 Spring 「新人エンジニア奮闘記 - Javaって何?からwebサービスを公開するまで -」発表スライド

  • 1. Copyright © BizReach, Inc. All Right Reserved. 株式会社ビズリーチ 荒井利晃 JJUG CCC 2015 Spring 新人エンジニア奮闘記 「 Javaって何? からwebサービスを公開するまで 」
  • 2. Copyright © BizReach, Inc. All Right Reserved. 発表内容 1. 自己紹介 2. 新卒研修で学んだこと 3. Webサービス開発で学んだこと 4. ビズリーチという環境 5. まとめ 2
  • 3. Copyright © BizReach, Inc. All Right Reserved. 3 自己紹介1
  • 4. Copyright © BizReach, Inc. All Right Reserved. 自己紹介 4 荒井利晃 (Arai Toshiaki) ■ 経歴 電気通信大学 電子工学科卒業 電気通信大学 大学院 情報・通信工学研究科卒業 2014年 4月 ビズリーチ入社 趣味は音楽、読書 Java歴 1年 Twitter: toshi_moz
  • 5. Copyright © BizReach, Inc. All Right Reserved. 学部時代の私  入学した頃はPCの使い方すら怪しい  プログラミングは授業で触った程度  マージャン、バンド、モンハンをしてたら4年間が終了 5
  • 6. Copyright © BizReach, Inc. All Right Reserved. 大学院時代の私  大学院では超音波など、音響工学の研究  研究にはMATLABという数値解析ソフトを使用  便利な関数が多数、コードはほとんど書かず 6 毎日波形とにらめっこ
  • 7. Copyright © BizReach, Inc. All Right Reserved. プログラミングのトラウマ 7 大学院時代に海外インターンでタイに行き、 研究でプログラミングをすることになった -> まったく読めない & まったく書けない -> 上司に苦笑いされる日々… プログラミングに対する苦手意識
  • 8. Copyright © BizReach, Inc. All Right Reserved. それでもエンジニアを目指した理由 8 ものづくりが好きだった ITに関する技術を身に付けたかった エンジニアに対する憧れがあった
  • 9. Copyright © BizReach, Inc. All Right Reserved. そんな私はこんなことやりました 9 お腹を空かせた学生のための肉食就活サイト Webサービスの開発を一人で担当しました 学生登録数: 約3,000人 企業登録数: 約80社
  • 10. Copyright © BizReach, Inc. All Right Reserved. 本日伝えたいこと 1. 1年間でどのようにJavaを学んだのか 2. Javaのこんなところでつまづいた 3. 事業会社の開発スタイル 10 新卒研修とニクリーチ開発のお話
  • 11. Copyright © BizReach, Inc. All Right Reserved. 11 新卒研修で学んだこと2
  • 12. Copyright © BizReach, Inc. All Right Reserved. 2014年 4月 株式会社ビズリーチ入社 Java歴 0ヶ月 新卒研修
  • 13. Copyright © BizReach, Inc. All Right Reserved. 新卒研修の目標 13 一人でひとつのアプリを作りきる Webサービスの作り方を一通り知る エンジニアリングの楽しさを知る わからないときの調べ方を知る
  • 14. Copyright © BizReach, Inc. All Right Reserved. 新卒研修の内容 14 Webの基礎知識 フロントエンド セキュリティ プログラミング言語 サーバサイド インフラ Web開発の基礎を3ヶ月で学んだ
  • 15. Copyright © BizReach, Inc. All Right Reserved. 新卒研修で学んだ言語など 15 Javaは17日間 Webサービス開発に必要な技術を約3ヶ月で学ぶ
  • 16. Copyright © BizReach, Inc. All Right Reserved. 新卒研修: Javaの講師 16 久保 雅彦 (jflute) 先生 OSSプロダクトDBFluteの作者兼 コミッター、カンファレンスやイ ベントでの講演も多数有 新卒研修のJava講師も担当 ブログ: jfluteの日記 (http://d.hatena.ne.jp/jflute/) Twitter: @jflute
  • 17. Copyright © BizReach, Inc. All Right Reserved. Java研修でやったこと 17 明解Java(入門編) -> Javaの基本から一つ一つのステップを丁寧に解説 -> 図が多く視覚的にも理解しやすい -> 各章に練習問題があり、理解が深まる -> あくまで入門編の内容 Java本で基礎的な知識を身につける
  • 18. Copyright © BizReach, Inc. All Right Reserved. 本に書いてない部分は補う 18 -> 久保さんオリジナルの研修コンテンツ -> 文字検索、置換、StringBuilderなど、文字列の基本操作を学ぶ -> 現場で使われているDBツールを学びつつ死ぬほど修行プログラミング -> レビューがめちゃくちゃ厳しい -> セクション11までクリアするとランチに連れて行ってもらえる  例外、コレクション  StringTest  DBFluteハンズオン (http://dbflute.seasar.org/ja/tutorial/handson/) -> 明解Javaに記載されていないが重要な項目は別途補習
  • 19. Copyright © BizReach, Inc. All Right Reserved. ビズリーチ流Java研修① 19 とにかく現場思考で教える 学んだことが現場でどのように使われるのかをイメージする
  • 20. Copyright © BizReach, Inc. All Right Reserved. とにかく現場思考で教える 20  テキストを読んで学習する -> 情報量が多すぎて、何が大切なのか分からない  現場の話を聞きながら学習する -> 具体的な使い方のイメージが湧く -> 本当に身に付けるべきことが分かる -> 現場配属に向けた準備運動となる
  • 21. Copyright © BizReach, Inc. All Right Reserved. 21 圧倒的な開発スピードを実現するための指捌き タイピング強化、ショートカットキーの徹底 ビズリーチ流Java研修②
  • 22. Copyright © BizReach, Inc. All Right Reserved. 開発スピードを高めるための指捌き 22 事業会社のプロダクト開発はスピードが命 ■ 様々な施策における新規機能実装 ■ 2週間に一度のアップデート ■ MTGなどコーディング以外の業務 そこで… -> 始業時間までタイピング練習 -> よく使う機能のショートカットを記憶 タイピング練習サイト:http://typing.lk/
  • 23. Copyright © BizReach, Inc. All Right Reserved. 23 可読性の高いコードにこだわる チーム開発を意識した変数名、メソッド名、コメントなど ビズリーチ流Java研修③
  • 24. Copyright © BizReach, Inc. All Right Reserved. 可読性の高いコードにこだわる 24 チームで開発するという意識を持つ ■ 流し読みして処理の流れが分かるか? ■ 変数名、メソッド名のつけ方は適切か? -> 最上位のメソッドは処理のフローを書く -> 一つのメソッド内に大量の処理は書かない -> 人が読むことを意識して名前をつける -> 小説を書くかの如く
  • 25. Copyright © BizReach, Inc. All Right Reserved. Java研修でできるようになったこと 25 ■分岐、繰り返しなどの基本的な処理 ■型の扱い(基本型、配列やコレクションなど) ■クラスの概念 やはりクラスあたりから理解がしんどくなる… がんばれ!
  • 26. Copyright © BizReach, Inc. All Right Reserved. 総合演習 Twitter課題 Java歴 3ヶ月
  • 27. Copyright © BizReach, Inc. All Right Reserved. Twitterクローン課題  Javaを使ったはじめてのアプリケーション開発  新卒エンジニア一人一つのTwitterクローンを作る  機能要件、非機能要件、納品要件、特別要件あり 27 機能要件 -> 会員登録できること -> ログイン/ログアウトできること -> 140文字以下でつぶやけること -> タイムラインでつぶやきが閲覧できること -> 他の会員のフォローが出来ること
  • 28. Copyright © BizReach, Inc. All Right Reserved. 基礎からwebの世界へ 28 Javaの基礎 Webの世界 - if文、for文などの処理 - int、Stringなどの型 - クラスの使い方 - サーブレット - webフレームワーク - Tomcat - ビルド、デプロイ なにやら難しい言葉がたくさん出てきた…
  • 29. Copyright © BizReach, Inc. All Right Reserved. Twitter課題の構造 29
  • 30. Copyright © BizReach, Inc. All Right Reserved. Twitter課題ではまったこと  基礎的な文法だけでは歯が立たないwebの世界  System.out.println ってなんだったんだ…  DB検索、画面への値の渡し方、どうすれば… 30 アーキテクチャとか言われても、な んのことかさっぱり分からないよ! JSP?画面のコーディングって HTMLじゃないの? Maven、依存ライブラリ、ビルド、 僕が学んできたJavaって一体…
  • 31. Copyright © BizReach, Inc. All Right Reserved. Twitter課題ではまったこと 31 画面から値を受け取ってDBに入れる、 イメージは湧くけど実装がわからん 検索したデータを画面に渡したい、一 度に渡す方法ってどうするの? XSSとかCSRFとか、いろいろ対策し ないといけないんだなぁ  アクション、フォーム、セッション!?  Beanて何?ググっても「豆」としか出てこない  セキュリティ対策、どこまですればいいの?
  • 32. Copyright © BizReach, Inc. All Right Reserved. どのように進めたか  とにかく本家Twitterを観察して動きを学んだ  それぞれの動きで何が行われるか分解して考えた  「Seasar2徹底入門」を読んで理解を深めた 32 Webフレームワークの使い方を学んだ Javaの基礎文法だけでは作れない
  • 33. Copyright © BizReach, Inc. All Right Reserved. Twitter課題:成果発表 33 各自作ったTwitterを発表する  どんな点に注力したか?つまずいたか?  「この季節が来たか」と先輩方がニヤニヤ  実際に先輩方に使ってもらう セキュリティホールがないか実際にアタックして確認
  • 34. Copyright © BizReach, Inc. All Right Reserved. 先輩方の洗礼 34 ツイートがデカい セキュリティ対策の サイトに飛ばされる エスケープをしておらず、<h1>タグが有効に クロスサイトスクリプティング…
  • 35. Copyright © BizReach, Inc. All Right Reserved. Twitter課題を通して得られたもの  WebサービスにおけるJavaの位置づけ  Webフレームワークの使い方  一人でサービスを形にする実現力  正解までたどり着くためのググり力  セキュリティ対策の重要性 35
  • 37. Copyright © BizReach, Inc. All Right Reserved. エラーメッセージ読め読め大合唱 37 エラーメッセージは必ず読め! 強く言われ続けたこと ※ 大切なのは答えではなく、それを導くプロセス 「これ、動かないんです」と先輩のところに相談し にいくと、「エラーメッセージは読んだ?」「そこ にはなんて書いてある?」と必ず聞かれた 詳しくは「エラーメッセージ読め読め大合唱」で検索!
  • 38. Copyright © BizReach, Inc. All Right Reserved. エンジニアとしてはじめて感じたブレイクスルー ■ プログラムを書いてても実際の使い方が分からなかった ■ コンソール上に何かを出力するという経験だけだった 動くものを作ったことでプログラミングが楽しくなった 38
  • 39. Copyright © BizReach, Inc. All Right Reserved. 39 Webサービス開発で学んだこと3
  • 40. Copyright © BizReach, Inc. All Right Reserved. 初めての配属 ビズリーチ事業 Java歴 4ヶ月
  • 41. Copyright © BizReach, Inc. All Right Reserved. 初めての配属 41 会員制転職サイト「ビズリーチ」の開発
  • 42. Copyright © BizReach, Inc. All Right Reserved. 初めての現場で完全に圧倒された  ソースの量がTwitter課題の比じゃない  ソースを読んでも何をしてるか分からない  そもそもサービスの仕様が分からない 42 ちょ、一体どれだけ ファイルあるんですか! 研修ではSAStruts、今度使うのは別 のフレームワーク! サービス上で使われる言葉、定義な んかもきちんと覚えないと
  • 43. Copyright © BizReach, Inc. All Right Reserved. 2ヶ月でこなした業務 43 1ヶ月目 2ヶ月目 -> シナリオテストを行い、サービスのことを知った -> 先輩にいろいろと聞きながら現場の開発を学んだ -> はじめはサイトの文言変更などの軽い修正から行った -> バグ修正などでいろいろな機能を触った -> 「分からないことが分かる」ようになってきた -> 営業さんからヒアリングを行い、新規機能を追加をした
  • 47. Copyright © BizReach, Inc. All Right Reserved. エンジニアとしての初めての挑戦 ニクリーチ2016開発 Java歴 6ヶ月
  • 48. Copyright © BizReach, Inc. All Right Reserved. ニクリーチ2016というwebサービス 48 履歴書を登録 企業からスカウト お肉を食べる Step 1 Step 2 Step 3 お肉を通じて学生と企業をマッチング
  • 49. Copyright © BizReach, Inc. All Right Reserved. ニクリーチ開発スタート! 49 開発期間は2ヶ月 ニクリーチの主な機能要件 -> 学生はニクリーチに履歴書を登録できること -> 企業は学生の履歴書を検索できること -> 企業は学生をスカウトできること -> 学生をスカウトしたらメールが飛ぶこと
  • 51. Copyright © BizReach, Inc. All Right Reserved. 何から始めていいか分からない
  • 52. Copyright © BizReach, Inc. All Right Reserved. サービスの設計をする 52 どういう開発スタイル? そもそも何がしたい? 使い慣れたものはある? 学習コストはどれくらい?データベースは何使う? フレームワークは何使う? スピード重視で開発したい! 開発のスタイルは…
  • 53. Copyright © BizReach, Inc. All Right Reserved. スピード重視の開発スタイル 53 スピード重視の開発 なぜ? 仕様書が存在しないため作る&改善の繰り返し
  • 54. Copyright © BizReach, Inc. All Right Reserved. トライ&エラーが多い 54  自分は新卒、何が正しい実装なのかわからない  そもそも業務自体がトライ&エラーの繰り返し  プログラムの改変が非常に多い (正解がない)
  • 55. Copyright © BizReach, Inc. All Right Reserved. ニクリーチ2016の構成 55 ■ Twitter課題とほぼ同じ構成 ■ Java8を使って開発
  • 56. Copyright © BizReach, Inc. All Right Reserved. サービス作りで初めて触った機能 56 ファイル操作 メール配信 外部APIとの連携 画像のアップロードに利用した。inputStreamとか初めて触った。 通知メール配信などの実装をした。ここで大はまりした。 FacebookAPIとか触った。普段自分が利用しているアプリって こんな風に実装されてたんだなーと理解できた。
  • 57. Copyright © BizReach, Inc. All Right Reserved. Java8を使った開発 57 ■ Lambda式 ■ Optional -> Java8版のDBFluteを使用、ネストが少なくなり コードがすっきりした -> スコープを意識、安全な実装をすることができた -> ぬるぽ対策になった -> nullに対する意識が向上した
  • 58. Copyright © BizReach, Inc. All Right Reserved. Java8の実装 (1件検索) 58
  • 59. Copyright © BizReach, Inc. All Right Reserved. 59 Java8の実装 (リスト検索)
  • 61. Copyright © BizReach, Inc. All Right Reserved. ニクリーチで使用したwebフレームワーク 61 SAFlute -> SAStrutsをベースにスピード開発に特化 -> リーンスタートアップがテーマのフレームワーク -> トライ & エラーがしやすいホットデプロイ -> (Web側でも) 変更に強いタイプセーフ実装 -> とにかく気合の入ったログ これらのテーマを実現する機能
  • 64. Copyright © BizReach, Inc. All Right Reserved. ホットデプロイの恩恵 64 「あー、ここちょっとソース直したいなー」 アプリを再起動せず確認できる ホットデプロイ! 「こう書いたらどう動くかな?」 思考が妨げられず、実装に集中できる
  • 67. Copyright © BizReach, Inc. All Right Reserved. タイプセーフ実装 (return) 67 Forword Redirect return “index.jsp” SAStruts SAFlute Forword Redirect ベタで記述 return “/edit/” + id + “/?redirect=true” ↑ URLを指定してリダイレクト return path_IndexJsp 自動生成されたパス return redirectById(MemberAction.class, id) ↑ リダイレクト用のメソッド
  • 70. Copyright © BizReach, Inc. All Right Reserved. とにかく気合の入ったログ 70 エラー修正やテストにおいてログは超重要! コードを変更 ログを確認 修正 or 続行 SAFlute -> 元のアクション、実行SQL、Requestパラメータなど -> 読む気になるエラーログ! ※ 詳しくは「ログにこだわるSAFlute」で検索
  • 76. Copyright © BizReach, Inc. All Right Reserved. 使ってよかったDBFlute 76 ビズリーチでも採用しているDBツール 幾度とある 仕様変更 それに伴う DB変更 DBFlute 「DB変更に強い」をコンセプトに作られたDBツール DBFluteの機能に何度も助けられた
  • 77. Copyright © BizReach, Inc. All Right Reserved. 77 たくさん不安との戦い 人生初めてのwebサービス 一般公開するというプレッシャー ギリギリの開発スケジュール 飛ばないメール 悲しみをもたらす500エラー
  • 78. Copyright © BizReach, Inc. All Right Reserved. リリース日に、メールが飛ばない! 78 12/9 午後リリース予定 午前中に最終チェックをしていたら、高確率でメール 配信に失敗することを確認 冷や汗が止まらない私。見かねたCTO竹内が自ら手を動 かし、メール配信処理を別スレッドにすることで対応 このとき、マルチスレッドという概念を知る
  • 80. Copyright © BizReach, Inc. All Right Reserved. 80 先輩に相談しまくりました!
  • 86. Copyright © BizReach, Inc. All Right Reserved. 2014/12/09 ニクリーチ2016リリース Java歴 8ヶ月
  • 87. Copyright © BizReach, Inc. All Right Reserved. したのですが
  • 89. Copyright © BizReach, Inc. All Right Reserved. リリース後の対応  学生の履歴書が登録できない 89  メールが配信されてない リリース前のテストの大切さを学んだ -> 登録学生からの問い合わせを受け発覚 -> バリデーションのバグ、急いで修正してリリース -> メールサーバにコネクションを貼る際に落ちている -> リトライ機能を実装して対応
  • 91. Copyright © BizReach, Inc. All Right Reserved. 現在のニクリーチ 91 お腹を空かせた学生のための肉食就活サイト 学生登録数: 約3,000人 企業登録数: 約80社
  • 92. Copyright © BizReach, Inc. All Right Reserved. ニクリーチのメディア掲載実績 92 新聞 とくダネ! スーパーニュース TV 日経MJ 日本経済新聞 WEB エンジニアtype キャリコネニュース 週アスPLUS
  • 93. Copyright © BizReach, Inc. All Right Reserved. Twitterでも話題に 93 #ニクリーチ
  • 94. Copyright © BizReach, Inc. All Right Reserved. 2ヶ月間でやったこと 94 設計 開発 マネジメント 進捗管理、進捗報告 コンテンツの依頼 プロダクト管理 画面デザイン、遷移 機能要件定義 DB設計、など 開発環境整備 DB構築 画面コーディング アプリコーディング インフラ構築 テスト リリース作業
  • 96. Copyright © BizReach, Inc. All Right Reserved. 96 ビズリーチという環境4
  • 97. Copyright © BizReach, Inc. All Right Reserved. エクセレントなエンジニア達 97 ■竹添直樹 Seasar、Apache Click、GitBucket、Scalatra などのオープンソース活動、JavaやScalaなどの、 数々の技術系書籍の執筆 ■久保雅彦 OSSプロダクトDBFluteの作者兼コミッター、 カンファレンスやイベントでの講演も多数有 新卒研修のJava講師も担当
  • 98. Copyright © BizReach, Inc. All Right Reserved. 著者のサインをいただきました!笑 98 竹添さん 島本さん Java逆引きレシピ
  • 99. Copyright © BizReach, Inc. All Right Reserved. 働く環境 99 オライリー本(日本語版)全巻完備
  • 100. Copyright © BizReach, Inc. All Right Reserved. 働く環境 100 ペアプログラミングスペース
  • 101. Copyright © BizReach, Inc. All Right Reserved. 働く環境 101 ハニカムオフィス
  • 102. Copyright © BizReach, Inc. All Right Reserved. 働く環境 102 ミーティングスペース
  • 103. Copyright © BizReach, Inc. All Right Reserved. 働く環境 103 サイレントルーム
  • 104. Copyright © BizReach, Inc. All Right Reserved. Javaで事業を作りたい エンジニアさん大募集! 株式会社ビズリーチでは
  • 105. Copyright © BizReach, Inc. All Right Reserved. ほぼ毎日 勉強会も開催! 株式会社ビズリーチでは
  • 106. Copyright © BizReach, Inc. All Right Reserved. 106 まとめ5
  • 107. Copyright © BizReach, Inc. All Right Reserved. まとめ  Javaまったくの初心者から1年間でサービスを作った  とはいえ先輩にいろいろ助けてもらった  事業会社の開発はとにかくスピード重視だった  スピード開発を実現する数々の道具を使った  サービス作りにはほんとうにたくさんの学びがあった 107
  • 108. Copyright © BizReach, Inc. All Right Reserved. 108 エンジニアとして大切にしたいこと 学ぶ環境 学ぶ気持ち 先輩エンジニアは偉大 チャレンジできる環境 目線の高さ 学ぶ姿勢を止めない 人は最強の教科書 みんなと競う
  • 109. Copyright © BizReach, Inc. All Right Reserved. これから学ぶ人へ 109 とにかく手を動かす 分からなければ人に聞く 成果が出るまでは努力 頭で考えることと、実際に作ることには大きな差がある とにかく手を動かしてプログラムを書くことに慣れること 学び始めはとにかく分からないことが多くていやになる そんなときは人に聞いてとにかく前に進むことが大切 始めはコンソールに文字を出力することから始まる 実際に動くものを作るのはそれなりに努力が必要
  • 110. Copyright © BizReach, Inc. All Right Reserved. まだまだ分からないことばかりだけど プログラムを書くの楽しい 現在 Java歴 1年

Editor's Notes

  1. もともとものづくりが好きだった ITに関する技術を身に付けたかった エンジニアに対する憧れがあった
  2. 1年間でどのようにJavaを学んだのか 事業会社の開発スタイルについて
  3. Java 17日, 正規表現5日SQL5日HTML/CSS3日JavaScript3日
  4. 【機能要件】 会員登録できること ログイン/ログアウトできること 140文字以下でつぶやけること タイムラインでつぶやきが閲覧できること 他の会員のフォローが出来ること 【非機能要件】 トランザクション処理がされること パスワードは暗号化してDBに保存されていること 基本的なセキュリティ対策が施されていること 落ちないこと わりといいかんじのデザインであること 【納品要件】 発表会にて、作ったTwitterアプリのお披露目をすること 発表会の6時間前までにビズリーチのエンジニア全員にサービスが利用できる状態にすること (AWSのサーバー上でサービス公開) Backlog の Git の hands-on リポジトリでソースコードが公開されてること (ハンズオンと同じ方が気軽に振り返りやすいため) 「何ができていて、何ができていないのか?」が明確であること (ソースコード上のTODOコメントが適切であること) 【特別要件】 何かしらひとつ、「会員がたくさん集まってくれるような施策」を入れること。 手段はなんでも、マーケティング的な要素でもいいし、それを意識した機能でもいいし、デザインでもOK。 発表会でそのストーリー (会員がどういう風に集まってくるのか?) を語ろう。
  5. DIコンテナSeasar WebフレームワークSAStruts O/RマッパーDBFlute データベースMySQL WebサーバーNginx (Tomcatと連携) WebコンテナTomcat (ローカルではJetty)