ハッカーズチャンプルー2018 リンクありバージョンは: https://docs.google.com/presentation/d/1RfhvrO0lpv8pyPx9NLxqH3yL7C2TZaT6awCT17FSDns/edit
ソフトウェア開発と私2018-06-30ハッカーズチャンプルー2018motemen
View Slide
こんにちは● id:motemen / @motemen(美顔器)● 株式会社はてな CTO● Perl, Go, Git
CTO & アプリケーションエンジニア● 2016-現在● 組織・技術・情報● 古めのサービス全般
CTO室● 事業や開発の新しい基盤をつくる横断チーム● 社内横断で開発効率を上げる取り組み #pepabohatena
サマーインターン
宣伝終わり
アジェンダ● 自己紹介(40min)
エンジニア遍歴
199X
BASIC● 本当はゲームを作りたかった(らしい)● 学校の宿題のドリルを解くプログラム○ 完成したころには次の単元だった
200X
Windows● Visual Basic 5● ランチャー、ジョークソフト
ホームページ● BBS(掲示板)置いてたけど、友達だけだった● 本屋で立ち読みした情報をコピペした技術サイト
Perl との出会い(と別れ)● Perl Poetry(Perl 詩)
2005
ブログブーム● 考えたこと、やったことがアイデンティティになる時代● Movable Type● blosxom: 1 ファイルの CGI○ 1ファイル = 1エントリ○ プラグイン = .pl ファイル
Web 2.0● RSS, XML, JavaScript, Ajax● サイトがつながって、面白いものを生み出す● ウェブの人はスピード感が違った
jsBlogTimes● Movable Type のプラグイン MTBlogTimes● の一般化実装 RSSBlogTimes の JavaScript 実装● サーバサイドがわからなかった
はじめてのトラックバック● いわゆるメンション● 相当躊躇した上、送信● その後 mixi でメッセージが来る
はじめての登壇● Shibuya.js ライトニングトーク○ LT って何? 登壇ってなに? って状態● コミュニケーションできる人がたくさんいてビビった
アルバイト● あまりに怠惰すぎて月給1万円なんてこともあった● 夏休み、インターンとして集中開発したところ、楽しい● 大学院を中退して、はてなに就職
2008
就職● 余談: 月給を貰うようになって、モチベーションが低下○ とにかく他人に認められたかった自分に気づく○ おれのモチベーションはそんなものか!?
うごメモはてな● 任天堂との協業で開発したウェブサービス● 自分のプロダクト、という思いが強かった● ぼくのかんがえるカッコイイコードをガシガシ書く
異動後● 自分のコードで同僚が苦しんでる姿を見て、辛かった● 急速に他人を意識したコードを書くようになった● プログラミングからソフトウェア開発へ
登壇(失敗)● 先輩から LT を打診され、受ける● よく考えたら人前で話すのは苦手● 当日の零時くらいまで準備できず、本番はぐだぐだ● その後数年間登壇できなかった
YAPC::Asia● Yet Another Perl Conference● 今なら builderscon とか YAPC::Okinawa とか● Perl に限らない、ウェブ開発者のお祭り● 同僚がこぞって参加して、楽しそうだった● 自分もやっぱり登壇したい
2011
YAPC::Asia Tokyo 登壇● ニコニコ動画のプレイリストを mp3 ストリーミング● ffmpeg + AnyEvent によるイベント駆動プログラミング● 懇親会ぼっちも回避できた
何をサブミットするか● “たぶんこれはトークの応募の際の説明とかがだめだったんだろうなと予想!” * ← 図星● 内心、落ちたらいいな、とか思ってた● 受け身はやめる、やるならちゃんとやるように*: http://unknownplace.org/memo/2011/10/17/1/
App::htmlcat● ターミナル上のハイライトをブラウザに表示したかった○ 長い長い git log -p とか● 当時流行りの AnyEvent と Server-Sent Events を使ってリアルタイム化● 標準入力をブラウザで tail -f できる htmlcat というのを書いた
webtail● 同コンセプトの Ruby 実装● こっちのほうが人気があった… なぜ?○ カスタマイズ性○ Ruby 製● パッケージング重要
2014
Mackerel● プロジェクトマネージャ的なポジションに● Scala + Go● Go 言語が異様に手に馴染んだ
ghq● リポジトリを URL に基づいた階層でクローン・整理する● Go の練習に● peco と組み合わせると便利、と話題に(ラッキー)● ghq: リモートリポジトリのローカルクローンをシンプルに管理する
ghq: インタフェースの変更● もともとは zsh スクリプト○ cd をいい感じにハンドルしたかった● ツリー構造は Go 風に変更
フィードバック● これは便利! と思ってた機能が不評● 同僚にもこの機能いらんでしょと言われたhttps://twitter.com/miyagawa/status/480950493837926403
gore● mackerel-agent の公開 API の変更を追いたかった○ 学んだこと: Go による Go プログラムの操作● REPL が作れそうだったのでやったらできた○ go run○ コンパイル時にエラーになるコードを除く● コード補完もできる Go の REPL「gore」を作った
● ようやく自信を持って発表できた感覚● はじめての登壇から10年近く経っていた……
CTO としての仕事● メカニズム○ ソフトウェア○ 人々の how を変える● メッセージ○ 言葉○ 人々の why を変える
教訓
「できること」と「やりたいこと」は両輪● やりたいことがあれば、できることは付いてくる● できることが増えれば、やりたいことも広がっていく
書くことと話すこと● 知識や考えや経験を直列化する試み● 自分にとっては一種のセーブポイント● 吐き出したら忘れて、新しいことをする
自分の小さい世界を変える● エンジニアの大それた夢 = 世界を変える● いきなり挑むには世界は広い● 自分と、自分の周囲を変えることはいつでもできる
自分のため、からはじめよう