About
utky (Yutaka Imamura), 神奈川圏の対象
こんにちは。プログラマーをやってます。
普段はアドテク系の会社でDevOps的な仕事をしています。
- Ansibleによるサーバ運用
- ネットワーク制御システムの開発・検証
- 付随するツール作成のためにPythonを使ったり
- ルータのコンフィグを作成したり
今まで主なネットワーク技術はMPLS, NETCONF, SNMP, BGPです。トラフィックエンジニアリングを活用したVPN構築なども行いました。
職場探索中 - 職務経歴書 2019-08 転職したのでしばらくはそちらで頑張ります。
Programming
関数型プログラミングというパラダイムに魅せられてはや数年。
あたりのプログラミング言語はエレガントで実践的でとても好きです。
仕事用のツールでときおりこっそり導入します。
Writing
Hatena Blog
Qiita
What I have done
- MPLS -VPNの構築、コンフィグ作成
- Zabbixを用いた網内サービス・設備監視インフラの構築
- NETCONFを用いたMPLS網の動的制御Web APIの構築
- DockerやJenkinsなどを用いてオンプレミスでのCI環境構築
- Python, Goを使った周辺ツールの開発
SDN技術を用いたサービス構築が多いです。
やってきたことの小史
1年目: Java入門とネットワークプログラミング
大型L3スイッチのコンフィグをバックアップするWebアプリとバッチ処理の開発。
もともとプログラミング未経験だったので当然初めてJavaを使っての開発でした。 先輩に負けたくないという妙な闘争心でユーティリティを整備したり、 先輩の書いたコードのバグを見つけてニコニコする嫌なやつでした。
ネットワーク機器へとTelnet接続してCLIのコマンド送信するという とても低水準なことをするシステムでしたが、その分エラーハンドリングの難しさを痛感。
2年目: 本格的なWebアプリとネットワークの制御
MPLSを用いた光伝送システムを制御するWebシステムの開発に参画。
JSFとEJBっぽい独自フレームワークを用いたシステムでした。 Southbound Interfaceには確かTL1コマンドを使っていました。 当時はサブシステムがそれを使っているだけでWebシステム側はRMI(!)でAPIを呼び出すだけでした。
MPLSを知ったのがこの時。ラベルを用いることでバケツリレー式にフレームを伝送できるくらいの認識でした。 IPもEthernetもほとんど知らず、ひたすら正しくラベルを配布することに専心しているだけでした。
帯域管理を司る機能も担当していたため、Excelで利用帯域のシミュレーションとかもしてた気がします。
一方Webシステムでは独自フレームワークが実装していたDI(Dependency Injection)の仕組みがとても興味深く思い 休み時間もずっとコードを読んでいました。 ネットワークの以上をリアルタイムにWebUIへと反映する技術としてAjaxやAppletを使っていました。 当時は別の部署で開発していたライブラリがあったためあまり詳細を知らなかったです。ただ使える、という感じ。
作ったパッチの品質に問題ないことをレビュアーに納得させるために、 意地になってテストを書いて、意地になってチケットを書きまくっていました。 「あなたの文章はわかりやすい」と言われたのがとても嬉しくて、さらに意地になって書くうちにとても冗漫な文章になっていました(今もそうですが)。
プロジェクトとしてはとても炎上していましたが、チームメンバーに恵まれたおかげでなんとか倒れずに納品までこぎつきました。
3年目: Swingアプリとネットワークの制御
またしてもMPLS網の伝送装置を制御するアプリケーションの開発に参画。
EthernetやATMなどの収容データをGMPLS網にのせて波長ラベルでスイッチングするシステムだった気がします(うろ覚え)。 今考えるとすごい技術にトライしていたような。
システム仕様の設計者と帯域関連の仕様で議論できるようになり、我ながらちょっと成長を自覚するのが楽しかったです。
一方のSwingアプリは画面遷移と状態の引き回しがとても複雑でデバッグが大変でした。もうSwingはやりたくないなあ。
ここで先輩からの誘いもあって転職(事業はまったく同じ特定派遣でしたが)。
4年目: JSFによるワークフローシステム
転職一発目はワークフローと課題管理を行うためのWebシステムでした。
他社の開発者が3人くらいのプロジェクトにいきなり1人で参入しました。 他のメンバーと打ち解けられるか不安でしたがよく笑うようにしたらなんか仲良くなれました。
とある企業の大規模基幹システム開発のワークフローを電子化するのが目的のシステムでした。 システム開発をするためのメタシステムっていう印象で当時は捉えていました。
基幹システムを開発するプロジェクトのライフサイクルを俯瞰してみることができたため、 今までのプログラマとしての視点だけでは見えなかったものが見えて有意義でした。
一方、プログラマとしてはJavaやフレームワークのマイグレーションを主導させてもらえました。 これをきっかけにJSFのソースを読むようになり、「OSSは使うものから読むものへ」という変化がありました。
またいくつかのサブシステム追加も担当しました。 JavaEEをベースにエンタープライズ系のアーキテクチャをあれこれ勉強しながらサブシステムを導入しました。
- JMSを用いた非同期メッセージングによる他システム連携
- WebDAV + Subversionを用いたコンテンツのバージョン管理システムの構築
このあたりからシステムのアーキテクチャが好きになってきていました。しかしDDDはまだ敷居が高くて……。
Scalaを知ったのもこの頃だったような。
6年目: 新人教育
人に教えるのは難しいけれど、新人さんたちの理解した顔を見るのは楽しかったなあ。 でも15人の新人に何かを教えたことにするための取捨選択がうまくいかなかったため、上司からは失敗とみなされた苦い記憶です。
現在に至るまでやっぱりMPLS
またしてもMPLS網の開発。
この頃からSDNというキーワードがバズりだします。 自動的なネットワーク制御が当たり前になっていき、それに応えるためにPCEやI2RS、OpenFlowなどのプロトコルが出てくるのを目の当たりにしてました。
さらに「ネットワークの監視」という分野に大きく踏み出す。 Zabbixと格闘を重ねながら今に至ります。Low Level Discovery最高。
いっぽうでNETCONFによる回線制御を行うシステムの構築なども経て、徐々にネットワークそのものよりも上位システムの開発へと移ってきた今日この頃です。
いまの特定派遣という就労形態だと好きなネットワークの仕事でお金を稼ぎ続けるのが難しそうなのが目下の懸念です……。頑張っていい職場を探さないとです。
興味のあること
- 関数型プログラミングに興味があってHaskellを中心にトイプログラムを書いています。
- ネットワークセキュリティ技術(特にTLSとIPsec)に興味があって学習中です。