Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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)

Slide 10

Slide 10 text

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)

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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)

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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)

Slide 23

Slide 23 text

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