2014年、環境がすごく変わって、最高の一年だった。
ので、ぼんやりと思い出を振り返る。
ぐだぐだと書いてく。
このエントリーはしょぼちむ Advent Calendar 2014 - Adventarの25日目(ラスト!!!)の記事です!
24日目はうらがみさんのしょぼつむ #syobochim — 裏紙でした!!!
まさかのAdvent Calendar完走!!!そしてみなさんガチすぎ…!!:(;゙゚'ω゚'):
すごいものつくってくれた人がいたり、テストについて話してくれるひともいれば、チーム運用のはなししてくれるひともいたり、えっ!まさかこの人も書いてくれるの?!というサプライズいっぱいあり。。。
しょぼちむとはなんなのかを考える良い機会になりました(・−・)(真顔)
ネタあり真面目あり、技術ありネタありで、すごくすごく楽しい一ヶ月を
みなさん、私にいろいろなことを教えてくれる!!!うれしいたのしいうれしい!!!!('ω'≡'ω'≡'ω'≡'ω')
そこで。。。。
(このエントリーはKotlin Advent Calendar 2014 - Adventarの21日目の記事です!)
24歳、このままKotlinをやらずに20代後半に足を踏み入れていいのか自問し、
ついにKotlin童貞を捨てる事にしました。
あと、ついでにAndroid童貞も捨てます。
しょぼちむ Advent Calendar 2014 - Adventarの12日目、[twitter:@grimrose]さんの
open build/reports/life/index.html: しょぼちむさんがKotlinをやらない理由を考えてみたの記事に、こう↓かいてあったので、とりあえずGitHub - JetBrains/kotlin: The Kotlin Programming Languageにスターつけるとこから始めた。
よし。いい滑り出しです。
続きを読むIntelliJ IDEA、Jが大文字なの最近知った…。
ブログ書くの相当のんびりしてしまった…。
JJUG CCC 2014 Fall - 日本Javaユーザーグループ | Doorkeeper
のイベントで、サムライズムの@yusukeさんによるIntelliJ IDEAのハンズオンがあったので、参加してきました!!
のんびりと2時からの参加だったよ!!
ハンズオンの資料はこちら!
丁寧に書いてあって、ハンズオン参加しなかった人もやってみると良いのではなかろうか!
yusuke/ideahandson · GitHub
参加レポは別で書くよん
BCELはClassファイルを解析するためのライブラリです!
findBugsでも使われていて、『このclassでこういうmethodを使用しているときにはbugを検知する』っていう解析ができる!
前に仕事で、findBugsの解析クラスを作成したことがあって、そのときにBCELを知りました!
今回のLTでは、クラスファイル名とメソッド名を調べるだけだったけど、
アクセス修飾子(publicなのかprivateなのか)のような、MethodやClassの属性を調べることもできる
ただし、開発自体は2006年でとまってる…(^p^)
LT終わった後に、@miyakawa_takuさんにASM - Home Pageを教えてもらった!
こちらは、今も開発されているので、Java8環境での解析をする場合は、ASMの方がイイ!!らしい
ASMの話はまた別でする!*1
mavenリポジトリがある!
Maven Repository: org.apache.bcel » bcel » 5.2
ので、準備も簡単!
<dependency> <groupId>org.apache.bcel</groupId> <artifactId>bcel</artifactId> <version>5.2</version> </dependency>
Classを取得したいときはこう書けばOK!
JavaClass javaClass = new ClassParser(<<解析したいClassファイルのファイルパス>>).parse();
ClassファイルのMethodを取得して、Listとしてもつときはこう
List<Method> methods = Arrays.asList(javaClass.getMethods());
methodを一つ取得して、アクセス修飾子を調べたい場合はこう書けばいい
methods.get(1).isPrivate()
↓こうかけば、javapしたときに表示される情報が一行ずつ詰まってるStreamができる*2
methods.stream() .map(Method::getCode) .map(code -> Utility.codeToString(code.getCode(), javaClass.getConstantPool(), 0, 1, false)) .flatMap(s -> Arrays.stream(s.split("\n")))
↓この情報が入ってるよ!
173: invokevirtual java.lang.StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
ちなみに
を確認することができるよ!
ちなみに、LTしたときのソースはこんな感じでした!
import org.apache.bcel.classfile.ClassParser; import org.apache.bcel.classfile.JavaClass; import org.apache.bcel.classfile.Method; import org.apache.bcel.classfile.Utility; import java.io.File; import java.io.IOException; import java.util.Arrays; import java.util.List; public class SyobochimJyoshiryokuDetector { static final String PATH = "/Users/syobochim/dev/gist/build/classes/main/jjugccc2014/"; public static void main(String[] args) { File dir = new File(PATH); List<File> files = Arrays.asList(dir.listFiles()); files.stream() .filter(File::isFile) .forEach(file -> { try { JavaClass javaClass = new ClassParser(file.getPath()).parse(); System.out.print(javaClass.getClassName() + " : "); if (hasJyoshiryoku(javaClass)) { System.out.println("女子力あります"); } else { System.out.println("女子力ないです"); } System.out.println(); } catch (IOException e) { e.printStackTrace(); } }); } private static boolean hasJyoshiryoku(final JavaClass javaClass) { List<Method> methods = Arrays.asList(javaClass.getMethods()); return methods.stream() .map(Method::getCode) .map(code -> Utility.codeToString(code.getCode(), javaClass.getConstantPool(), 0, 1, false)) .flatMap(s -> Arrays.stream(s.split("\n"))) .anyMatch(s -> s.matches(".*Syobochim\\.jyoshiryoku.*")); } }
SCRUM BOOT CAMPをよみました!
ところどころが漫画で書いてあるし、内容もすごく噛み砕いて書いてあったので、
すごく読みやすかった!2日で読めた!!
でも、ちゃんと内容も充実していた!!
初心者にはすごくおすすめ!
ちなみに、書籍のなかで紹介されている@kakutaniさんのインセプションデッキのテンプレがこちら!!
support/blank-inception-deck at master · agile-samurai-ja/support · GitHub
SCRUMやってみたい。
新人配属してからずっと保守運用チームで、最近開発チームに移動しまして、
いま、初めての開発(ウォーターフォール)をやっているんですが、
なにせ、外部設計工程・内部設計工程・PG工程と、それぞれで期間が空いちゃう。
ウォーターフォールにはウォーターフォールで良いところはあるのかもしれないけど、
外部設計工程で考えた事を、内部設計工程で思い出しなおして考えて、
PG工程でまた思い出しなおして考えて、って無駄な時間をかけちゃってる気がする。
あと、(これは設計書のフォーマットが悪いのかもしれないけど、)
内部設計工程でメソッドに引数の型を記載する項目が設計書*1にあったりして、
余計な考察をしなきゃいけなかったりする。(作ったほうがはやい!)
スクラムでは、1ストーリーを通しで実装出来るぶん、↑で書いたみたいな余計な時間をかけなくて済む感じある!!!
開発チームとスクラムマスターの役割に関しては、(知見ある人に教えいただければ、)部内でも始められそうな気がする。
ただ、私のいる環境で一番難しいのは、良いプロダクトオーナーを確保することなんじゃないかなぁと思う。
私のいる部署は内部受託開発請負の部署で、お客さまとの距離がわりととおくて、
要件や仕様をきめるのは他の部署の人なんだけれど、そういう人に要請をだすのがハードルになる気がするなぁ。
きちんと要件や仕様を決定することができて、
スプリントレビューやデイリースクラムにも積極的に参加してくれて、
スコープの調整を顧客に行ってくれる。
そういうプロダクトオーナーがいるっていうのが、開発を救う気がする。
【東京】◆Java SE 8勉強会◆女子部もラムダ式に挑戦! - Java女子部 | Doorkeeper
に参加してきました!
遅刻してしまって、前半の『Java SE 8の基礎解説』には出れなかったんだけど、
後半の『ラムダ式ハンズオン』で前半の『Java SE 8の基礎解説』で勉強した内容を試してみよう!
っていう感じだったので十分楽しめました!
参加者のみなさんは、(会場で手を挙げてアンケートとってたけど、)GitHub使った事ない人がほとんどで、
GitHubに自分のリポジトリありますかって質問に2人しか手が挙がらない感じだった。
でも、GitHubからPJをもってくるところとか、PJをIDEで開くところとかを、
運営の人が丁寧に教えてあげてて、初心者歓迎の言葉にうそはなかったんだ!と思った!*1
1時間半のハンズオンってことだったので、内容は絞ってたけど、
それでも、難しそう!と思ってたラムダ式、Streamに親しみをもてたので、
すごくいい感じだった!!
さくらばさん!運営の方々、みなさまみなさま、ありがとうございました!
*1:初心者向けって書いてあるのに初心者向けじゃない!みたいなの、たまーにありますよね…。