北村 壮大 (@nasa9084)

Contacts/Output

Skills

  • Go
    • Web開発
    • CLI開発
    • bot開発
  • Kubernetes
    • Kubernetesクラスタのデプロイ
    • Kubernetesクラスタの管理
    • Kubernetesクラスタの利用
    • kubernetes website docs-jaのownerの一人
  • Automation
    • CircleCI、DroneCI、GitHub Actions等のCI/CDシステムとK8sやクラウド基盤を組み合わせたテスト・ビルド・リリースサイクルの自動化
  • git, SQL, チケット駆動開発など、標準的なWebアプリケーション開発技能

education

北海道大学 工学部情報エレクトロニクス学科コンピュータサイエンスコース 情報認識学研究室
工学士 (2017.03)
卒業論文: 装飾文字の自動認識に見る文字の本質的特徴の解析

Works

Roque [source]
Global Game Jam 2016 (Sapporo)
48時間での開発
Hubot Maker(運営終了) [source]
初期は学生の際の趣味プロジェクトで、dockerを用いてslack用のHubotをwebから簡単に作成できることを目標としていました。 docker自体をほとんど扱ったことが無かったこと、webアプリケーションをゼロから書き上げるのが初めてで、一つ一つのすべてが障壁でした。 最終的にはPython/bottleを用いてREST APIを作成、友人が作成したweb UIと合わせ一つのサービスとしました。 現在はサービスを停止してしまいましたが、ソースコードはGitHub上で公開しています(https://github.com/web-apps-tech/hubotmaker)。 開発時はredmineを用いたチケット駆動開発を行っていました。
[WIP] github.com/nasa9084/go-openapi[source]
OpenAPI specification 3.0のGo言語向けパッケージ
github.com/kubernetes/website
Kubernetesのドキュメント翻訳プロジェクト: 日本語チームオーナー
k8s.io/ja

Jobs

BREAK THROUGH: 2016/08 - 2017/03
Software Engineer(アルバイト)
Java/Strutsで10年ほど前に書かれた比較的大規模な給与計算系業務システムの保守・開発に学生アルバイトとして携わっていました。 ソースコード・データベース構造ともにまともなドキュメント・コメントも無い状態で、挙動を一つ一つ調査しながらマスタデータの更新や新規機能要望への対応を行いました。 主な課題はデータ構造や挙動の調査で、PostgreSQLに格納されたデータとソースコード、画面表示を照らし合わせて、入力したデータがどこで処理され、どこで保存され、出力されているのかを調べました。 マスタデータを更新しなければならないものの、データベースに格納されているデータがソースコード中にべた書きされていて、動作時に毎回上書きされているなど、どこのデータを更新すればマスタデータが更新されるのかわからない状態から、挙動を調査してマスタデータの更新を行いました。 度重なる機能追加などでコピペコードが散乱していて非常に難解なコードとなっていましたが、積極的にリファクタリングを行い、業務効率の改善を目指しました。 また、マイナンバー対応機能追加の要求に対し、マイナンバーの仕様からマイナンバーバリデーションのプロトタイプを作成したほか、社内でマイナンバーの仕様について情報共有会を実施するなどして貢献しました。 加えて、レガシーな環境で、Eclipseの実行機能でのみ手元の動作環境があり、客先ごとにデータベースのダンプデータを差し替えたりしていた環境を改善するため、プライベートクラウド基盤を構築、VMベースで環境の切り替えを簡単にできるようにしたり、Jenkinsを導入して自動テスト・自動ビルド環境を構築し、業務効率の改善に貢献しました。 ソースコードのバージョンもまともに管理されておらず、20以上あった客先特有対応をすべてディレクトリで管理していましたが、GitBucketを社内に導入し、より効率のよいソースコード管理を行えるよう貢献しました。
日本仮想化技術株式会社: 2017/04 - 2018/09
Software Engineer
十数年稼働してきた業務基幹システムの完全リプレイスにあたり、新システムを稼働させるインフラ基盤の設計・開発コンサルタントを行いました。 インフラ基盤の設計では、マイクロサービスでの開発にあわせ、Kubernetesのソリューションをクラウド(AWS上に自前で構築、AWS上でOpenShift、GCPでGKEを使用)上、オンプレ(Kubernetes on OpenStack)合わせて選択肢を価格や機能性、可用性、実績など様々な観点から調査・検証し、お客様および開発チームに提案しました。 開発コンサルタントとしては、マイクロサービスでの開発を行ったことのない開発チームに対し、マイクロサービスアーキテクチャでの一般的な構成や、設計へのレビューを行ったほか、コードのレビューや開発効率向上のための自動化施策を提案・実施しました。
LINE株式会社: 2018/10 -
Software Engineer
JenkinsやNexusなどを中心とした社内向けの基盤を管理していく上で発生する定常業務の自動化を行いました。非常に多くのユーザがいるために肥大化したJenkinsのノード管理や、リソースの管理などをGo言語やAnsibleなどを用いて自動化、作業量を削減しました。本来、社内のエンジニアの開発効率を改善するための部署であり、新しいシステムなどの検証などを業務とする部署でしたが、Jenkins等の管理に多くの時間を割く必要があり、本来の新システム導入などの業務ができなくなっていたため、自動化を推進することにより本来の業務ができるように尽力しています。また、Kubernetesをはじめとしたコンテナ基盤を適宜活用することにより、安定性に不安のあった基盤の安定性を向上させるための作業をしています。
社内向けCircleCI Enterpriseの管理運用を行いました。CircleCI Enterpriseのユーザサポートの他、社員向けに提供されているSlack incominghook proxyに通知を行えるようプロキシサーバを開発したり、CircleCI Enterpriseをオンプレで運用することで発生する制約(Docker imageのbuildができないなど)を改善できるよう、代替手法の開発・検証などを行いました。
社内のシステムにおいてアクセス流量を制御するためのQuota as a Serviceを開発していました。社内で用いられているログ・メトリクス集約ツールは非常に多くのアクセスがあり、ユーザサービスごとにある程度のQuotaを設けることで流量を制御したいという欲求がありました。個々のシステムごとにQuota/RateLimitパッケージを導入してもいいのですが、複数のサービスで必要となることは明らかだったため、社内/チーム全体で使用可能なQuota as a Serviceを開発することとなりました。Quota as a Serviceの開発に当たり、要件定義・インターフェースやアルゴリズムなどの検討・設計・バックエンドサーバの開発を担当し、現在も開発を継続しています。APIはgRPCとRESTで提供し、それぞれprotocol buffersとOpenAPI SpecからAPIサーバを自動生成したほか、Goコード内で定義したinterfaceからmockを自動生成したなど、開発時やその後の段階で変更が必要となった場合に手間がかからないよう、コアロジックの開発に専念できるよう考慮しながら開発を進めています。一部のテストコード(HTTP Handlerなどのテスト)もOpenAPI Specから自動生成しているため、APIに変更があってもコードの手動変更が最小限ですむようになっています。またインフラとして、Central Dogmaと社内プライベートクラウドで提供されているRedis Cluster、認証管理サーバとして社内のLDAPサーバを使用したり、設定ファイルの変更UIとしてGitHub EnterprizeのPull Requestをそのまま利用したりすることにより、DB等の管理コストを大幅に削減し、運用にかかる手間を最小限に抑えています。残念ながら、プロジェクトが途中で終了となりました。
内製で開発を行っている全社向けAPMのホストメトリクス収集エージェント(golang)の保守開発運用を行っています。全社のLinuxサーバに標準でインストールされており、新機能開発の他、安定したリリースを行うための改善、バージョン管理をより正確に、簡単に行うための改善を行っています。
LINE Messaging APIのGo言語用SDKの開発に一部参画しました。LINE Thingsに関連するAPIサポートを実装しました。
SREとして、Kubernetesクラスタの管理、アプリケーションのKubernetes移行、Kubernetesを利用したdeployの自動化・batch jobサーバで運用されていたbatchの分割などを行っています。

Events

名称 規模(参加人数) 役割 参照
digiporo (月1回開催12回) 10-20 主催 connpass(there’re slides)
オープンソースカンファレンス 2016 Hokkaido 400 スタッフ
オープンソースカンファレンス 2016 Tokyo/fall 1350 スタッフ / スピーカー slide
オープンソースカンファレンス 2017 Nagoya 700 スタッフ / スピーカー slide
オープンソースカンファレンス 2017 Okinawa 100 スタッフ / スピーカー slide
オープンソースカンファレンス 2017 Hokkaido 700 スタッフ / スピーカー slide
オープンソースカンファレンス 2017 Kyoto 700 スタッフ / スピーカー slide(1) / slide(2)
オープンソースカンファレンス 2017 Tokyo 1100 スタッフ / スピーカー slide
オープンソースカンファレンス 2017 Fukuoka 400 スタッフ / スピーカー slide
オープンソースカンファレンス 2017 Hiroshima / OSC-Summit 2017 Hiroshima 200 スタッフ / スピーカー slide
オープンソースカンファレンス 2017 Enterprise 350 スタッフ
オープンソースカンファレンス 2018 Osaka 400 スタッフ
オープンソースカンファレンス 2018 Tokyo/Spring 1200 スタッフ
オープンソースカンファレンス 2018 Okinawa 80 スタッフ
オープンソースカンファレンス 2018 Hokkaido 730 スタッフ / スピーカー slide
オープンソースカンファレンス 2018 Kyoto 800 スタッフ / スピーカー slide
オープンソースカンファレンス 2019 Hokkaido 720 スタッフ / スピーカー slide
オープンソースカンファレンス 2024 Hokkaido ブース出展
オープンデベロッパーズカンファレンス 2017 Tokyo 400 スタッフ / スピーカー slide
Learn Languages 2017 in ODC スピーカー (Lightning Talk) slide
PyCon JP 2016 600 スタッフ
PyCon JP 2017 600 スタッフ
PyCon JP 2018 1000 スタッフ
builderscon tokyo 2016 200 スタッフ
builderscon tokyo 2017 800 スタッフ
builderscon tokyo 2018 900 スタッフ / スピーカー slide
builderscon tokyo 2019 スタッフ / スピーカー slide
builderscon 2024 100 主催
YAPC::Fukuoka 2017 HAKATA 200 スピーカー (Lightning Talk) slide
YAPC::Kyoto 2023 239 スピーカー (Lightning Talk) slide
YAYAPC::Hiroshima 100 スピーカー (Lightning Talk)
YAPC::Hakodate 2024 当日スタッフ
PyCon JP 2017 RejectCon 40 スピーカー slide
GoCon 2019 Spring 400 スピーカー slide
Raspberry Jam Tokyo #009 - AIY Project meetup 40 スピーカー (Lightning Talk)
ngineerxiv #14 33 スピーカー (Lightning Talk) slide
Kubernetes Meetup Tokyo #11 230 スピーカー slide
Cloud Native Community Japan Kickoff meetup スピーカー slide
Kubernetes Upstream Training Japan 2024-03 講師 slide
Kubernetes Upstream Training Japan at CNDW2024 講師 slide
KubeCon Japan 2025 1500 スピーカー video
Okinawa Open Laboratory Forum 10 スピーカー slide
Rancher Meetup Tokyo #15 100 スピーカー slide
Hardware Maker Meetup Sapporo #5 18 スピーカー slide
札幌 3Dプリンター Meetup #1 27 スピーカー(LT) slide