$30 off During Our Annual Pro Sale. View Details »

ソフトウェア開発と私 / Software Development and I

motemen
June 30, 2018

ソフトウェア開発と私 / Software Development and I

ハッカーズチャンプルー2018
リンクありバージョンは: https://docs.google.com/presentation/d/1RfhvrO0lpv8pyPx9NLxqH3yL7C2TZaT6awCT17FSDns/edit

motemen

June 30, 2018
Tweet

More Decks by motemen

Other Decks in Technology

Transcript

  1. ソフトウェア開発と私
    2018-06-30
    ハッカーズチャンプルー2018
    motemen

    View Slide

  2. こんにちは
    ● id:motemen / @motemen(美顔器)
    ● 株式会社はてな CTO
    ● Perl, Go, Git

    View Slide

  3. View Slide

  4. CTO & アプリケーションエンジニア
    ● 2016-現在
    ● 組織・技術・情報
    ● 古めのサービス全般

    View Slide

  5. View Slide

  6. View Slide

  7. CTO室
    ● 事業や開発の新しい基盤をつくる横断チーム
    ● 社内横断で開発効率を上げる取り組み #pepabohatena

    View Slide

  8. サマーインターン

    View Slide

  9. 宣伝終わり

    View Slide

  10. アジェンダ
    ● 自己紹介(40min)

    View Slide

  11. エンジニア遍歴

    View Slide

  12. 199X

    View Slide

  13. BASIC
    ● 本当はゲームを作りたかった(らしい)
    ● 学校の宿題のドリルを解くプログラム
    ○ 完成したころには次の単元だった

    View Slide

  14. 200X

    View Slide

  15. Windows
    ● Visual Basic 5
    ● ランチャー、ジョークソフト

    View Slide

  16. ホームページ
    ● BBS(掲示板)置いてたけど、友達だけだった
    ● 本屋で立ち読みした情報をコピペした技術サイト

    View Slide

  17. Perl との出会い(と別れ)
    ● Perl Poetry(Perl 詩)

    View Slide

  18. 2005

    View Slide

  19. ブログブーム
    ● 考えたこと、やったことがアイデンティティになる時代
    ● Movable Type
    ● blosxom: 1 ファイルの CGI
    ○ 1ファイル = 1エントリ
    ○ プラグイン = .pl ファイル

    View Slide

  20. Web 2.0
    ● RSS, XML, JavaScript, Ajax
    ● サイトがつながって、面白いものを生み出す
    ● ウェブの人はスピード感が違った

    View Slide

  21. jsBlogTimes
    ● Movable Type のプラグイン MTBlogTimes
    ● の一般化実装 RSSBlogTimes の JavaScript 実装
    ● サーバサイドがわからなかった

    View Slide

  22. はじめてのトラックバック
    ● いわゆるメンション
    ● 相当躊躇した上、送信
    ● その後 mixi でメッセージが来る

    View Slide

  23. はじめての登壇
    ● Shibuya.js ライトニングトーク
    ○ LT って何? 登壇ってなに? って状態
    ● コミュニケーションできる人がたくさんいてビビった

    View Slide

  24. アルバイト
    ● あまりに怠惰すぎて月給1万円なんてこともあった
    ● 夏休み、インターンとして集中開発したところ、楽しい
    ● 大学院を中退して、はてなに就職

    View Slide

  25. 2008

    View Slide

  26. 就職
    ● 余談: 月給を貰うようになって、モチベーションが低下
    ○ とにかく他人に認められたかった自分に気づく
    ○ おれのモチベーションはそんなものか!?

    View Slide

  27. うごメモはてな
    ● 任天堂との協業で開発したウェブサービス
    ● 自分のプロダクト、という思いが強かった
    ● ぼくのかんがえるカッコイイコードをガシガシ書く

    View Slide

  28. 異動後
    ● 自分のコードで同僚が苦しんでる姿を見て、辛かった
    ● 急速に他人を意識したコードを書くようになった
    ● プログラミングからソフトウェア開発へ

    View Slide

  29. 登壇(失敗)
    ● 先輩から LT を打診され、受ける
    ● よく考えたら人前で話すのは苦手
    ● 当日の零時くらいまで準備できず、本番はぐだぐだ
    ● その後数年間登壇できなかった

    View Slide

  30. YAPC::Asia
    ● Yet Another Perl Conference
    ● 今なら builderscon とか YAPC::Okinawa とか
    ● Perl に限らない、ウェブ開発者のお祭り
    ● 同僚がこぞって参加して、楽しそうだった
    ● 自分もやっぱり登壇したい

    View Slide

  31. 2011

    View Slide

  32. YAPC::Asia Tokyo 登壇
    ● ニコニコ動画のプレイリストを mp3 ストリーミング
    ● ffmpeg + AnyEvent によるイベント駆動プログラミング
    ● 懇親会ぼっちも回避できた

    View Slide

  33. 何をサブミットするか
    ● “たぶんこれはトークの応募の際の説明とかがだめだったんだ
    ろうなと予想!” * ← 図星
    ● 内心、落ちたらいいな、とか思ってた
    ● 受け身はやめる、やるならちゃんとやるように
    *: http://unknownplace.org/memo/2011/10/17/1/

    View Slide

  34. App::htmlcat
    ● ターミナル上のハイライトをブラウザに表示したかった
    ○ 長い長い git log -p とか
    ● 当時流行りの AnyEvent と Server-Sent Events を使って
    リアルタイム化
    ● 標準入力をブラウザで tail -f できる htmlcat というのを書い

    View Slide

  35. webtail
    ● 同コンセプトの Ruby 実装
    ● こっちのほうが人気があった… なぜ?
    ○ カスタマイズ性
    ○ Ruby 製
    ● パッケージング重要

    View Slide

  36. 2014

    View Slide

  37. Mackerel
    ● プロジェクトマネージャ的なポジションに
    ● Scala + Go
    ● Go 言語が異様に手に馴染んだ

    View Slide

  38. ghq
    ● リポジトリを URL に基づいた階層でクローン・整理する
    ● Go の練習に
    ● peco と組み合わせると便利、と話題に(ラッキー)
    ● ghq: リモートリポジトリのローカルクローンをシンプルに管理
    する

    View Slide

  39. ghq: インタフェースの変更
    ● もともとは zsh スクリプト
    ○ cd をいい感じにハンドルしたかった
    ● ツリー構造は Go 風に変更

    View Slide

  40. フィードバック
    ● これは便利! と思ってた機能が不評
    ● 同僚にもこの機能いらんでしょと言われた
    https://twitter.com/miyagawa/status/480950493837926403

    View Slide

  41. gore
    ● mackerel-agent の公開 API の変更を追いたかった
    ○ 学んだこと: Go による Go プログラムの操作
    ● REPL が作れそうだったのでやったらできた
    ○ go run
    ○ コンパイル時にエラーになるコードを除く
    ● コード補完もできる Go の REPL「gore」を作った

    View Slide

  42. ● ようやく自信を持って発表できた感覚
    ● はじめての登壇から10年近く経っていた……

    View Slide

  43. CTO としての仕事
    ● メカニズム
    ○ ソフトウェア
    ○ 人々の how を変える
    ● メッセージ
    ○ 言葉
    ○ 人々の why を変える

    View Slide

  44. 教訓

    View Slide

  45. 「できること」と「やりたいこと」は両輪
    ● やりたいことがあれば、できることは付いてくる
    ● できることが増えれば、やりたいことも広がっていく

    View Slide

  46. 書くことと話すこと
    ● 知識や考えや経験を直列化する試み
    ● 自分にとっては一種のセーブポイント
    ● 吐き出したら忘れて、新しいことをする

    View Slide

  47. 自分の小さい世界を変える
    ● エンジニアの大それた夢 = 世界を変える
    ● いきなり挑むには世界は広い
    ● 自分と、自分の周囲を変えることはいつでもできる

    View Slide

  48. 自分のため、からはじめよう

    View Slide