情熱プログラマーを読んでやる気が出たという話。
情熱プログラマー 読んだ。
「ソフトウエア開発者の幸せな生き方」という副題の通りの内容で、ただ単にコードを書くだけじゃなくて、いい環境でコードが書けるようなプログラマになろうというお話。
お題に沿った数ページのコラム?が続く形式なので、最近お疲れ気味で読書離れしていた私にはかなりよかった。
電車で読める位薄いですし。
かなり刺さる言葉が多かったのでメモしてみる。
読んだことでやる気も出てきたし、幸せに生きれるように頑張りすぎない程度に頑張るぞー。
メモ
- 勤務先が属している業界の業界紙を読んでみる。
- 社内のどこかにバックナンバーが、転がっていたりする
- スペシャリストになる。
- 書いたコードがコンパイルされてコンピュータが読めるようになる変換手順とか、何故動くのかの原理とか。
- ベンダなんかどこだろうと関係ない、僕はシステムの設計方法を知ってるんだ!
- 情熱を持てる仕事を見つける。
- 「なぜ」、「どうして」を考える。ウィザードが何をしているか。そのコマンドは何をしてくれるのか。
- ビジネスの仕組みを知る。
- お金の流れ、どうやって利益を生み出すのか、生み出しているのか。
- ビジネスの基本に関する本を読む。
- 簿記の資格は取っとけとか言うし、お金の流れは知っとくべき。
- 師匠を探す。
- これは大事な気がする。
- 私みたいに複数の師匠と出会えるのは幸せな事。
- 師匠になる。
- これは全然ダメ。
- ずーっと一人なので業務上で新人に教えた事すらない。
- コミュニティとかもあげられてるけど全然かな。
- そもそもコミュニティとかで恩恵を受けたなら返さなきゃいかんよね。
- ミュージシャンはステージの上では練習しない。
- プログラマーもそうあるべきではないか。
- 自分が何者か。
- ○○社の山pである以前にプログラマの山pであるのではないか。
- 切迫感があれば生産性は簡単に2倍3倍になる。
- そして、切迫感は自分で演出してもよい。
- もっと仕事を楽しくできないかを考える。
- できないことは「できない」とはっきり言う。
- わからないことは「わかりません」とはっきり言う。
- これは意識している。恥はかきすてだし、いくらでもかくべき。
- あわてるな。
- 起きた災難が自分自身や自信のキャリアに永続的な大打撃を与えることなんて滅多にない。
- 自分のあわてっぷりを笑う。滑稽じゃないか。
- そのまま第三者の目で状況を眺める。
- 自分自身を売り込む。
- 凄い事をした、凄いものを持っている。とアピールするべき。
- 誰も見ていなければ、誰も知らなければ意味がないし、評価される訳が無い。
- 説明できることがわかってもらうための第一歩。
- わかりやすい文章を書こう。
- そのためには日々少しずつでも文章を書く。
- そして、それを批判的な目で分析する。
- 自分の書いたソフトウェアに依存している会社があったら、どれだけ自分が重宝されるか。
- コネを作る。
- いい意味では使われにくいが、人は認められるのが好きだし、関心のある話題について語るのが好き。
- どんな凄い人でも他人とのやり取りを好むことに変わりはない。
- 人脈を作るために必要なのは謙虚さを少しだけ抑えること。
- 既に時代遅れ。
- 昨日の波の最前線に立っていても次の波には既に乗り遅れてる。
- 尊敬できる人物、学びたいと思う人物に直接会う機会を探して話しかけてみる。
- 気まずくてもやってみる。
- むしろ気まずいなら尚更やってみるほうが良い。
Excelみたいな表を作れるjQueryプラグインHandsontableを使ってみた。
概要
画面上にExcelみたいななテーブルを作りたかったのでHandsontableを使ってみたのでメモ。
導入方法
導入は簡単。
Sampleページ(消えていたら↓をコピペしてください)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Handsontable Sample</title> <link href="//cdnjs.cloudflare.com/ajax/libs/jquery-handsontable/0.10.2/jquery.handsontable.full.css" rel="stylesheet" type="text/css"/> <script src="//code.jquery.com/jquery-1.11.0.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-handsontable/0.10.2/jquery.handsontable.full.min.js"></script> <script type="text/javascript"> $( function() { var data = [ ["", "Maserati", "Mazda", "Mercedes", "Mini", "Mitsubishi"], ["2009", 0, 2941, 4303, 354, 5814], ["2010", 5, 2905, 2867, 412, 5284], ["2011", 4, 2517, 4822, 552, 6127], ["2012", 2, 2422, 5399, 776, 4151] ]; $('#example').handsontable({ data: data, minSpareRows: 1, colHeaders: true, contextMenu: true }); } ); </script> </head> <body> <div id="example"></div> </body> </html>
メソッドの使い方。
↑で書いたメソッドページの一番上に書いてありますが、読み飛ばして困ったのでメモ。
// 指定行のデータを取得(配列) $('#example').handsontable('getDataAtRow',0);
こんな感じで、handsontableの引数として文字列で指定します。メソッドの引数は続けて設定。
ちょっと困ったこと
- 日本語で値を設定したら初期表示時のカラムサイズがうまく設定されない。
- 一度入力するといい感じに設定されるんですが。。。
- 明示的にカラムサイズ調節行えそうですがみつからなかったので私はcolWidthsオプションを指定して、サイズを固定しちゃいました。
colWidths: [80, 120, 80, 80, 80, 80, 80, 80],
社内で外部勉強会に人を誘う方法を知りたい
最近、割りと外部勉強会に参加しています。
その中で思うことは、「外部勉強会は楽しい!」ということ。
で、私だけで楽しむのもどうかと思うので社内の人とか誘ってみる訳ですが、中々一緒に参加できません。
社内でJava使っているので、Groovyとか見て触ってもらえば一発でハマると思いますし、
この間のGitHubKaigiに参加した時とかに思うわけですよ。
社内の人と一緒に来て、「こういう風にしたいよね。」とか、「あのプロジェクトに使えるね」とか言いたいわけですよ!
うちの会社は意識高い(笑)的な感じではないですが、こういうのに興味はあるけど、行くチャンスもないし、どうやって行くのかわからない。的な人が多いと思うので、結構来てくれそうなんですよ。
でも中々うまくいかない。
↓のような感じでメールも送ったりしてるんですが。
ってここまで書いて思ったのは、個人に向けて言ってないなと。
「○○さん行きましょう!」って言ってないなと。
あれですよね。
人が倒れてる時に、「誰か助けて!」って言うより「そこの赤い服着てるお兄さん助けて!」って個人に言うと効果がある。って奴ですよね。
後、参加後にこんなんやった、楽しかったメールも出してるんですけど、それも何らかの事話す時に混ぜ込んだ方がいいのかな。
「この間の○○で知ったんですけど、××は超便利っすよ!」とか?
あ、勿論全員が全員行くことはないと思いますし、勉強会なんかより大事なものは山のようにあります。
ただ、参加して得られるものは多いと思いますし、逆に参加しない事で得られないものって多いと思うんですよ。
みんな、勉強会行こうぜ!
とりあえず、2014/06/20にGroovyの勉強会あるから行こうぜ!
今日送ったメール晒してみる
各位 山pです。 世間ではiOSガー、Swiftガーとか言っていますが、そんな中GroovyがAndroidサポートを発表しました。 「GR8Conf Europe 2014」(http://gr8conf.eu )とかいうイベントで発表されたらしいです。 (英語恐怖症なのでよくわからないですが、アイコン見るとG*系のイベントみたいです) AndroidはJavaじゃないのでそのままじゃ動かなかったのです。(OracleとGoogleが訴訟とかやりあっていたりします。) Groovyはどうなるのかなぁ?とか思っていましたが、とうとうサポートするみたいです。 そんな大注目の中、2014/06/20(金)にJGGUG(日本 Grails/Groovy ユーザーグループ)が勉強会やるみたいなので行きましょう! しかも今回はLT大会なので、Groovyならこんな事もできる!と感動できるはずです。 今のところAndroidのLTは予定になりですが、Twitter上で振られてる人がいるので、必ず誰かやります。 ■日程 2014-06-20(金) 19:00 - 21:00 品川 ■詳細 わいわいGroovy 〜 教えてG*小ネタ大会 - JGGUG G*ワークショップZ Jun 2014 http://jggug.doorkeeper.jp/events/11365 ■参考URL Groovy on Android https://speakerdeck.com/melix/groovy-on-android Groovy on Androidのサンプルを動かす http://hotchemi.hateblo.jp/entry/2014/06/05/081330 groovyでAndroidアプリを開発 http://qiita.com/epy0n0ff/items/76a18a3e99041bf75e6f Groovy on Androidのサンプルを動かす http://qiita.com/hotchemi/items/b29c70168911b793394b iOSのSwiftとAndroidのGroovy http://rejasupotaro.github.io/2014/06/05/49.html ※Swift程じゃないですが、Groovyも1日でこれだけ記事が書かれるほど人気あるんですよー 以上、よろしくお願い致します
GitHubKaigiに参加してきました。#githubkaigi
去る2014/06/01(日)にGitHubKaigiに参加してきました。
貰ったもの↓ステッカーが嬉しい!
私は申し込み開始2日目位?に申し込んだのですが、既に250人待ちとかいうことになっていたので期待していなかったのですが、
会場を大きくしてくれたのか開催前々日位に参加できることになりました。(それでも350人位はキャンセル待ちがいました。。。)
私自身はそれほどGitHubを使いこなしている訳ではないので、勉強のために参加!
詳細とか
参考URL
私が学んだこと
どちらかというと既に使っている人向けのセッションが多かったので簡単にまとめます。
↑の資料のとこでも書きましたが、私は普段GitHubをそれほど使っていないので「Github実践入門 ─ Pull Request による開発の変革」が一番勉強になったので、この辺りの内容が響いた。
GitHubKaigi Keynote - Speaker Deck
- Pull Requestがあると、ちょっとした事を話しあえたりする。
- ロジック、クラスやメソッド分割、変数名など
- レビューが積極的に行われ、根付いていく
この辺がPull Requestがあるなしでの違い。
- 習慣
- 見る、読む、見られる、読まれる
- 機械
- 修正、拡張、学習
- 品質
- 2eye、over 4 eyes
- 心理
- 不安、安心、自信
- GitHubはコード書いてないくせに声がデカイ人の化けの皮がはがれるシステム
- Atom(GitHub製エディタ)はWindows対応は多分ずっと先。。。
- もうちょっとGit、GitHubに慣れたらもう一回読む
以下メモ
Hello, Github Kaigi
- GHEが21%
- private repositoryは26%
- 結構少ない
- PRを受け取ったことがある人
- 38%
- PRを送ったことがある人
- 57%
- 会社でGithubを使って開発している人
- 50%位
- 会社でissueを使ってチケット管理している人
- 10%位?結構少ない
Github実践入門 ─ Pull Request による開発の変革 (仮)
- @HIROCASTER
- 毎日github使ってる人
- 8割〜9割
- 今日の話は三本立て
Githubを利用していた開発の世界を知る
- 業務とかである場合とない場合
- GitHubの世界へようこそ
- Pull request
- PR プルリ プルリク
- よくあるせかい
- しっくりこないけどなんとなく変数名をつける
- 後で適切な名前を思いついたら変更しよう
- 「後で」は一生こない!!
- githubだとpushの際のコメントに書いておく
- 他の開発者がレビュー
- 良い変数名 + α をフィードバック
- コードに反映
- 2つの世界の差
- 習慣
- 見る、読む、見られる、読まれる
- 機会
- 修正、拡張、学習
- 品質
- 2eye、over 4 eyes
- 心理
- 不安、安心、自信
- GitHubを使っている世界の中にも差がある。
- 使っているだけの人、活用している人の差。
- コードを管理する道具
- コードの価値を高める道具
- 活用している人になる
- 使っているだけのPR
- このメソッド名は抽象的すぎませんか?
- このようなコメントだけ
- 活用している人
- このメソッド名は処理している内容に対して抽象的すぎませんか?
- ○○××という名前のほうが具体的で良いと思うのですが。
- なるほど、○○はクラスに付いているから××とかどうでしょ。
- なるほど××でもいいですね!
- っというように、対話して欲しい。
- 指摘=簡単
- 提案=難しい
- 「なんだよこのコード!」というのはコードを理解してなくても書けなくても言える
- コードをレビューする(ことになる)
- 行動を起こすキッカケを作ることができる
- 粗悪なコード
- 会社や組織の耐性、
- 現実と戦うワークフロー
- コストのお話
- GitHubを使うために学ぶことは多い
- gitの操作、ブランチの概念
- コミットメッセージだとかだとか。。。
はてなブログの開発フローと Github
開発の流れ
- タスク管理
- REDMEINE
- GitHub
- Issuesのみの時代
- ツールを一つに
- タスク管理はissuesのみ
- コードレビューはpullrequest
- 効率アップ
- 問題発生
- チームの重要なものは何?
- issuesには優先度・締め切りの仕組みは少ない
- 今誰が何をやってるの?
- issuesでは進行中のタスクを俯瞰できない
- 開発者の効率は良い
- マネージャがチームの俯瞰を出来ない
- issuesメインに開発者効率は保つ
- カンバン
- issuesの役割
- すべてのタスクはここに入っている
- だれでも追加OK
- 追加されたタスクは毎朝検討
- カンバンの役割
- issuesの中で重要なものだけ
- マネージャが選択
- 重要なものしか追加しない
- 朝会しかみない
- レビュー
- PRしたけど、担当者は決まっていなかった。
- 問題発生
- PRの状態が分からない(のでレビューをためらう)
- レビュー依頼中?
- レビュー一度して修正中?
- レビューもう終わってる?
- レビューが消化されず、PRが凄い量に。
- ベテランだけがひたすらレビューし続けるはめに。
- ○GitHubのレビューツールは最高
- ×しかし促進は少ない。
- 解決案
- レビュー状態をはっきり
- レビュー依頼一覧をわかりやすく
- 解決案として2つ導入
- レビュー状態ラベル
- issuesにラベルを貼り付ける
- レビュー状態ラベル
- レビュータイム
- 14時になったらBOTにレビュー依頼件数を知らせる。
- レビュー依頼を消化する
- リリース
- GitHubとリリース
- マネージャに確認
- マネージャ確認せずにリリースしてしまった
- 自動化しきれない部分でミス
- 自動化しきれない部分を教えないと新人がリリースできない
- リリース用PRにまとめる
- 独自に作業手順書のテンプレートを作れる
- git-pr-release
まとめ
ワークフローは改善し続けることが大事
OSS と GitHub (仮)
How Github Works
- GitHubの人がどうやってGitHubを作っているか
- スライドに日本語で字幕を入れてもらっている。
- 60%の人がリモートで働く社員。
- リモートがデフォルト
- 全てがURLを持つ必要がある。
- 人間のような言葉で話す。
- 絵文字は素晴らしい。
- リモートでやるからこそコミュニケーションコストは低くならない。
※英語のセッションだったので、内容を追うことに精一杯でメモできず。。。
※Tweetを見てると、リモートで働くということに対してかなりいいセッションだったらしい。
Atom, the Programmable Text Editor
Qiita で人気の Git & GitHub ノウハウ(仮)
- タイトルちょっと違うらしい
- Qiitaの中の人
- GitのTipsらしい。
中身は普段からGit使っていないとほぼ理解できず。。。
資料公開されるのでそこを見たほうがいい感じ。
また、資料自体は結構簡単に書いているので、Qiitaの該当記事へのリンクもある。
Rebuild.fm Live
LT
メモなし。
- github-kaigi-2014-lt - Speaker Deck
- Git・GitHubに隠された便利な機能 | GitHub Cheat Sheet(日本語訳) - Qiita
- GitHubEnterprise導入とその効果@Ameba - Speaker Deck
- GitHubで行うreproducible research (GitHub Kaigi, Tokyo, 2014) - Speaker Deck
- Using GitHub to get a better job - Speaker Deck
- Hubotレビュアーおみくじ @ githubkaigi - Speaker Deck
- 20140601_github-kaigi-yunico.pdf - Speaker Deck
- pplog.net の作り方 ( ˘ω˘) ゆるふわ development on GitHub - Speaker Deck
Java Day Tokyo 2014に参加してきました #javadaytokyo
概要
2014年5月22日に開催されたJava Day Tokyo 2014に参加してきました。
- お客様の声 | 地鎮祭お届け隊
- セッション資料
- 一部資料も公開されています。
去年は仕事のため参加できませんでしたが今年は仕事あるのに!有給使わないで!参加許可が出ました。
ただ、私用により昼前からの参加になってしまいましたが。。。(基調講演残り30分のとこで参加)
自分が学んだことまとめ
自分が新たに学んだことは↓な感じ。
- Java8は早い。何もせずにJava8にするだけでパフォーマンスアップする。(2/3位とか)
- 新JavascriptエンジンNashornが結構楽しそう。
- 7までのエンジンRhinoより2〜8倍早くなったとか言ってた気がする。
- リファクタリングという別タスクになってしまうと、許可が必要で、許可はおりない。
- テスト駆動開発入門復刊予定!
- ラムダで使えるメソッド?はかなり充実してるっぽい。
特にNashornは楽しそう。
業務で使えるかどうかは置いといてとりあえずいじってみる予定。
後、Raspberry Pi購入したので、JavaとGroovy入れる!
以下メモ。
基調講演
私用によりラスト30分位から参加。
JavaScript Running On JavaVM: Nashorn
D-1 13:30-14:20 JavaScript Running On JavaVM: Nashorn (新JavaScriptエンジン) Java SE 8では、これまで同梱していたRhinoに代わり、Nashornという新しい JavaScriptエンジンが導入されました。このセッションでは、Nashornの生まれた経緯、特徴、将来に追加予定の機能などをご紹介します。また、このNashornを用いたサーバー・サイドJavaScriptフ レームワークであるAvatarやAvatar.jsについても簡単に紹介します。 #jdk2014_D1
- Oracle Blogs 日本語のまとめ: 江草家について
- の中の人 @OraBlogs_jp
- Nashorn
- サーバサイドのJavascriptについて。
- JavaVMの上で動く
- CompactProfiles 1でも動く
- Rhinoの置き換え
- らいの
- 2〜4倍位のパフォーマンス
- セキュリティ、パフォーマンス
- 作りなおすよりかは1から作りなおすほうがいいんじゃね。
- Javascriptで書けるものはJavascriptで書くよね。
- 何とかの法則
- JavaとJavascript間での相互呼び出し
- 新しいコマンドラインツールの導入(jjs)
- $JAVA_HOME/bin/jjs
- JRE配下にもあるよ
- サポートしていないのは。。。
- Java typrの参照を取得
- Javaオブジェクトのプロパティアクセス
- Lamda SAM Script関数の関係
- スコープ及びコンテキスト
- javascriptからJavaを呼ぶ時には
var ArrayList = Java.type('java.util.ArrayList') var list = new ArrayList() list.add("a")
- Server Side javascript
- Avatara.js
- サーバーサイド
- Avater.js、Avatarは鋭意開発中
- 性能は今の所よくないという話だが、改善していく。
- OPENJDK なので、みんな協力してね!
Java SE 8におけるHotSpotの進化
C-2 14:35-15:25 Java SE 8におけるHotSpotの進化 概要 Java SE 8の主要な機能としてLambda式、Date & Time APIなどが取り上げられることが多いですが、Java SE 8ではJavaVMに対しても様々な改良が施されています。本セッションでは、HotSpot VMにおける改良点などを分かりやすく紹介します。
- バッグデイビッド
- 元JRockitのエンジニア
- PermGenの廃止
- Tiered Compilation
- 色々変わったことはあるけど↑2つだけに絞って話す。
- PermGen廃止
- 悪いところ
- サイジングが困難
- ロードするクラスの数
- ロードするクラスの大きさ
- クラスのオーバーヘッド
- デフォルトが小さい(64mb-85mb))
- パフォーマンスへの悪影響
- サイジングが困難
- いいところ
- あったけ?w
- metadataは自由に拡張が可能。
- サイズの制限がない
- 自由にサイズ変更が可能なので、ユーザが意識する必要性がない
- GCシステムが管理する必要がない
- GCのパフォーマンスがよくなる
- アンロードをクラスローダの単位で行う
- High Water Mark(高水位標)
- Full GCが発生しないとMetaSpaceのコレクションが行われない
- FullGCの頻度が低いシステムのメモリ使用量を制限する必要がある。
- MetaSpaceのサイズがHWMを超えるとFULLGCが実行される
- 調整する必要がある場合
- FULL GCの頻度が高過ぎる時
- メモリの使用量が大きすぎる時
- Compressed Oops(圧縮参照)
- 64bitマシンでも、オブジェクトのアドレスを32bitに格納する
- javaヒープの使用量を節約
- ヒープのベースアドレスからのオフセットを利用
- さらにアドレスのLSBを省略
- --XX:MaxMetaspaceSize
- デフォルト=unlimited
- MetaSpaceの最大サイズ(バイト数)を設定する
- 実行時
- --XX:MetaSpaceSize
- デフォルト=21MB
- 起動時にFullGCの頻度を減らすために大きくする
- 起動時(初期値ってことかな。)
- --XX:MinMetaspaceFreeRatio
- デフォルト=40
- --XX:MaxMetaspaceFreeRatio
- デフォルト=70
- 単位はパーセント
- --XX:+UseCompressedClassPointers
- 64bitではデフォルトで有効
- --XX:CompressedClassSpaceSize
- デフォルト=1G
- 変更ができないため、デフォルト値が大きい
- 起動時にはメモリをreserveするだけ
- 必要に応じてcommitしていく
- ツールも対応
- jmap jstat jcmd なども対応
- Tiered Compilations(「階層型コンパイル」)
- JDK8の新機能ではない
- 古い実装はHotSpotExpressで6u25までバックポートされました。
- JDK8ではようやくデフォルトで有効
- JDK8の新しい実装は従来のバージョンよりかなり充実
- 起動を早くしたい場合 C1
- 起動後のパフォーマンスが必要な場合 C2
- ↑の選ぶ必要を無くす
- JMXで診断コマンドを実行
- まとめ
- 結果として、7→8にすることによってパフォーマンスは2/3位の速さになっているっぽい。
- とりあえず8使っとけ。努力しなくてこんなに早くなるよ!
Javaアプリケーション開発におけるテストとTDDの実践
C-3 15:40-16:30 Javaアプリケーション開発におけるテストとTDDの実践 概要 JUnitを使ったユニット・テストの自動化はこの10年で広まり、多くの現場に導入されるまでにいたりました。当セッションでは、さらに先に進んだトピックである、DBをからめたテスト、Web UIを含めたテスト、統合テストの自動化、テスト駆動開発、CIツール、テスト・カバレッジの話など、Javaアプリケーション開発現場におけるテストとTDDの実践について知見を共有します。
- JUnitは95%位使っている。
- その後!についてリレートークで話していく。
- JUnitテストしてるけど効果的なテストができているかは別。
- 手作業したら負け!
- 自動化のメリット
- 手作業によるコストの削減・ミスの削減
- コンピュータリソースを有効活用
- 文句を言わずに繰り返し何度でも実行
- 楽しい
- ユニットテストは最高のパートナー
- DBとかのテスト
- モックで実行する派
- 実際に繋げる派
- 初期化-Setup
- DBデータの初期化
- 関連テーブルの削除
- シーケンス
- システム時間
- 初期化にかかる処理時間
- テスト用データの準備
- DBデータの初期化
- 準備 Exercise
- テスト対象オブジェクトの準備
- 1つのメソッド(SQL)毎にテストを実行
- 検証 Verify
- モデルの検証
- DBデータへの反映の検証
- 後処理
- 1つのテストで複数のことを検証しない
- 次のテストの初期化に任せて何もしない
- テスト方針
- リアルDBを利用
- フィクスチャはYAMLフォーマットで定義
- 初期化処理でDBをセットアップ
- 後処理ではDBを初期化しない
- DBUnit
- ↑で言ってたことをやってくれるフレームワーク
- About DbUnit
- その他のポイント
- フィクスチャ重要
- ローカル実行
- スローテスト
- とかとか
- 統合テストを自動化せよ
- 統合テストへの道
- DBとかAPPサーバとかUIを含む再実行可能な統合テストは?
- 手動統合テスト
- 膨大なExcelテスト仕様書
- 膨大なテスト実行コスト
- 即レガシー、触るな危険
- 自動化された統合テスト
- 手動テストの最小化
- コスト削減
- レガシー脱却
- 楽しい
- Arquillian
- Arquillian · Write Real Tests
- モックするな!
- ホンモノに近いテストを使用
- 本物の実行環境へデプロイ、本物の実行環境上でテスト
- 公式?日本語でもOK。
- blogとかもあがってきている。
- Seleniumなども含まれて、インジェクションされてるらしい。
- Mock is dead. Long live testing.
- 何でもかんでもモックにするのはよくないよ!
- 勿論必要な場合はあるけどね!
- TDDの話
- みんな知っているけど、やっていない。
- TDDのサイクル
- テストは品質をあげない。
- テストを使用していくことで品質はあがる。
- カバレッジ。
- 書かれているコードに対してテストが行われている事を確認しているだけ。
- バグは書かれていないコードで発生する(仕様漏れだとか。)
- こだわるなかれ。
- こだわるとすれば↓
- 再現性が有る
- 繰り返し可能
- 互いに独立
- テスト駆動開発入門復刊予定! #jdt2014_C3 #javadaytokyo
Lambda式とストリームAPI、並列処理の詳細
A-4 16:45-17:35 Lambda式とストリームAPI、並列処理の詳細 概要 Java SE 8におけるクラス・ライブラリ拡張の目玉は、Stream APIです。この新しい APIはLambda式を中心に設計されており、並列プログラミングが簡単に実装できるようになるだけではなく、よりスマートなコーディング・スタイルを提供します。 本セッションは、Stream APIを利用したフィルタ、マップといった基本的な操作から、より難しいリダクション、グルーピング、コレクションといった操作まで紹介します。また、並列処理についても詳しく紹介します。通常、並列処理を有効にするために、"parallel()"メソッドを追加することで実現できます。しかし単に"parallel()"メソッドを追加する方法には問題があります。たとえば並列処理を行った結果、間違えた結果を返す場合や、想定したパフォーマンスが得られない等のいくつかの落とし穴があります。実際にいくつかの落とし穴のコードを示しながら、その問題をどのようにして解決するかについても説明します。
このセッションは英語だったこと、A-2?からの連続セッションだったことからあまり理解できなかった。。。
ただ、内容はわからなかったもののコードが多かったので実際のラムダの使用方法を見ながら概要はわかった感じ。
Groovyのsumメソッドは空のListで実行するとnullが返ってくる
GroovyではCollectionクラスにsumメソッドがあります。
assert [1,2,3,4,5,6].sum() == 21
普通に使っている分にはいいですが、空のListだとnullが返ってきたので驚きました。。。
assert [].sum{} == null
で、Twitterで呟いたら。。。
こんな風にやればいいっぽい。
assert [].inject(0) { x,y -> x+y } == 0
実コードではsumにクロージャ渡してたので、同じようにListとクロージャ渡すようにして解決しました。
def sum = {l,c->l.inject(0) { x,y -> x + c(y) }}
【東京】 JJUG&JGGUG 共催ナイトセミナ 「4.30 2時間で分かる!次世代ビルドツールの本命Gradleの全貌」に行ってきた #jjug #jggug
導入編
- 現在の最新版は1.12でバージョン1の最終版。
- 次のリリースはバージョン2になる。
- Gradle本執筆中!
- いつ発売予定って言ってたっけ??
- GradleはAnt/Maveのいいとこ取り。
- 標準化と柔軟性の両立
- ビルドスクリプトはGroovyで記述
- どこぞのXMLなんかより余程見やすい!
- for、ifなどが使えるのでやりたいことがすぐ書ける!
- Make → Ant → Mavenと進化してきたビルドツールの決定版
- Gradleがインストールされていなくてもラッパーをバージョン管理システムに入れておけばおk
- Androidの次のビルドツールがGradleに決定
発展編
資料のアジェンダコピペ
- 導入編
- Gradle概要
- Gradleの利用方法
- 基礎編
- Gradleの基礎
- Javaプロジェクト with Gradle
- マルチプロジェクト with Gradle
- 発展編:会社で使うGradle
- 信頼性の高いビルド
- 気軽なカスタマイズ
- 既存環境の活用
発表資料とか
- 概要
- togetter
- 発表資料
- youtube