kubo39
- github: https://github.com/kubo39
- ブログ: https://kubo39.hatenablog.com
- twitter: https://twitter.com/shitsyndrome
2014.03 電通大大学院修士卒 (工学修士)
2014.04 ~ 2017.02 Mixi (Software Engineer) モンストのバックエンド開発、SNSミクシィのバックエンド・フロントエンド開発
2017.02 ~ 2018.06 LifeRobotics (R&D) Linuxやsystemdのトラブルシューティング、言語処理系開発、ARMプロセッサによる組み込みプログラミング
2018.07 ~ 2018.11 Wovn (Software Engineer) ウェブアプリケーションのバックエンド開発
-
言語処理系開発
- コンパイラ・インタプリタ問わず
-
速度改善
- CPUレベルの最適化(SIMD)
- スレッド並列・並行処理
-
開発支援ツール開発
- プロファイラ開発
- 業務効率化支援
-
低レイヤネットワーク処理
- DPDKやnetmap、XDPなど
-
D言語でウェブサービス開発
- D言語の実用性を実サービスで検証
- 静的型: 型によるチェックで開発 (vs. Ruby/node.js)
- 高速なコンパイル: 開発のイテレーションを高速に (vs. Rust)
- ワンバイナリ: 小依存、コンテナ時代にマッチ (vs. Ruby/node.js/Java)
- 高度なマルチスレッドサポート: マルチコア時代 (vs. Ruby/Python)
- C連携: Cの資産を簡単に使える (vs. Go)
- D言語の実用性を実サービスで検証
-
形式手法の導入
- バグを出してはいけない重要度の高いシステムに対する有効なアプローチとして
- 証明支援(Coq/Isabelle/Agda)でプログラムの正しさを検証
- 複雑化するシステムを開発し続けるために
- モデル検査(Spin/Alloy/TLA+)で機械的に仕様の漏れを検証
- 自然言語のよる曖昧さのため仕様の解釈違い
- 形式使用記述による曖昧さの排除
- バグを出してはいけない重要度の高いシステムに対する有効なアプローチとして
- プログラミング言語 (処理系、意味論、型システム)
- 並行・並列プログラミング
- ネットワークプログラミング (DPDKやQUICプロトコル)
- 形式手法 (証明支援系、モデル検査、形式仕様記述)
- 高速化手法 (x86向けチューニング、プロファイリング手法)
- 組み込み向け開発 (ベアメタル、組み込みLinux)
- D言語のコンパイラおよびランタイムへの開発参加
- dlang/dmd#8396 (lexerのバグ修正)
- dlang/dmd#8451 (lexerのバグ修正)
- dlang/dmd#8522
- dlang/dmd#9337
- dlang/dmd#9623 (レジスタ割当ての最適化処理のバグによるregression修正)
- dlang/dmd#9634 (コンパイル時静的配列の長さの計算のバグによるregression修正)
- dlang/dmd#9695 (typeof内で無名クラスを使用した際のテンプレート実体化でSEGVするバグ修正)
- dlang/dmd#9723 (コンパイル時に構造体orクラスのメンバを取得するときにtemplateだけ取得できないバグ修正)
- dlang/dmd#9731 (XMMレジスタの判定処理のリファクタリング)
- dlang/dmd#9779 (#9723の続き。テンプレートのオーバーロード対応漏れなど)
- dlang/dmd#9781
- dlang/dmd#9818 (is式の中で未定義識別子を使ったときにコンパイルエラーにならないように修正)
- dlang/dmd#9856 (サイズ0の配列に対するキャストの際にzero division errorが発生するバグの修正)
- dlang/dmd#9930
- dlang/druntime#2416
- dlang/druntime#2419
- dlang/druntime#2431
- dlang/druntime#2467 (文字列比較を行うコードで-profileフラグをつけるとスタックオーバーフローになるバグ修正)
- dlang/druntime#2563
- dlang/druntime#2727 (rdtsc命令の実行をシリアライズする修正)
- dlang/druntime#2857 (使われなくなったシンボルの定義の削除)
- dlang/druntime#2865 (crt_constructor/crt_destroctorのフック箇所の変更にコメントを追従)
- dlang/druntime#2915 (メモリリーク: pthread_attr_destroyの漏れ)
- dlang/druntime#2920 (pthread_attr_initの漏れ)
- dlang/druntime#2922 (メモリリーク: pthread_attr_destroyの漏れ)
- dlang/druntime#2934 (BUG: glibcでsz < PTHREAD_STACK_MINのときスタックサイズが小さすぎてcrashが起きる)
- dlang/phobos#6807
- dlang/phobos#6816
- dlang/phobos#6961
- dlang/phobos#7004
- dlang/phobos#7030 (LinuxでCPUコア数を取得するときにaffinity maskを尊重するように修正)
- dlang/phobos#7115 (非同期シグナル安全な関数を使っていることへの注釈)
- dlang/phobos#7116 (mallocが失敗したときのハンドリングを追加)
- dlang/dlang.org#2531 (safe function内でポインタやクラスの未初期化が許可されない点の仕様追記)
- dlang/dlang.org#2569 (古い仕様の削除)
- dlang/dlang.org#2574 (safe function内では
at
safe なインラインアセンブラの操作は許可される仕様追記) - dlang/dlang.org#2580 (古い仕様の削除)
- ldc-developers/druntime#166 (LLVMの最適化により無限ループがUBになることを抑制するintrinsicを追加)
- D言語入門ツアーの翻訳プロジェクトへの貢献 https://github.com/dlang-tour/japanese
- 国内D言語コミュニティによるクックブックプロジェクトへの貢献
- dlang-jp/Cookbook#41 (レビュー)
- dlang-jp/Cookbook#42 (レビュー)
- dlang-jp/Cookbook#47 (レビュー)
- dlang-jp/Cookbook#59 (執筆)
- dlang-jp/Cookbook#64 (執筆)
- Cコンパイラ開発 (WIP)
- 証明支援ツールIsabelleの学習
- https://github.com/kubo39/stm32f407discovery
- 組み込み向けの開発用ボードのプログラムをD言語で書けるようにしたもの
- https://github.com/kubo39/tiny-d-demo
- 144バイトで動くプログラム
以下の言語は特に触った経験が多いものをあげています。未経験の言語であっても少し触れば抵抗なく使えるとは思いますが、静的型付き言語で開発したいです。
- D言語
- 規模の大小関係なくだいたいD言語で書きます
- C言語
- 必要に応じて書きます、組み込みとか
- Isabelle/HOL
- 証明支援ツールはIsabelle/HOLを使っています
- その他
- 仕事だと C++/Rust/Python/Ruby/JavaScript/Perl
- 年収???~万
- よくわからないけどこのくらいもらったら頑張れそうなところを考える
- チャレンジを支えてくれる
- 新しい技術の検討・導入
- 未開な分野への挑戦
- 完全週休2日・祝日休み
- プライベートも大事にしたいです
- 首都圏勤務
- できれば
- 私服OK
- これもできれば