spam recruiter

aiでスパムリクルートメールを打つ人材サービスを使っちゃうとリスクありそうだなーと思った。

====
Kenichi Murahashi 様
※お名前の漢字が分からなかったので、失礼ながらアルファベット表記とさせていただきました。

突然のご連絡失礼致します。
株式会社xxx人事のxxxと申します。
GitHubに掲載中のメールアドレスからご連絡しております。

弊社は、スモールビジネスに携わる方向けのクラウド会計ソフトを作っている会社で、現在80万人以上の方々に利用されています。
社内で行っているプロジェクトに関しては下記を御覧ください。
(url snip)
起業や独立に伴う「難しいこと・面倒なこと・大変なこと」を自動化し、人々が創造的な活動に集中できるサービスづくりに取り組んでいます。

そんな中、現在
・プロダクトおよびフィーチャーの企画・設計・実装・テスト・計測・改善(xxxのエンジニアは企画から開発、リリースまで、エンジニアが自分たちで考え、実行に移しています)
・新規技術、コア技術に関する研究開発・調査
・新規機能企画開発、自動化のアルゴリズム改善、UX改善、新規プロダクト企画開発等
などのような業務を、Ruby / Rails を使って行なうエンジニアチームの向上を図っております。

上記のプロジェクトの一環として行っている試みなのですが、Murahashi様のような現場で活躍されている外部の優秀なエンジニアの方を実際に弊社オフィスにお招きして、弊社のサービスやエンジニア・オフィスをご紹介して、気軽にディスカッションをする、ということをしています。

誠に勝手ながら、Murahashi様のGitHubやブログの記事を拝見しました。GitHubのリポジトリのTachikomaを拝見しまして、依存するgemのバージョンを最新に保つことができるTachikomaは開発コストを削減できる非常に優れたOSSであると感銘を受けました。RubyやRailsを使うプログラマーの定形作業を減らすという点が評価されて、TachikomaはHEROKU賞を受賞されているとのこと、高い技術力が多くのエンジニアの方々からも評価されていることに敬服しました。弊社では最新技術を積極的に取り入れており、Murahashi様のように新規技術、コア技術に関する研究に携わっているエンジニアの方と是非技術的なお話しをさせていただければと思っています。

よろしければ一度お時間をいただき、30分-1時間程度で結構ですので五反田の弊社オフィスにて、お話をさせていただけないでしょうか。
もしご興味があれば、こちらのアドレス(snip) まで返信をよろしくお願いいたします。

ご返信をお待ちしております。
それでは失礼致します。

【xxxについて】
エンジニアブログ
(url snip)
弊社の機械学習への取り組み
(url snip)

広告

利用者と開発者の話

利用者と開発者の話、おおむね開発者コミュニティがあればいいじゃないので賛成。ただ、職人が「昔は見て盗んで覚えた」っていうのと変わらないような印象も受けてしまう。人数 is powerって自分は思ってる。オチ無し。

今年のpull request 一覧

自分のリポジトリ以外へのpull request一覧、自覚はしてたけど今年悲惨だ。大部分fix typoだし。
自分リポジトリもなにか去年のsaddlerやnpm module作りまくってた感じではないからな…

https://github.com/search?p=1&q=is%3Apr+created%3A%222016-01-01..2016-12-31%22+author%3Asanemat+-user%3Asanemat+-org%3Apandawing+-org%3Apacksaddle+-org%3Adogwalk&ref=searchresults&type=Issues&utf8=%E2%9C%93

社会復帰(会社復帰)は果たせたので、次はOSS復帰しよう。

evernoteのnote全消し

そのまま退会するだけじゃなくて、note全消ししてから退会するほうがいいんじゃないかなと。

webでNOTEBOOKSをえらぶ。
delete notebook がクリックできるので、delete。
次にTrushを選んで、Empty trush。
時間は結構かかる。

4491note -> 0note

screenshot-from-2016-12-15-21-05-13

Account -> Settings -> Deactivate your Evernote account

screenshot-from-2016-12-15-21-13-05

Member Since July 31st, 2009

そしてやっぱり。

Deactivating your account
If you are sure that you want to deactivate your Evernote account, you may want to Return to your notes and delete any private notes, then Empty the Trash to permanently delete these notes. (Evernote does not automatically delete your notes.) Then, return to this page to complete the process.
When your account is deactivated, you will be logged out of Evernote, and this account will no longer be usable. You will not be able to create another Evernote account with your same email address. To change your email address, go to the Settings page.

ヒット作

自画自賛の気持ち悪いエントリ。

ブログエントリやLTで、大体年一ぐらいでホームランを打つが、それ以外は箸にも棒にもかからない、そんなペースでこすく信頼貯金を維持している。
のが例年だったのだけど、今年はLT3発にブログエントリ1発当てている。見かけの打率は今年は上がっているのだけど、11月12月に連発していて、なんていうか北の勇者の生命の剣っぽくて命を燃やしてるだけなのがやばい。燃え尽きそう。

どれも共通してるのは、わりと引くぐらい時間をかけてることかなー 時間をかけてもハマらないことはもちろん多々ある。ブログ書くのは好きだけど文章得意ではないし練りに練る。発表はもっと苦手なので自信ありアンド練習ちゃんとした時以外はボロボロ。

過去ヒット作一覧

今見なおしても良作揃いだ。そして年一ペースと思ってたのは自分に都合良い錯覚で数年に一回っぽい。

rubykaigiのトークに何応募するか考え中

話したいこと

rubyのコマンドラインツールとプラグインシステムと設定の読み込みを作ってみて、設計に失敗したはなしとどうすればよかったのかについて

題材

tachikoma

tachikoma.io

saddler

項目

  • 言語選択
  • 大きな方針
  • アーキテクチャ選択
  • 設定の読み込み
  • shell or script language
  • エラー設計
  • リリースと依存、またその確認
  • テスト容易性
  • 本体の配布、プラグインの配布
  • 実行ファイルを単一
  • アプリケーションと同じGemfileに入れるか
  • 他のツールとの親和性

話した結果自分は何を得たいか

  • 自分の考えたことをダンプして、次作るならもうちょっとマシにしたい
  • 誰か詳しい人の知見を吸いたい
  • 似たようなこと考えてる人の設計の参考になればいい

聴衆に何をしてほしいか 明日から何を始めればいいか

  • ruby, node, golangでツールを作りだそう
    • 言語、ツールの特性、エコシステム的に最適なところを選べる
  • gem, npmなどのエコシステムを活用する
  • 柔軟なやつも作りはじめられるぞ たぶん

rubyでの成功例

  • fluentd
  • omniauth
  • fog
  • rails(?)
  • rubygems(?)

先行資料

meta-data

頭で考えてて、ちょっと頭の容量オーバーなのでうだうだ考えてないで作れって話があるけどdump。数ヶ月優先順位が上がらないけど頭に引っかかってて、あといい感じの実装も思いつかないので放置してる。

だいたいこんなことがやりたい。元になるデータセットがあって、そこから言語別クライアントライブラリを作る。

こういうイメージ。
https://github.com/zengin-code/zengin-rb
https://github.com/woothee/woothee-ruby

あとmongodb/mongoidが各言語用のテストデータセットをyamlで書いたっていうのをrubykaigi2015で聞いたんだけど、ざっとリポジトリ見る限り見当たらない。
https://github.com/estolfo
https://github.com/mongodb

言語別ライブラリを作った時に、実装を確認するデータセットがほしい。
データセット側を更新するのはプルリクエストで、そのテストでは、各クライアントライブラリ側で、新しいデータセットでテストが通ること、がデータセット側のテストに入っている。
データセット側リリースしたら、言語別ライブラリ側も新しいバージョンリリースされてほしい。

この仕組を使ってやりたいこと。
https://github.com/packsaddle/ruby-env_branch

こんな感じで、各CIサービス串刺しで、欲しいデータを取る、というのを作ってるんだけど、これの元になるデータセットを作りたい。

たとえばbranch nameだったらこんな感じかなあ。取りたいメソッドから考えるとこんな。

各CIでのbranch nameのkeyがほしい
たとえばcircle ciでのbranch nameがほしい
circle ciの環境変数一覧が欲しい

yamlで作って、jsonに展開
camelCase にする
https://google.github.io/styleguide/jsoncstyleguide.xml

複数CIサービスには詳しいけど複数コードホスティングサービスに詳しくないからなあ。pull requestとmerge requestは同じように扱えるようにした方がいいんだろうか?みたいなの。

あと取りうる値もかけないものか。
falsyなときに空文字列なのか、文字列でfalseがはいってくるとかそういうのを記述するのがダルい。各CIサービスで、このキーをとる、というのは流石に書いてあることが多いけど、こういう値を取りうるみたいなのが無いケースがよく有る。
環境変数だから文字列しかとりえないんだけど。あと、条件によってその環境変数自体がない場合もある。
json schemaなんかなーこういうの。json-schema触ったことないのと、オーバースペックに感じなくもないけど。

Edited 2016-02-03 12:59
あと、メソッドの返り値がこうなる、ではなくて、このci サービスはこういう値を返しうる、みたいな表現できるのかな。

欲を言って、こういう仕組みを生成する仕組みを作りたい。

ぼんやり迷ってる。

assert

jsのpower-assertを契約プログラミングっぽく使うチャンスだ、と思った。実際はオブジェクトでもなんでもないところだからほぼ関係ない。ただ、testでもbabelでもなんでもないところで使おうとするとどうやって書いたらいいかよくわからない。
なおBertrand Meyer本読んでないんで理解は半端で適当。
こういうかんじのところ
firefox-build-link-plain/release-circleci.js at 4e61a02de858498ab6d2ab38605e5a914c73ef6c · dogwalk/firefox-build-link-plain

assertつかってる。trueだとおもったらfalseでした!にしかならなくて悲しい。

One data set, use anywhere

更新される1つのデータセット(json/csvなど)から、各プログラム言語向けpackageにして、簡単にshipする仕組みって作るの難しいんだろうか。メタ的なやつ。

イメージは、User-Agent parser/classifierのwoothee/wootheeとそこからの各プログラム言語ごとのpackagewoothee/woothee-js。ライブラリからはcsvやらjsonやら意識せず普通にobjectにマッピングされてるのも簡単に欲しい。

あとは、JSON-Schemaなりで定義書いたら、各プログラム言語ごとの簡単なAPIクライアント出来るとか。

git tagをpushしたらそのhookでリリースかなあ。デバッグや再実行しんどいからこのタイプのリリース好きじゃないけど、”各プログラム言語ごとのpackage”の数が増えてくると手作業は現実的でなくなる。

元データセットを更新したら(git tagを打ったら?)、数日以内ぐらいに各パッケージがそれを反映してupdateしてreleaseしたい。

x-ken-allをどうにかしようとして放置してるこれとか、emoji-cheat-sheet のhtmlをparseしてるこれとか、各言語から使いたい。

エコシステム周りの愚痴

GitHubのauthのscopeがこういうの向きになってなくて、organization用のapi keyとかないから、organizationつくる、organization にbotアカウント作る(規約違反)、botアカウントがpushできるようにする、とかが大変。botアカウントなのにadminに入れないとリポジトリ増やした時にいちいちwrite権限をteamに追加しなきゃだし。

travis-ci/circleciなりからrubygems/npmなどにpushできるようにするのもダルいよなあ。これも既存の自分のrubygems/npmアカウントと別にpush用のアカウント作るんかな。ただ、bot アカウントがnpm publishしてくるのってどうなんだろう。信頼チェーン的にダメな気がしないでもない。