outerinside

3年後の目標や野望


OCaml で Web サービス全体書けるマン

動的型付言語を使った開発では防御的プログラミングとテストに時間を費してきたので、強い型システムと代数的データ型を持った関数型言語に省力化・効率化の観点で注目していた。特に昨今の Web 開発は関数型言語がアドバンテージを持ちうる状況にあると思われる。以下でそれを説明する。 Web 開発を最小限のスキルセットと工数で済ませようとすると、フロントエンドとバックエンドで実装の一部を共有する、いわゆる Isomorphic JavaScript が候補になる。 現在流行している Redux のようなフロントエンドのアーキテクチャでは、あらゆる操作やイベントは action として抽象化される。分散記述された action に対し reducer の処理は過不足なく記述されなければならない。しかしこの網羅性の検証は JavaScript ではプログラマの責任であり、アプリケーションが大規模化するに従って負担も大きくなるだろう。対して、代数的データ型を持つ関数型言語であれば静的型検査としてコンパイラが網羅性を保証できる。 実際、先例として Elm などがあるが、Elm は JavaScript にコンパイルされる AltJS の一種であり、サーバサイドのバックエンドを書くことは不可能ではないにしろライブラリなどの状況を考えると現実的ではない。 これに対して OCaml には高性能なネイティブコンパイラと JavaScript コンパイラ (js_of_ocaml、BuckleScript) の両方が存在するため、理屈としてはフロントエンドもバックエンドも同じ実装を共有する Isomorphic OCaml が可能であるという利点がある。 この見解を実証するために、先ず Redux / Elm 風の FRP ベースのフロントエンドフレームワークとして https://github.com/sekia/caelm/ を開発している。自作の有用性でもって見解を実証して Web 開発にも OCaml を普及させたい。

年収評価シート

2016年/2年以内

掲示板サービスのリファクタリング

他社から事業譲渡された年代ものながら月に数億の PV がある Web サービスの保守担当になりました。デザイナ以外の開発実務担当は私一人、ドキュメントなし、テストなし、おまけにバージョン管理履歴もなし。 元々 Perl / CGI で書かれ、後に mod_perl で動作するように改修されたもので、フレームワークと呼べるようなものはありません。print 文で HTML を出力する昔ながらの CGI スクリプトです。 複雑なことはやっていないにせよページ数が多く、その時々の担当者が思い思いの方法で機能追加していったようで、PC / フィーチャフォン / スマートフォンの三系統のページが個別に実装されておりデータファイルの読み書き処理さえ共通していないありさま。 このままではじきに破綻すると思いリファクタリングを決意しました。バグ修正や機能追加、SEO などで手を入れる度に周辺のコードもできるだけ修正して、出力はテンプレート化し、処理はモジュール化してテストとドキュメントをつけていきました。 並行して、実行環境をレガシーな mod_perl / Perl 5.8 から PSGI / Perl 5.22 に移行するための作業を進めました。既存の Web フレームワークに載せることを検討したものの、ページ毎に実装がまるで違うので大幅な書き換えが予想されて断念。代わりに mod_perl / Plack 両対応のリクエスト/レスポンスクラスを作って各ページで利用するように修正し、これを利用する薄い PSGI フレームワークを別ブランチで作成して両ブランチ間で適宜チェリーピックしながら移行を進めました。 古いコードも残っているものの主要ページの処理はほぼ書き直され、現在は docker コンテナ内で PSGI アプリケーションとして稼動しています。

2013年/2年以上

SVM ライブラリ開発

社内の要件に合わせたスパムフィルタを作成することになり、保守人員の都合で Perl で書くことになりました。 文献調査を行い、識別器の学習に線形 SVM を利用することは決まりましたが、既存の Perl 用 SVM ライブラリの実装はカーネル SVM のものだけで、速度が満足できるものではありませんでした。 そのため実績のある LIBLINEAR (https://www.csie.ntu.edu.tw/~cjlin/liblinear/) のバインディングを用意することになり、Perl の外部ライブラリバインディング機能である XS を使って Algorithm::LibLienar (https://metacpan.org/pod/Algorithm::LibLinear) を作成し、それを使ってスパム識別器を構築しました。 C++ ライブラリの XS モジュール作成に関する文献は少なく、他の CPAN モジュールの実装や perldoc を参照しながら作業することになりましたが、Perl ツールチェインの理解が深まりました。 線形 SVM 自体は業務ロジックとは独立しているので (どさくさまぎれに) 会社の許可を得て私の著作物として OSS として公開し、以後4年間 LIBLINEAR の更新に合わせて保守しています。

2011年/3ヶ月以内

試験的 API 実証アプリケーション開発

インターンで担当した案件です。当時 experimental 扱いだった Chromium OS の IME API (https://developer.chrome.com/extensions/input_ime) の機能実証として SKK 風の IME を作成しました。 Google 日本語入力のベースになっている Mozc の辞書から変換候補を読み出す処理を WebAssembly の前身である NativeClient で実装し、JavaScript とは JSON で通信する構造になっていました。 コードの質は自信を持てるものではありませんでしたが、コーディングスタイルやテスタビリティを高める設計の良い習慣、またコードレビューの指針などを実地で教わった場であり、今で複数人で開発する時の指針になっています。 また日本語入力方式で SKK 党になる契機でもありました。

マネージメント能力

アピール項目


アウトプット

GitHub アカウント
あり
Qiita アカウント
あり
Zenn アカウント
未入力です
Speaker Deck アカウント
未入力です
SlideShare アカウント
未入力です
特にアピールしたいアウトプット
未入力です

今後、身につけなければいけないと思っている技術は何ですか?

- AWS / GCP - React / Redux スタック (競合の研究として)

あなたが一番パフォーマンスを出せるのはどんな環境ですか?

- 不規則な割り込みが少ない - デスクに内線電話がない、あるいは取らなくて良い - 座席の背後が広い通路になっていない - 23" 以上のディスプレイが二枚以上ある - 進捗相談できる同僚が複数いる

キャラクター

直近で一番やりたいこと
サービスを作りたい
好きなスタイル
好きな規模
水とプログラミングどっちが大事?
自信を持って人より秀でていると言える点
学習能力 / 分析力
スキルのタイプ
得意なフェーズ
会社を選ぶ一番の基準
プライベートとの両立
やりたくない分野
SI / 医療・介護
その他の特徴
レガシーな環境を改善できる / 勉強会でLTをよくする
その他のやりたいこと・やりたくないこと
未入力です

やりたい事

手を動かして設計してコードを書きたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
価値あるプロダクトを作り成長させたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
学び続けて技術力でプロダクトに貢献したい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
意義があることや社会に貢献できる仕事がしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
人や計画の調整・マネジメントをしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
レガシーなシステムの保守・運用・改善をしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
企画や仕様を考えるところから関わりたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
業務効率を改善して一緒に働く人のためになりたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
全社横断的な共通基盤作りや強化をしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
組織や文化を作る・成長させる仕事をしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい

基本プロフィール

年齢
今年で30代中盤
好きな Text Editor
Emacs
希望勤務地
東京都 / リモート勤務
家庭の事情や体調など、都合に合わせてリモート出来れば問題ない
希望年収
未入力
転職ドラフトに参加して
企業から指名を受け取ろう!
会員登録をして転職ドラフトに参加すると、参加企業から年収付きの指名を受け取ることができるようになります。
会員登録する
ご意見箱

要望、不具合報告、使いづらい点や感想など、お気軽にお寄せください。
いただいたご意見は、今後のサービス向上に活用させていただきます。

なお、このフォームは受付専用のため、返信を行っておりません。
返信を希望する場合はお問い合わせよりご連絡ください。

  • {{error}}
SIGN UPSIGN IN


転職ドラフトを友人や同僚に薦める可能性はどのくらいありますか?