600000007

プログラムと折り紙のブログです。

JJUG CCC 2016 Fallとキャリア

JJUG CCC 2016 Fallに参加しました。
可能な限りセッションは見たのですが、特に印象的だったものについて。

トレンドとキャリア

いちエンジニアとしては「何の技術を身につけるか」は大事です。それによって歩めるキャリアがだいぶ変わってきます。
それ故に今のトレンドは何なのか、どんな技術を身につけるべきか悩んでいたのですが、

「Webの先輩なんていなかったから、参考となるキャリアパスなんてなかった。好きなことをやればいい」

という言葉にガツンとやられました。
たぶん自分はキャリアの「正解」みたいなのを探していたのですが、よく考えたら業界自体が変化してる真っ最中なので正解もクソもないんですよね。
とは言っても自分の好きなことばかりを中心にするとあまりにもトレンドとかけ離れすぎてご飯を食べていけなくなりそうなので、その辺はバランス取らないといけないのでしょう。
ぼんやりした不安がすっきり消えたので2017年は迷わず進めそうです。

その他CCCで達成した野望

  • 後輩を連れてくる
    • 後輩と一緒にひしだまさんにお礼を言う
  • 夏の納涼LT大会で発表できなかったネタをやる

かっこわるいプルリク

JNAにプルリクをマージしてもらえました。
やったー。
長かったー。

どれくらい長かったかというと、2ヶ月以上かかってます。
マージしてもらったプルリクをみるとオープンしたのは3日前なのですが、これはぐだぐだになったプルリクをクローズして作り直したからです。
どうしてこんなに時間がかかったのか、オープンソースへの参加ハードルを下げるためにも恥を晒しておこうかと思います。

1週間に1回

8月末にプルリクを送ったんですが、予想外にやりとりが続き忙しい時期とバッティングしてしまいました。
そのため実際に対応できるのは1週間に1回。先方もよく付き合ってくれましたね・・・

英語力不足

そのやりとりが増えた原因の一つが英語力不足でした。駄目出しを受けてることはわかるけど何をどうすればいいのかわからないということが多かったです。

  • 誤読して不要なことをする
  • コメント不足でレビュワーと意思疎通がうまくいかない
  • ソースコード書くよりも英語コメント書く方が時間がかかる

こりゃいかんということで途中からしごとの基礎英語 | NHKゴガクで英語の勉強を再開したのですが、これがヒットして後半は大分楽になりました。
英語は勉強というより練習ですねー。

JNA知識不足

単純に知らない機能・知らない使い方を紹介されて、こうすればもっと良くなるよ!みたいな話が多かったですね。
おかげさまでdllマッピングについて詳しくなりました。
というかドキュメント読んでも書いてないマニアックな話ばかりで、プルリク送らなかったら一生知ることはなかったでしょうね。
このへんはプルリク様様です。

マージ失敗

そして最後の最後でマージ失敗・・・。
最後の方はレビュワーもサンプルコードを書いてくれていて、コピーするならマージしてね!と言われたのでマージにチャレンジしたのですが、最終的にコンフリクトを解消できず。何がいけなかったんだろう・・・
そしてもーどうせコミット多くてdirtyなプルリクになっているから、と開き直ってプルリクを作り直しました。
gitはまだ理解が足りてないですねー。


という感じでレビュワーに迷惑をかけながらもどうにかマージしてもらえました。
根気良く付き合ってくれる良い人に面倒見てもらえてありがたかったです。
さすがに適当なプルリクをじゃんじゃん送ろう!という話ではないですが、こんな風に誰もがスマートでかっこいいプルリクばかりを送ってるわけではないので、皆さんもチャレンジしましょう。

Backgammon:エースポイントゲームの定理。

バックギャモンとは | 日本バックギャモン協会

要するにエースポイントゲームに対してどんなに上手に対応したとしても、最悪の目が出てブロットができてしまうことがあるのはしょうがないよね、というお話です。

定理

エースポイントゲームでは、ブロットができてしまうダイスの目のパターンが必ず存在する。

証明

相手はエースポイントにずっと2駒残っているとする。
自陣のあらゆる初期状態から、限りなくブロット作らないで進めることができたとしても、最後の1手前ではインナーボードに2コマ必ず残る。
そのとき、次の手で以下のような目が出ると必ずブロットになる。
・片方はエースポイントをふさがれていることによって動かない目
・もう片方は動ける目
よってすべてのエースポイントゲームでどんな目に対してもブロットを作らないで安全にベアオフすることは不可能。
証明終わり。


・・・あってるかな?

第9回Jenkins勉強会 Jenkins+Windows

第9回Jenkins勉強会 - connpassにてLTで登壇させて頂きました。

slides.com

CIツールは乱立していますが、Windowsに対応しているものって少ないですよね。ただこんな手間がかかる状況だとJenkinsおじさんを量産するのでは?という意見は反論できませんでした。
実際自分も社内でJenkinsおじさんと化しています。その上Gradleおじさんも兼任しているので加齢臭が心配です。

あと引き続きvSphere PluginとLibvert Slave Pluginの簡単なJNLP接続方法を募集中です。
いやとっととJIRAにチケット登録しろという話なのかもしれませんが。
今後はもっと簡単にWindowsを扱えるようにできないか考えたいですね。

他にも言いたかったこと
  • xp/2003以降でGitが動く
    • Git Plugin + Artifactoryで自動インストールが可能
      1. Git for Windowsをインストール
      2. 設定を編集してからzipで固める
      3. Artifactoryへアップロード
      4. Git Pluginで自動配布

JJUG CCC 後日談

社内にて

今回は初めて同僚をJJUG CCCに誘ってみました。
その結果、後輩が一人参加してくれて、会場を右往左往する姿を見ることができました。

そして後日、週一で行っている社内勉強会にて実際に見たセッションを紹介することになりました。
私と後輩で交互に発表。ひとり7分。他人の資料でLTをやるような奇妙なイベントになりましたが、勉強会の同志の意識を高くすることには成功したようで、Java Puzzlersの購入(会社のお金)が決定しました。

Jenkinsと

当日の懇親会でJenkins作者の川口さんとお話をすることができました。
できました、というか酔っ払って絡みました。申し訳ございません。

その場にて熱い想いと酒臭い息をぶつけてしまい、
「スレーブをWindowsサービス化するために.Net Framework3をインストールしないといけないのめんどくさいんです」
.Net Framework2でビルドしてれば問題ないのかと思ってました」
「確か互換性がなくて・・・どうすべきか調べてご報告します!」
と約束をしてしまいました。

してしまいました、というよりは約束したかったんです。Jenkinsに関わりたかったんです。
その後Jenkinsのコードとissueとプルリクとドキュメントを読み漁った結果、このプルリクがマージされれば.Net Framework3のインストールが不要になることが判明。
川口さんにその旨連絡したところ、マージしていただけました。万歳。

Ant「ビルドできません」Travis「よし通れ」

色々順番を間違ってる気がしますが、人生初LTでした。
初LTはJJUGのビール片手にLT&納涼会でやりたいと思っていたので、実現して嬉しかったです。
運営の皆様お世話になりました。

www.slideshare.net

LTで言えなかった事

  • PRを待ってくれてる感じがした
  • 英語は皆雑だった
    • native同士じゃないから気にするだけ損

LTをやってみた感想

  • 予想外のところで笑ってもらって新鮮だった
  • 終了後に知らない人から話しかけられて嬉しかった
  • 死ぬ程緊張したんだけどこれを平然と何度もやってる人達の神経は信じられない
  • 最前列でうんうんうなずきながら話を聞いてくれた某氏に救われた
  • プロジェクターの闇は深い

Macでssreflect

以下はssreflectをMacで動かそうとした悪戦苦闘の記録です。
最終的には、以下のような構成になりました。

  • Mac OS X 10.9.4
  • Emacs 24.3.1
  • ProofGeneral4.2
  • Coq8.4pl4
  • ssreflect1.5

CoqIDE or ProofGeneral

Mac OS X 10.9では、CoqIDE8.4は起動できません。既知の問題みたいです。
操作性も含めてEmacs + ProofGeneralの構成をお勧めします。

Emacs

デフォルトで入っているemacsや、homebrewでインストールしたものをターミナルで使用すると、なぜかgotoによるコンパイル(カーソルがある位置までコンパイルしてくれる)ショートカットが使えませんでした。
Ctrl + C , Enterを実行すると、C-c RET undefinedというエラーになります。
Emacs for Mac OS X なら大丈夫でした。
これはEmacs.appとしてインストールされます。

ssreflectのインストール

homebrewでインストールします。事前にXQuartzのインストールが必要です。
また、ssreflectのダウンロードパスが変わっているので、brew updateを必ずしておいた方が良いです(していなかったせいではまりました・・・)。
# brew update
# sudo brew install ssreflect

clangエラー

初っぱなからclangエラーでつまづきました。
こちら によると、clangのバージョンによる問題だそうです。
xcode5.0.2にダウングレードして回避しました。

ProofGeneralのインストール

ProofGeneralの最新版は4.2ですが、Emacs24系には対応していません。
そのためmakeに失敗すると思いますが、こちらにあった方法で回避できました。Emacs.appの指定方法もこちらにあります。

あとはProofGeneralにssleflectを認識させる必要があります。
Coq/SSReflectの設定にあるようにEmacsの設定変更をするのですが、homebrewとEmacs.appを使ってる関係上、微妙に異なります。

Emacs.appの設定

~/.emacs.d/init.pl を編集します。

ssreflectの場所

パスは/usr/local/Cellar/ssreflect/1.5/lib/coq/user-contrib/Ssreflectになります。

(setq coq-prog-args
(https://staff.aist.go.jp/reynald.affeldt/ssrcoq/install.htmlcons "-R" (cons "/usr/local/Cellar/ssreflect/1.5/lib/coq/user-contrib/Ssreflect" (cons "Ssreflect"
(cons "-emacs" nil)))))

coq topが見つからない

ProofGeneralが正しくインストールされていると、*.vファイルをEmacsで開けば起動されます。
無事起動したので一安心していたら、

Searching for program: No such file or directory, coq top 

というエラーでコンパイルが進みませんでした。
こちら の方法で回避できました。

ここまでくればちゃんと動くはずです!
こちらばっかですね。インターネット万歳。
mathcompはまだコンパイルが終わらないのでまた今度。