Upgrade to Pro — share decks privately, control downloads, hide ads and more …

sue445謹製社内ツール十一選 / su445 in-house tools #pixivdevmeetup

sue445謹製社内ツール十一選 / su445 in-house tools #pixivdevmeetup

エンジニア勉強会 in PIXIV DEV MEETUP ( https://conference.pixiv.co.jp/2021/dev-meetup )で喋ったLT資料です。

sue445
PRO

April 30, 2021
Tweet

More Decks by sue445

Other Decks in Technology

Transcript

  1. sue445謹製社内ツール十一選
    2021/04/30 エンジニア勉強会@PIXIV DEV MEETUP
    pixiv Inc.
    sue445
    2021.4.30

    View Slide

  2. 2
    自己紹介
    ● sue445
    ● 2018年7月入社
    ○ もうすぐ4年目
    ● インフラ部所属
    ● #z-アニメ #z-precure #z-pretty-series
    sue445

    View Slide

  3. 3
    ● AWS, GCP, CI, GitLab, Sentry etc…
    ● 最近は各チームがやりたいことに対して
    AWS, GCP, オンプレでいくつか案を出してアドバイ
    スしたり、実際に自分でシステムを構築
    ● 例)オンプレで動いてたSentryをGKEに移行、Herokuで動いてたアプリをECSに移行
    ● publicな業務内容: https://inside.pixiv.blog/search?q=sue445
    業務内容

    View Slide

  4. 4
    https://www.credential.net/9643f19d-5584-40b6-a330-5b966a26f310
    GCPの認定資格所持 (ドヤッ

    View Slide

  5. 5
    ● ピクシブに入社してから作った社内ツールを紹介
    ● OSSになっていたり、なかったりします
    ○ OSSになってないものは本邦初公開です
    ● 11個紹介するので1つ20秒くらい
    今日話すこと

    View Slide

  6. 6
    ● Q. 何で社内ツールを作るのか?
    ○ 社内の開発環境に不満があるから
    ○ ピクシブが3社目だけどどの会社も大なり小なり不便
    ○ なので不満点を解決するためにツールを作ってる
    ● Q. なんでOSSにするのか?
    ○ 社内コンテキストに依存しない汎用的なものは最初から
    OSSにしておけば今後
    自分が転職した先でも使えて便利
    ■ 実際、前職時代に作ったものが今も活躍してる
    ○ PRが飛んでくれば自分がコードを書かなくても社内が便利になる
    0/11: 前置き

    View Slide

  7. 7
    ● https://github.com/sue445/gitpanda
    ● https://inside.pixiv.blog/sue445/7256
    ● GitLabのURLをSlackに貼り付けた時にいい感じに展開してくれるツール
    1/11: gitpanda (OSS)

    View Slide

  8. 8
    ● https://gitlab.com/sue445/tanuki_reminder
    ● Pull PandaのGitLab版
    ● マージされてないMRをSlackやChatWorkで通知
    2/11: tanuki_reminder (OSS)

    View Slide

  9. 9
    ● https://gitlab.com/sue445/gitlabci-bundle-update-mr
    ● GitLab CI上でbundle updateしてMergeRequestを作るためのgem
    ● circleci-bundle-update-prのGitLab版
    ● 社内版dependabotもあるので併用してる
    3/11: gitlabci-bundle-update-mr (OSS)

    View Slide

  10. 10
    ● pploy(社内デプロイツール)からアプリの各
    APサーバにアプリの実行ユーザで
    rbenv
    installやnodenv installなどするツール
    ● 各APにいちいちsshしてコマンド叩くのが面倒なのでワンクリックでいけるようにした
    ● Ansible Galaxyのrbenvのモジュールだとsudoが使えないユーザでrbenv installできな
    かったのでItamaeで書いた
    ● 余談:sue445は https://github.com/itamae-kitchen/itamae のコミッタ
    4/11: pploy-app-itamae (in-house)

    View Slide

  11. 11
    yamlを編集して
    4/11: pploy-app-itamae (in-house)

    View Slide

  12. 12
    pployからデプロイ先をクリックするとインストールされる
    4/11: pploy-app-itamae (in-house)

    View Slide

  13. 13
    Slackにログが流れる
    4/11: pploy-app-itamae (in-house)

    View Slide

  14. 14
    ● pployが動いてるデプロイサーバ自身に
    pployからrbenv installなどを行う
    ● デプロイサーバにもrbenvが入っているので、rubyの新しいバージョンを使いたい時には
    APだけじゃなくデプロイサーバにもインストールしないと
    cap deployができない
    ● しかしセキュリティの観点からデプロイサーバはインフラ部しか
    sshできない
    ● デプロイサーバでrbenv installする時に毎回インフラ部への作業依頼が発生してたので
    チーム側で作業が完結できるようにするために作った
    5/11: pploy-mitamae (in-house)

    View Slide

  15. 15
    ● https://github.com/sue445/today_anime
    ● https://inside.pixiv.blog/sue445/5647
    ● Slackの#z-anime で定時後に動かしてるボット
    6/11: 今日のアニメボット (OSS)

    View Slide

  16. 16
    ● 今日のアニメボットの映画版
    ● 社内版はOSSじゃないけどruby-jp Slack用に作ったものは
    https://github.com/ruby-jp/anime_bot にあります
    7/11: もうすぐ始まるアニメ映画お知らせ君 (in-house)

    View Slide

  17. 17
    ● 140個以上あるzチャンネルを1日1回ランダムで教えてくれるボット
    8/11: 今日のzチャンネル (in-house)

    View Slide

  18. 18
    ● 社内には #z-evangelion-ネタバレ有 や #z-進撃の巨人ネタバレ有 などのチャンネルもあ
    るので、見てない人が間違って踏まないように抽選から除外する機能もある
    8/11: 今日のzチャンネル (in-house)

    View Slide

  19. 19
    ● https://github.com/sue445/emoy_webhook
    ● https://sue445.hatenablog.com/entry/2019/07/21/225436
    ● Slackにemojiが追加された時に通知するツール
    ● Slackに追加されたemojiはUtsuhieで自動でesaにも同期されてる
    ○ https://fromatom.hatenablog.com/entry/2020/02/04/132414
    9/11: emoy_webhook (OSS)

    View Slide

  20. 20
    ● GitHubのorganizationでメンバー追加やリポジトリの設定変更などが行われた時に
    Slack
    に通知するためのツール
    ● 前職でもこの手のwebhook作ったw
    10/11: github-audit-webhook (in-house)

    View Slide

  21. 21
    ● sshできる社内サーバをモジュールで一元管理しつつ、
    ~/.ssh/configをgit管理しやすくす
    るためのツール
    ○ ~/.ssh/configをgit管理しないなんて小学生までだよね〜 (ギャハハー
    ● コンセプトは https://github.com/mirakui/ec2ssh (gem)に近いのだが、mitamaeベース
    で作ったことで下記のメリットがあった
    ○ mitamaeのプラグイン機構を利用することで社内サーバの一覧を一元管理
    ○ mitamaeがスタンドアローンバイナリなのでバイナリポン置きするだけで使える
    11/11: pixiv_ssh_config (in-house)

    View Slide

  22. 22
    ● ~/.ssh/
    ○ config
    ○ conf.d/
    ■ pixiv : pixiv_ssh_configで動的生成したhost一覧
    ■ xxxx : 必要に応じて自由に追加
    ● ~/ssh_config-mitamae/
    ○ Makefile
    ○ bin/mitamae
    ○ plugins/mitamae-plugin-recipe-pixiv_ssh_config/ (submodule)
    11/11: pixiv_ssh_config (in-house)

    View Slide

  23. 23
    esaの10722と15092に詳しく書いてるので知りたい人は入社してください
    11/11: pixiv_ssh_config (in-house)

    View Slide