3年が過ぎた
年度末は胃腸炎になったりバタバタしていて3月中に振り返りエントリを書けなかった。 完全にタイミングを逃したが未来の自分のためにやっぱりまとめておく。
[参考]
1年目 文系からエンジニアになって1年が経っちゃったよ - C-FRONT
続きを読む初めてのサンフランシスコ/海外カンファレンス〜KotlinConf2017に行ってきた〜
初めて海外カンファレンスに行ってきた。次行く機会に自分でも見直せるように書き残しておく。
きっかけ
- ちょうどGoogle IOがあった時でTLでtwitterでいつも見ている人が皆Google IOに行っていることを知る
- 自分の会社、他の部署・他の関連会社では同じ年くらいの人も行っていたのでいいなーと思う。
- 会社で行かせてもらうほど自分に技術やスキルに自信がなかったのですぐには行けないけど、いつか行きたいなと思っていた
- シリコンバレーや海外で働くことに対して漠然とした憧れはあったけど実際に何が良いのかうまく自分の中で説明できなかった。
- 「とにかく海外カンファレンス行ってみたい!」何が良いのかも一回行ってみないとわからないでしょう、一回行ったら気が済むのでは、と思っていた。
Groovy入門して躓きメモ
Java→Groovy初日で出会ったエラーたちやメモたち。 syntaxもよくわからない中で出会って、解決するのに慣れなかったのでメモしておく。
メソッドの呼び出し間違い
メソッドの呼び出しが間違った時
Caught: groovy.lang.MissingMethodException: No signature of method: hogepackage.hogefile.hogemethod() is applicable for argument types: (java.math.BigDecimal, java.util.ArrayList, groovy.sql.Sql) values: ...
特にクロージャの中でエラーが起きるとクロージャのどこでそれが起きているのかよくわからなくて慣れるまで時間がかかった。
変数の宣言のスコープ
http://d.hatena.ne.jp/Kazuhira/20120318/1332083318
before
def sql = Sql.newInstance() Map.each{k,v-> searchUuidByUser(k,v,sql) }
eachの中からsqlは呼び出せない。
Caught: groovy.lang.MissingPropertyException: No such property: sql for class: hogepackage.hogefile groovy.lang.MissingPropertyException: No such property: sql for class: hogepackage.hogefile
after
sql = Sql.newInstance() Map.each{k,v-> searchUuidByUser(k,v,sql) }
def をつけているとクロージャ内やメソッド内から呼び出せない。
列名が無効
before
def SELECT_USER_POINT_HISTORY = "SELECT ID,POINT,INSERT_AT from POINT_HISTORY where ID = $userId ORDER BY INSERT_AT" List<Point> pointList = new ArrayList() sql.eachRow(SELECT_USER_POINT_HISTORY){ Point dto = new Point() dto.type = it.type dto.point = it.point dto.insertAt = it.insert_at pointList.add(dto) }
警告: Failed to execute: SELECT ID,POINT,INSERT_AT from POINT_HISTORY where ID = ? AND TYPE != 0 ORDER BY INSERT_AT because: 列名が無効です。 Caught: java.sql.SQLException: 列名が無効です。 java.sql.SQLException: 列名が無効です。
てっきりSQLが悪いのかと思ってタイポかどうか必死に探したけどSQLが悪いわけじゃなかった
after
def SELECT_USER_POINT_HISTORY = "SELECT ID,POINT,TYPE,INSERT_AT from POINT_HISTORY where ID = $userId ORDER BY INSERT_AT" List<Point> pointList = new ArrayList() sql.eachRow(SELECT_USER_POINT_HISTORY){ Point dto = new Point() dto.type = it.type dto.point = it.point dto.insertAt = it.insert_at pointList.add(dto) }
eachRowの中で参照しているit.typeがselectするものに含まれてないため。 エラー行数をよく見るとit.typeを使っている行を指しているのでわかる
for文の抜けかた
https://stackoverflow.com/questions/3049790/can-you-break-from-a-groovy-each-closure 次のイテレートに入るならeachのままcontinueしてもOK そもそもループを中止したい時(Javaでいうbreakをしたい時)はfindにしてその中でtrueを返してループを終わりにする
pointList.find{ Data data = new Data(); if(nowPoint<it.point){ //breakと同じ。ループを抜ける return true; }else{ //continueと同じ。 return false; } }
TDDBCに参加&ペアプロデモをしました #tddbc
tddbcにスタッフとして参加&ペアプロのデモをしました。
ペアプロのデモとは
TDDBCではTDDのやり方を学んだ後、参加者がペアになってペアプロをしながらTDDを実践するプログラムになっています。 このペアプロでどうやって進めていくのか、のデモを行いました。 今回は@yattomさんとFizzBuzzを題材にペアプロしました。
やってみて
ある程度台本があるので安心です。ここでこういう説明が入るとか。 でも後はその場の雰囲気です。実際のペアプロをやってみせてるだけなので疑問とかもガンガン言っちゃっていいので気は幾分楽です。 今回は@yattomさんがリードしてくださり説明などもしてくれたので、なんとかなりました。 自分の開発環境を前のスライドに映しながら行うので自分の開発環境へのツッコミも新鮮でした。
デモプレイヤーさんが Vimmer なのが気になる…… #tddbc
— えび🦐 (@ebc_2in2crc) 2017年9月30日
— てらひで (@terahide27) 2017年9月30日
今回@PoohSunnyさんから煽られてデモをすることになったけど、「人前でライブコーディングするのが一番成長するからやってみな」と言ってくれたと聞いて感謝してます:pray: (FizzBuzzをライブコーディングして成長するかは置いておいて、新しい経験だったので楽しかったです!)
その他
- 午後は参加者に混じってペアプロやってた。1年目、2年目のフレッシュな方とペアを組んでみて自分も気づきがあって何より楽しかった。
- tddbcの参加者の方々は話がうますぎる。どんなコードを書いたかを前で発表する時間があるのですが、皆さんプレゼンがうまくて引き込まれる。
- 他の言語チームのコードを見たり話を聞いたりするのがとても楽しかった。Spock使ってみたくなったり、良い興味の入り口になったと思う。次は覚えたての言語で参加したい。
- 皆テストについての興味や悩みが共通事項としてあるので、質問タイムも懇親会の即興LT大会もすごく盛り上がって楽しかった。こんなアットホームで参加者同士でこんなに仲良くなれるコミュニティはすごい。
GitHubのPRで質問が来た場合はソースコードにコメントで回答する。これいいなぁ #tddbc
— おれたま (@AHA_oretama) 2017年9月30日
- ペアプロしている同士ではすぐ疑問解決されるから良いけど他のチームメンバーに逆に伝わらなくなったりしないの?な質問だったと思う。
- PRのコメント/質問をgithub上で返すのではなく、コードのコメントに反映して設計意図を伝える方法良いと思った。
ご査収ください #tddbc pic.twitter.com/VxpMv57vT5
— ガオピン (@gaopin1534) 2017年9月30日
最高だった。
みなさんお疲れ様でした!!! #tddbc pic.twitter.com/ftomcuBZsL
— Yotaro TAKAHASHI (@PoohSunny) 2017年9月30日
楽しかった!!!
Tokyo Android Meetupで初英語プレゼンしてきた
Tokyo Android Meetupというイベントで初めて英語でプレゼンしてきました。
#11 Tokyo Android Meetup - July Edition - Tokyo Android Meetup (東京都) | Meetup
Meetup内のイベントは日本開催でも外国の方が参加するイベントが多いらしく、hotchemiさんのブログを見て以前からmeetupのイベントに参加してみたいなと気になっていた。
そんな時にCLEMのイベントに参加したことがきっかけでmeetup参加したことないけど喋ってみることになりました:bow: clem.connpass.com
次回のTokyo Android meetupでtalkをすると良いと思いますね😇 cc: @niko_yuwono
— hotchemi (@hotchemi) 2017年6月29日
準備編
初めての英語プレゼンだったので、アドバイス貰った通りどんなことを話すかスライドとそれに合わせてスクリプトを作成していました。 keynoteのnoteのところにスクリプトを書き出してそれを見ながら練習していました。 英語に関しては、先輩に単純な文法のミスや、言い回しのアドバイスなどをレビューもらいました。
また、内容に関しても直前に社内でLTする場があったので日本語で同じ内容を発表してなんとなく内容について雰囲気をつかんだりしました。
当日行って気づいたこと
英会話のレッスンとネイティブの人が話す速さ、全然違うので聞き取れなかった
- 特に単語と単語がつながりすぎて人によっては全く聞き取れなくて辛かった
- 1ヶ月半英会話続けて単語レベルで英語が聞き取れるようになったと思ったけど速く話されるととたんに駄目だし、はっきり発音されないと何も聞き取れないということがわかった。
DMM英会話で女性の先生のレッスンばかりを受けていたことを後悔した
- DMM英会話初めて1ヶ月半くらい経つのですが、「なんか安心できる」という理由だけで女性の先生ばかり選んでレッスンしていた
- 実際エンジニア界隈は男性が多いのでハードルばかりがあがってしまい当日場が和むまで最高にコミュ障だった
だんだんBGMになっていくのがわかる
- 最初は頑張ってついていってたつもりだけど、途中から完全に頭がついていかなくて全然話が入ってこない
- 自分の今のキャパシティはここなんだなということがわかった。これをどんどん伸ばしていけたらいいなと思った。
感想
- レッスンで話される英語と実際の会話で話されてる英語はちょっと雰囲気が違うのでそれを味わう。本当の会話にどれだけ太刀打ちできるか試しにくる意味ではmeetupのイベントとても良いと思った
- meetup参加すると、「英語ができるようになりたい」じゃなくてこの人たちと話がしたいという思いになってモチベーションアップに良い。
- 参加している外国の方、だいたい日本語も知ってる人が多いので日本人に対して色々な事情理解・配慮してくれているなと感じた
- デベロッパーが使う言い回しなどを覚える貴重な機会。同じ境遇の人が多いから真似できる言い回しなど多いなと感じた。
- 今回はすごくアットホーム。10人くらいの小さなイベントで最初の英語プレゼンをするには良い場所だったと思う。たいしたことない話だったと思うのに、ウンウンうなづいて聞いてくれたのがすごくうれしかった。
- 日本の勉強会とも一緒だが、speakerしたことで日本人だからと関係なく話しかけてくれる人もいて助かった。楽しかった。
- まだ私が来るには早かった、と思ったけど参加してみたらすごく楽しくて参加してよかった。
speaker枠でもらった🎉 pic.twitter.com/WxWSdwDrS3
— よこ ち! (@chiiia12) 2017年7月25日
Second talk is Introduction to Calabash by @chiiia12 pic.twitter.com/noiuq0ofMY
— Niko Adrianus Yuwono (@niko_yuwono) 2017年7月25日
だいぶ楽しんだ模様。定期的に腕試し&モチベーション維持の意味でも良いと思いました。