FestのTシャツが届いた。昨年はDigitalOceanとDEVが共催していたので、ステッカーがにぎやか。satoryu.hatenablog.com今年もちまちまとOSS活動を頑張ります。Tumblr2019年の大晦日となりました。本年もまた関わってくださった皆々様方のおかげで、今このようにして生きていけるのだな、と思い、大変感謝しております。来年もまた引き続きよろしくお願いいたします。ここ数日はこの1年に起きたことを思い返すことが多く、簡単に書き残しておきたいと思います。今年の1番の出来事はやはり転職でした。satoryu.hatenablog.com個人としての転職活動ではなく、チーム転職という方法をとりました。個人でする転職活動に比べて、同じ立場で意見を交換できる相手がいるというのが一番のメリットじゃないかなと思いました。それを折りに、9月より個人事業主として開業もいたしました。チームとしてだけでなく、個人としても何か貢献できることを持てるようにということで始めました。これまでの繋がりからのご縁のおかげで、いくつかお仕事をいただくことがでました。普段(?)のRubyist業の延長やちょこっとAIっぽいことをやることができました。本業ではなかなか出来ない業務だったので、自分の幅を広げるきっかけになったと思い、感謝しております。ご依頼はこちら↓からお願いします。satoryu.github.ioさて本業の方ですが、他社さまとの協力して新しいことに挑戦するようなことを続けてきました。製造業という異業種に移ってきたところで、まだ右も左も分からないながらも、なんとかコミットできているのではないかと思っています。あって、SFO2019があって、年初が濃厚だったのを思い出しました。satoryu.hatenablog.com今まで自分が話したことない類の講演だったので、いつもより準備を万端として望めました*1。個人的な名誉として、アジャイルラジオでちょっと触れてもらえたってことです。Gateのワークショップへのサポーターとしての参加を再開させました。2年半ぶり(?)くらいに参加したのですが、「久しぶりですねー」と暖かく迎えてくれたのがありがたかったです。次回のワークショップは、1/25(土)にスタディプラスさんで開催します。oss-gate.doorkeeper.jpあとXP祭り2019に4年ぶりくらいに参加してきました。買ってよかったもの今年は、モノとの出会いも多い年でした。(ライムグリーン)メディア:この2つは家でのコーディングライフをかなり快適にしてくれました。4月末ころから、坐骨神経痛になってしまい、それから使い続けています。最初は座椅子のみでした。そこに、Trayboを組み合わせることで、目線が少し高くなることで首の疲れ減り、直接Macbookを脚に載せないので脚へのストレスも減りました。1つコーディングライフを改善しれくれたのがMOFTでした。オフィス用品これは、背面に取り付けることができるパソコンスタンドでして、薄くて軽量で持ち運びが楽。副業の作業場所として、外のカフェなどを使うことが多くなりました。テーブルで作業する時に画面の高さを上げるだけで、首の疲れとかがかなり改善されました。あとビールに対する姿勢が変わりました。転職祝いにたくさん送っていただきまして、1ヶ月ほど毎日おいしいビールが飲める環境でした。12本セットメディア:こんなのを1ヶ月くらい飲んでしまったせいで、「とりあえずア○ヒ」なんてことが言えなくなってしまいました。今年は転職活動の期間もあり、本業でコードを書く時間・量が少なかった年でした。来年は、商用なりなんなりで、サービスとして育てていけるような開発をやりたいですね。個人事業主としては、引き続き自分の門戸が広げていければと思います。いろんな人と関われたらそれだけでも儲けものなので、いろんな方からお声がけいただけるといーなー*2。Gateをもうちょっといろんなところで開催できないかと考えています。OSSへの貢献を始めたいと思って参加しに来ているビギナーの方々は様々なところから来てくださるのですが、サポーターは若干偏っていそうという問題があります。Ruby界隈の人たちがたまたま集まって立ち上がったこともあるため、サポーターもまたそういった界隈から来るのが自然な流れとなってしまっているようです。いうことで、来年はもうちょっと認知度上げていけたらなぁ、と。それでは、良いお年を。*1:暇だったとも言える。サポーターとして行ってきた。Gate東京ワークショップにサポーターとして行ってきました。今回参加のビギナーの方は4名*1。多様な業界、言語から来るのはいつもどおりですが、普段コードを書くお仕事ではないという方がいたのは印象的でした。それでも全員フィードバックを送って終えることができました!ビギナーさんから「OSSの貢献ってドキュメントから入っていくのが良いんですね」ということを言われました。確かにそうではあるんだけれど、それだけじゃないんだよなぁ、という気持ちがあったのだがその時にうまく伝えられなかったのでここに書いてみます。1つに、ワークショップを運営する上でやりやすくするためという意味があります。「対象のOSSを使ってみてください」では何をしたらいいのかわからないので手が進まない人は進まないものです。誰でも手が進められるような手順として、ドキュメントに沿ってもらうようにしています。ドキュメントは、貢献できそうなおかしなところが見つかりやすいところです。開発者がたくさん参加しているOSSでも抜け漏れやコードの状態と合っていないものが見つかります。実際、今回のワークショップでも、JenkinsのドキュメントにサポートしているJavaのバージョンが実際と異なるという発見をしています。ドキュメントの修正もOSSへの貢献の方法の1つであるということに気づいて欲しいという意味もあります。ビギナーの方が想像しているOSSへの貢献が、コードの修正だけだと思っている方も少なからずいます。ドキュメントを修正といっても、それ自体が生み出す成果は大きいものであります。先のJenkinsがサポートするJavaのバージョンの例だと、古いJavaのバージョンをインストールする必要があるのかと思ったら、ドキュメントと異なり新しいバージョンでも実際は動くというのがエラーメッセージに出ていたわけです。ドキュメントが正しく現状と一致していたのであれば、わざわざ古いJavaを用意したりする必要がなくなりますし、複数のバージョンでサポートされているとなれば選択肢が増えます。このワークショップでやっていることは、「普段の仕事でコードを書いている」というシチュエーションに置き換えて考えてほしいです。このワークショップでは、普段の仕事などで何かOSSを使おうとしたら問題に出くわす、というシチュエーションを再現しているわけです。普段の開発でOSSの問題に出くわした時は、このワークショップでやったように、自分が何をしたのかまとめてみたり、どういった動作を期待したのかを書いてみたりすることで、OSSへフィードバックができるはずです。何かのイベントであまったお菓子やコーヒーも提供していただきました。pepper-atelier-akihabara.jpその名の通り、Pepperのハンズオンセミナーを中心としたワークショップの会場だそうです。上の写真は、ワークショップのためにレイアウトした後なのですが、Pepperが20人くらいいました。この季節らしく、サンタの格好をしたPepper達がお出迎えしてくれたのが可愛らしい。会場貸し切りキャンペーンというのを年度末までやっているそうなので、勉強会を開催したい人は検討してみてはいかがでしょうか。サポーターとして行ってきた。久しぶりにアドベントカレンダーにエントリーしたので、最近作ってみたいと思った地味な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文書のファイルパスもしくはURIとXPathを指定することで実行できます。'//foo/bar'例えば、下記のように、CDのカタログから1980年代の10ドルより高いCDを抜き出すことができます。Dylan</ARTIST><COUNTRY>USA</COUNTRY><COMPANY>Columbia</COMPANY><PRICE>10.90</PRICE><YEAR>1985</YEAR></CD>パイプやリダイレクトと組み合わせれば、ファイルに保存したり一部の文字列を書き換えたりとか幅広く使えそうです。おまけある程度形になって実行できるようになったのでrubygems.orgにgemファイルをpushしようとしたのですが、MFAのOTPコードを入手する手段を失ってしまいました。以前にMFAの設定した時に登録したデバイス(iPhone)から今のデバイスに乗り換えた時に、登録していたAuthenticatorをアンインストールしてしまったためです。LevelをUIとAPIの両方に設定していたので、rubygems.orgのウェブ画面からログインする際にもOTPコードを求められてしまう状態です。サインイン画面から確認メールを再送することで、ログイン状態にすることはできたのですが、ドキュメントにあるようにプロフィール編集画面にQRコードが出てこない状態です。Guidesという状態のため、今回作ったgemをまだリリースできないままでいます。