satoryuの日記

忘れっぽいから覚えてるうちに書いておかないと。

2019年振り返り

2019年の大晦日となりました。 本年もまた関わってくださった皆々様方のおかげで、今このようにして生きていけるのだな、と思い、大変感謝しております。 来年もまた引き続きよろしくお願いいたします。

ここ数日はこの1年に起きたことを思い返すことが多く、簡単に書き残しておきたいと思います。

TL; DR

今年も色々頑張ったし、来年も頑張るぞ!

お仕事

今年の1番の出来事はやはり転職でした。

satoryu.hatenablog.com

個人としての転職活動ではなく、チーム転職という方法をとりました。 個人でする転職活動に比べて、同じ立場で意見を交換できる相手がいるというのが一番のメリットじゃないかなと思いました。

またそれを折りに、9月より個人事業主として開業もいたしました。 チームとしてだけでなく、個人としても何か貢献できることを持てるようにということで始めました。 これまでの繋がりからのご縁のおかげで、いくつかお仕事をいただくことがでました。 普段(?)のRubyist業の延長やちょこっとAIっぽいことをやることができました。 本業ではなかなか出来ない業務だったので、自分の幅を広げるきっかけになったと思い、感謝しております。 ご依頼はこちら↓からお願いします。

satoryu.github.io

さて本業の方ですが、他社さまとの協力して新しいことに挑戦するようなことを続けてきました。 製造業という異業種に移ってきたところで、まだ右も左も分からないながらも、なんとかコミットできているのではないかと思っています。

勉強会

振り返って気づいたのですが、スクラムフェス大阪って今年だったんですね… RSGT2019 があって、SFO2019があって、年初が濃厚だったのを思い出しました。 基調公演のお手伝いしたり、自分のセッションもあったり、大阪の人たちが優しかったり、えがった゛ああああああ。

satoryu.hatenablog.com

今まで自分が話したことない類の講演だったので、いつもより準備を万端として望めました*1。 個人的な名誉として、アジャイルラジオでちょっと触れてもらえたってことです。 「ファッションコミュ障」って名誉じゃないですか?

agileradio.github.io agileradio.github.io

下半期では、OSS Gateのワークショップへのサポーターとしての参加を再開させました。 2年半ぶり(?)くらいに参加したのですが、「久しぶりですねー」と暖かく迎えてくれたのがありがたかったです。 次回のワークショップは、1/25(土)にスタディプラスさんで開催します。

oss-gate.doorkeeper.jp

あとXP祭り2019に4年ぶりくらいに参加してきました。 LTでOSS Gateの宣伝をさせてもらいましたが、アレを聞いてワークショップに来た人はいるんだろうか🤔

買ってよかったもの

今年は、モノとの出会いも多い年でした。

この2つは家でのコーディングライフをかなり快適にしてくれました。 4月末ころから、坐骨神経痛になってしまい、それから使い続けています。 最初は座椅子のみでした。 そこに、Trayboを組み合わせることで、目線が少し高くなることで首の疲れ減り、直接Macbookを脚に載せないので脚へのストレスも減りました。

もう1つコーディングライフを改善しれくれたのがMOFTでした。

これは、背面に取り付けることができるパソコンスタンドでして、薄くて軽量で持ち運びが楽。 副業の作業場所として、外のカフェなどを使うことが多くなりました。 テーブルで作業する時に画面の高さを上げるだけで、首の疲れとかがかなり改善されました。

あとビールに対する姿勢が変わりました。 転職祝いにたくさん送っていただきまして、1ヶ月ほど毎日おいしいビールが飲める環境でした。

こんなのを1ヶ月くらい飲んでしまったせいで、「とりあえずア○ヒ」なんてことが言えなくなってしまいました。

来年の目標

今年は転職活動の期間もあり、本業でコードを書く時間・量が少なかった年でした。 来年は、商用なりなんなりで、サービスとして育てていけるような開発をやりたいですね。

個人事業主としては、引き続き自分の門戸が広げていければと思います。 いろんな人と関われたらそれだけでも儲けものなので、いろんな方からお声がけいただけるといーなー*2

勉強会は、OSS Gateをもうちょっといろんなところで開催できないかと考えています。 OSSへの貢献を始めたいと思って参加しに来ているビギナーの方々は様々なところから来てくださるのですが、サポーターは若干偏っていそうという問題があります。 もともとRuby界隈の人たちがたまたま集まって立ち上がったこともあるため、サポーターもまたそういった界隈から来るのが自然な流れとなってしまっているようです。 ということで、来年はもうちょっと認知度上げていけたらなぁ、と。

それでは、良いお年を。

*1:暇だったとも言える。

*2:「営業しろよ」というツッコミはもっとも

OSS Gater 東京 ワークショップ 12/14 にサポーターとして行ってきた。 #oss_gate

f:id:satoryu:20191214150543j:plain

oss-gate.doorkeeper.jp

今年最後のOSS Gate東京ワークショップにサポーターとして行ってきました。 今回参加のビギナーの方は4名*1。 多様な業界、言語から来るのはいつもどおりですが、普段コードを書くお仕事ではないという方がいたのは印象的でした。 それでも全員フィードバックを送って終えることができました!

ビギナーさんから「OSSの貢献ってドキュメントから入っていくのが良いんですね」ということを言われました。 確かにそうではあるんだけれど、それだけじゃないんだよなぁ、という気持ちがあったのだがその時にうまく伝えられなかったのでここに書いてみます。

まず1つに、ワークショップを運営する上でやりやすくするためという意味があります。 ただ単に「対象のOSSを使ってみてください」では何をしたらいいのかわからないので手が進まない人は進まないものです。 誰でも手が進められるような手順として、ドキュメントに沿ってもらうようにしています。

またドキュメントは、貢献できそうなおかしなところが見つかりやすいところです。 開発者がたくさん参加しているOSSでも抜け漏れやコードの状態と合っていないものが見つかります。 実際、今回のワークショップでも、JenkinsのドキュメントにサポートしているJavaのバージョンが実際と異なるという発見をしています。

ドキュメントの修正もOSSへの貢献の方法の1つであるということに気づいて欲しいという意味もあります。 ビギナーの方が想像しているOSSへの貢献が、コードの修正だけだと思っている方も少なからずいます。 単にドキュメントを修正といっても、それ自体が生み出す成果は大きいものであります。 先のJenkinsがサポートするJavaのバージョンの例だと、古いJavaのバージョンをインストールする必要があるのかと思ったら、ドキュメントと異なり新しいバージョンでも実際は動くというのがエラーメッセージに出ていたわけです。 ドキュメントが正しく現状と一致していたのであれば、わざわざ古いJavaを用意したりする必要がなくなりますし、複数のバージョンでサポートされているとなれば選択肢が増えます。

そして、このワークショップでやっていることは、「普段の仕事でコードを書いている」というシチュエーションに置き換えて考えてほしいです。 このワークショップでは、普段の仕事などで何かOSSを使おうとしたら問題に出くわす、というシチュエーションを再現しているわけです。 ですので、普段の開発でOSSの問題に出くわした時は、このワークショップでやったように、自分が何をしたのかまとめてみたり、どういった動作を期待したのかを書いてみたりすることで、OSSへフィードバックができるはずです。

f:id:satoryu:20191214160709j:plain

Special Thanks

会場提供は、Pepperアトリエ さんでした。 たまたま何かのイベントであまったお菓子やコーヒーも提供していただきました。

pepper-atelier-akihabara.jp

その名の通り、Pepperのハンズオンセミナーを中心としたワークショップの会場だそうです。 上の写真は、ワークショップのためにレイアウトした後なのですが、Pepperが20人くらいいました。 この季節らしく、サンタの格好をしたPepper達がお出迎えしてくれたのが可愛らしい。

f:id:satoryu:20191214150558j:plain

会場貸し切りキャンペーンというのを年度末までやっているそうなので、勉強会を開催したい人は検討してみてはいかがでしょうか。

*1:うち1名は会場担当の@maeshoさん

XML文書からXPathで要素を抜き出すCLIツールを作った

この記事はRuby Advent Calendar 2019 10日目の記事です。

久しぶりにアドベントカレンダーにエントリーしたので、最近作ってみたいと思った地味なgemを作りました。

TL;DR

作ったものはこちらです。

github.com

しかしながらRubygems.orgのMFAで詰まってしまっていて、まだリリースできていません。 もし使う場合は、上のリポジトリをcloneしてgemファイルをビルドし、インストールする必要があります。

動機

お仕事でXMLドキュメントを解析しながらそれを処理する必要がありました。 複雑なXMLドキュメントで、スキーマもいまいちわからないものだったので、いきなりコードを書くよりも、必要な情報を抜き出すためのXPathはどんなものだろうかというのを試行錯誤するところからはじめました。

XMLパーサーといえばNokogiriと思い、nokogiriに同梱されているcliを使ってみました。 これはこれで便利で、指定したドキュメントを@docに読み込んだ状態でirbが起動されます。 便利なのですが、XPathで抜き出した要素が大量に出てくる時の表示が面倒だったり、結果をファイルに保存する時にいちいちFileを操作しないといけないのが煩わしいと思いました。

そこで、解析したいXMLドキュメントとXPathを指定することで、XPathにマッチする要素を出力するだけのコマンドラインツールを作ることにしました。

使い方

READMEに記載していますが、シンプルにXML文書のファイルパスもしくはURIXPathを指定することで実行できます。

kamikiri --file /path/to/xml/file.xml --xpath '//foo/bar'

例えば、下記のように、CDのカタログから1980年代の10ドルより高いCDを抜き出すことができます。

$ kamikiri --file https://www.w3schools.com/xml/cd_catalog.xml --xpath '//CD[PRICE > 10.0][YEAR > 1990]'
<CD>
<TITLE>Empire Burlesque</TITLE>
<ARTIST>Bob Dylan</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>Columbia</COMPANY>
<PRICE>10.90</PRICE>
<YEAR>1985</YEAR>
</CD>

パイプやリダイレクトと組み合わせれば、ファイルに保存したり一部の文字列を書き換えたりとか幅広く使えそうです。CLI、便利。

おまけ

ある程度形になって実行できるようになったのでrubygems.orgにgemファイルをpushしようとしたのですが、MFAのOTPコードを入手する手段を失ってしまいました。 以前にMFAの設定した時に登録したデバイスiPhone)から今のデバイスに乗り換えた時に、登録していたAuthenticatorをアンインストールしてしまったためです。 MFA LevelをUIとAPIの両方に設定していたので、rubygems.orgのウェブ画面からログインする際にもOTPコードを求められてしまう状態です。

サインイン画面から確認メールを再送することで、ログイン状態にすることはできたのですが、ドキュメントにあるようにプロフィール編集画面にQRコードが出てこない状態です。

Setting up multi-factor authentication - RubyGems Guides

という状態のため、今回作ったgemをまだリリースできないままでいます。 誰か助けて。

マーティ・ケイガン推薦書籍の日本語版を探してみた。 #pmconfjp

プロダクトマネージャーカンファレンス2019の基調講演は、あのInspiredの原著者マーティ・ケイガンでした。 マネジメントやプロダクトのデザインとかそういう話ではなく、意外とチームや人の話で、とても共感できる部分があったり、とても考えさせられました。

基調講演中、氏が推薦図書を紹介してくれました。

で、さらっと中身を知りたいと思ったので、日本語版の書籍を探してみました。 一部は翻訳されていませんでしたが、原著はAmazonで購入可能のようです*1

PRINCIPLES(プリンシプルズ) 人生と仕事の原則

PRINCIPLES(プリンシプルズ) 人生と仕事の原則

ワーク・ルールズ! ―君の生き方とリーダーシップを変える

ワーク・ルールズ! ―君の生き方とリーダーシップを変える

米海軍で屈指の潜水艦艦長による「最強組織」の作り方

米海軍で屈指の潜水艦艦長による「最強組織」の作り方

THE CULTURE CODE ―カルチャーコード― 最強チームをつくる方法

THE CULTURE CODE ―カルチャーコード― 最強チームをつくる方法

上のスライドとは別で、AmazonAppleGoogleのファウンダー達をコーチングした故ビル・キャンベル氏に関する本の日本語訳も近々出版されるようです。

Amazon CAPTCHA

ということで、当面読みたい本には困らなそう*2

*1:在庫は確認してませんが、検索にヒットするのは確認しました。

*2:読むとは言っていない。

「闇に魅入られた科学者たち」を読んだ。

闇に魅入られた科学者たち―人体実験は何を生んだのか

闇に魅入られた科学者たち―人体実験は何を生んだのか

たまたま図書館で見かけたのだけど、科学倫理の話として面白かった。

副題にあるように、犠牲者を出す人体実験を行ってしまった5人の科学者について書かれている。 時代背景などは異なるが、好奇心や国家への忠誠心、理想が生み出されている。 人体実験を行った科学者本人それぞれは、それぞれが従った正義を否定することはないようだ。 本文中にも書いてあるのだが、謝罪することはそれまでの自身が行ったことを否定することになり、それは自身が気づきあげてきた理論を否定することになるからなのだろう。 あくまでも科学や国家、人類のために、ということを裏付けとして行ったことで、それは誤りではないということなのだろう。 確かに、彼らが行ったのはエセ科学というものではなく、それぞれの領域の発展に貢献する結果も出してはいる。

科学者といえどもただの人であり、置かれた状況によっては、間違った行為と思いつつも誤ったことに手を出してしまうのかもしれない。 それは「服従の心理」に書かれていることがそのままなのだろう。

satoryu.hatenablog.com

この本の最後に池内了氏が言うように、科学者の暴走を止めるために、行き過ぎた科学者に対して一般市民が声を出して批判することは大切なのだろう。 そのために、科学について知っておく必要があるのだな。 と思った。

エクストリームプログラミングを読んだ。

エクストリームプログラミング

エクストリームプログラミング

先日参加したXP祭り2019までの予習として読んでいたのだけど、当日までに読み終えることができなかったが、ちまちまと読み進めてやっと読了。

この本を読む前までは、エクストリームプログラミングについては名前しか知らなかった。 本を開くまでは、プラクティスについて記述された本だと思っていた。

10年以上前に学生の時に、ペアプログラミングを同期とやったことはあった。 チーム開発というわけではなく、スポットで一緒に知識を出し合ってコードを書いてみたかっただけで、どちらかと言えばモブプロっぽい目的だったと思う。 就職してから初めてチーム開発をするようになった。 テスト駆動とかCIとか言葉しかしらなかったものを真面目に学び始めたのもその頃から。ということを、本を読みながら色々と思い出した。 先日のXP祭り2019での基調講演で、「どこにでもXPのかけらがある」といった話をしていたが、なんとなくそれが納得いった気がする。