SlideShare a Scribd company logo
Submit Search
Upload
たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016
Report
Share
Kei IWASAKI
Follow
•
18 likes
•
8,070 views
1
of
90
たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016
•
18 likes
•
8,070 views
Report
Share
Download Now
Download to read offline
Technology
PyCon JP 2016 で発表したときのスライドです https://pycon.jp/2016/ja/schedule/presentation/41/
Read more
Kei IWASAKI
Follow
Recommended
メルカリ・ソウゾウでは どうGoを活用しているのか? by
メルカリ・ソウゾウでは どうGoを活用しているのか?
Takuya Ueda
12.7K views
•
81 slides
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側 by
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
Takeshi HASEGAWA
132.6K views
•
70 slides
AI開発を円滑に進めるための契約・法務・知財 by
AI開発を円滑に進めるための契約・法務・知財
Hirono Jumpei
38K views
•
121 slides
Azure Spatial Anchorについて少し調べた話 by
Azure Spatial Anchorについて少し調べた話
Takahiro Miyaura
1.8K views
•
14 slides
PythonによるWebスクレイピング勉強会 by
PythonによるWebスクレイピング勉強会
淳子 土肥
399 views
•
20 slides
情シス必要論 re:Birth by
情シス必要論 re:Birth
Mitsuhiro Yamashita
1.9K views
•
95 slides
More Related Content
What's hot
Github Actionsで始めるROS/ROS2のCI by
Github Actionsで始めるROS/ROS2のCI
Atsuki Yokota
2K views
•
16 slides
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術 by
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
Unity Technologies Japan K.K.
16.9K views
•
151 slides
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト by
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
KLab Inc. / Tech
2.3K views
•
15 slides
Unityでスマホアプリが作れるか? by
Unityでスマホアプリが作れるか?
MakotoItoh
16.5K views
•
28 slides
物体検出フレームワークMMDetectionで快適な開発 by
物体検出フレームワークMMDetectionで快適な開発
Tatsuya Suzuki
4.1K views
•
35 slides
プログラミング初心者がOpenCVと機械学習でOCRエンジン自作に挑戦する話 by
プログラミング初心者がOpenCVと機械学習でOCRエンジン自作に挑戦する話
marika_hotani
2.3K views
•
27 slides
What's hot
(20)
Github Actionsで始めるROS/ROS2のCI by Atsuki Yokota
Github Actionsで始めるROS/ROS2のCI
Atsuki Yokota
•
2K views
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術 by Unity Technologies Japan K.K.
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
Unity Technologies Japan K.K.
•
16.9K views
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト by KLab Inc. / Tech
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
KLab Inc. / Tech
•
2.3K views
Unityでスマホアプリが作れるか? by MakotoItoh
Unityでスマホアプリが作れるか?
MakotoItoh
•
16.5K views
物体検出フレームワークMMDetectionで快適な開発 by Tatsuya Suzuki
物体検出フレームワークMMDetectionで快適な開発
Tatsuya Suzuki
•
4.1K views
プログラミング初心者がOpenCVと機械学習でOCRエンジン自作に挑戦する話 by marika_hotani
プログラミング初心者がOpenCVと機械学習でOCRエンジン自作に挑戦する話
marika_hotani
•
2.3K views
ゲームAI・実装事例の紹介 by Koji Morikawa
ゲームAI・実装事例の紹介
Koji Morikawa
•
9K views
Unityネイティブプラグインマニアクス #denatechcon by DeNA
Unityネイティブプラグインマニアクス #denatechcon
DeNA
•
15.7K views
2022国際ロボット展に見る産業用ロボットの最新技術動向 by 豆寄席 (株式会社豆蔵)
2022国際ロボット展に見る産業用ロボットの最新技術動向
豆寄席 (株式会社豆蔵)
•
550 views
モバイルアプリの高速で安定したビルドを支えるJenkins運用術 by KLab Inc. / Tech
モバイルアプリの高速で安定したビルドを支えるJenkins運用術
KLab Inc. / Tech
•
226 views
デジタルゲームにおけるマルチエージェント操作技術 by Youichiro Miyake
デジタルゲームにおけるマルチエージェント操作技術
Youichiro Miyake
•
465 views
文献紹介:YOLO series:v1-v5, X, F, and YOWO by Toru Tamaki
文献紹介:YOLO series:v1-v5, X, F, and YOWO
Toru Tamaki
•
357 views
Ml system in_python by yusuke shibui
Ml system in_python
yusuke shibui
•
11.7K views
ゲームAI入門(後半) by Youichiro Miyake
ゲームAI入門(後半)
Youichiro Miyake
•
5.2K views
四脚ロボットによるつくばチャレンジへの取り組み by kiyoshiiriemon
四脚ロボットによるつくばチャレンジへの取り組み
kiyoshiiriemon
•
1.5K views
ChatGPTで面白い物語は作れるのか? by Takanari Tokuwa
ChatGPTで面白い物語は作れるのか?
Takanari Tokuwa
•
3.3K views
VRM-VCIが広げるVR世界間ポータビリティ by VirtualCast, Inc.
VRM-VCIが広げるVR世界間ポータビリティ
VirtualCast, Inc.
•
1.6K views
厚生労働分野におけるAI技術の利活用について by Deep Learning Lab(ディープラーニング・ラボ)
厚生労働分野におけるAI技術の利活用について
Deep Learning Lab(ディープラーニング・ラボ)
•
1.3K views
関数プログラマから見たPythonと機械学習 by Masahiro Sakai
関数プログラマから見たPythonと機械学習
Masahiro Sakai
•
31.4K views
たのしいPwn 公開用 by uu ymd
たのしいPwn 公開用
uu ymd
•
2.4K views
Viewers also liked
PyConJP2016: 週末サイエンティストのススメ by
PyConJP2016: 週末サイエンティストのススメ
Yuta Kashino
18K views
•
57 slides
Learning stochastic neural networks with Chainer by
Learning stochastic neural networks with Chainer
Seiya Tokui
7.2K views
•
30 slides
GoによるWebアプリ開発のキホン by
GoによるWebアプリ開発のキホン
Akihiko Horiuchi
61K views
•
33 slides
マイクロサービスを利用する側のパフォーマンス向上策 (PyCon JP 2016) by
マイクロサービスを利用する側のパフォーマンス向上策 (PyCon JP 2016)
株式会社MonotaRO Tech Team
2.7K views
•
47 slides
Pythonを含む多くのプログラミング言語を扱う処理フレームワークとパターン、鷲崎弘宜、PyConJP 2016 招待講演 by
Pythonを含む多くのプログラミング言語を扱う処理フレームワークとパターン、鷲崎弘宜、PyConJP 2016 招待講演
Hironori Washizaki
4.9K views
•
26 slides
Pyconjp2016 pyftplib by
Pyconjp2016 pyftplib
Shinya Okano
2.4K views
•
23 slides
Viewers also liked
(20)
PyConJP2016: 週末サイエンティストのススメ by Yuta Kashino
PyConJP2016: 週末サイエンティストのススメ
Yuta Kashino
•
18K views
Learning stochastic neural networks with Chainer by Seiya Tokui
Learning stochastic neural networks with Chainer
Seiya Tokui
•
7.2K views
GoによるWebアプリ開発のキホン by Akihiko Horiuchi
GoによるWebアプリ開発のキホン
Akihiko Horiuchi
•
61K views
マイクロサービスを利用する側のパフォーマンス向上策 (PyCon JP 2016) by 株式会社MonotaRO Tech Team
マイクロサービスを利用する側のパフォーマンス向上策 (PyCon JP 2016)
株式会社MonotaRO Tech Team
•
2.7K views
Pythonを含む多くのプログラミング言語を扱う処理フレームワークとパターン、鷲崎弘宜、PyConJP 2016 招待講演 by Hironori Washizaki
Pythonを含む多くのプログラミング言語を扱う処理フレームワークとパターン、鷲崎弘宜、PyConJP 2016 招待講演
Hironori Washizaki
•
4.9K views
Pyconjp2016 pyftplib by Shinya Okano
Pyconjp2016 pyftplib
Shinya Okano
•
2.4K views
RaspberryPiで日本の子供たちにプログラミングのパッションを伝えよう! by Antoine Choppin
RaspberryPiで日本の子供たちにプログラミングのパッションを伝えよう!
Antoine Choppin
•
3.2K views
軽量のススメ by hirokiky
軽量のススメ
hirokiky
•
2.1K views
kay-jpmobile by Tasuku Suenaga
kay-jpmobile
Tasuku Suenaga
•
3.8K views
Python札幌 2012/06/17 by Shinya Okano
Python札幌 2012/06/17
Shinya Okano
•
1.6K views
mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ by Shinya Okano
mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ
Shinya Okano
•
1.5K views
Python勉強会資料(MessageBoard作成) by Kimihiro N
Python勉強会資料(MessageBoard作成)
Kimihiro N
•
9.7K views
Biblnk by 繁史 河久保
Biblnk
繁史 河久保
•
508 views
Django最速デバッグ指南 PyConAPAC 2013 by hirokiky
Django最速デバッグ指南 PyConAPAC 2013
hirokiky
•
8.1K views
hello waf, hello phoenix by Tsunenori Oohara
hello waf, hello phoenix
Tsunenori Oohara
•
2.5K views
Pythonではじめる野球プログラミング - kawasaki.rb #15 2014/8/27 by Shinichi Nakagawa
Pythonではじめる野球プログラミング - kawasaki.rb #15 2014/8/27
Shinichi Nakagawa
•
5.3K views
【11月3日】本場スタンフォード大学に学ぶ!デザイン思考入門 by Takanori Kashino
【11月3日】本場スタンフォード大学に学ぶ!デザイン思考入門
Takanori Kashino
•
64.7K views
Pythonで実現する4コマ漫画の分析・評論 by esu ji
Pythonで実現する4コマ漫画の分析・評論
esu ji
•
3.2K views
自分よりも技術力の高い会社に入社して感じたこと by Suzuki Masayuki
自分よりも技術力の高い会社に入社して感じたこと
Suzuki Masayuki
•
4.3K views
Djangoフレームワークの紹介 OSC2015北海道 by Shinya Okano
Djangoフレームワークの紹介 OSC2015北海道
Shinya Okano
•
2.3K views
Similar to たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016
今時のオンプレなgithubクローン環境構築 by
今時のオンプレなgithubクローン環境構築
You&I
197 views
•
23 slides
Python for Beginners ( #PyLadiesKyoto Meetup ) by
Python for Beginners ( #PyLadiesKyoto Meetup )
Ai Makabi
793 views
•
25 slides
Python エンジニアの作り方 2011.08 #pyconjp by
Python エンジニアの作り方 2011.08 #pyconjp
Takeshi Komiya
3.4K views
•
22 slides
[PyConJP2019]Pythonで切り開く新しい農業 by
[PyConJP2019]Pythonで切り開く新しい農業
Makoto Koike
9.8K views
•
74 slides
Django で始める PyCharm 入門 by
Django で始める PyCharm 入門
kashew_nuts
5.6K views
•
26 slides
211120 他人の書いたPythonスクリプトをステップ実行で理解する by
211120 他人の書いたPythonスクリプトをステップ実行で理解する
Takuya Nishimoto
1.3K views
•
39 slides
Similar to たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016
(20)
今時のオンプレなgithubクローン環境構築 by You&I
今時のオンプレなgithubクローン環境構築
You&I
•
197 views
Python for Beginners ( #PyLadiesKyoto Meetup ) by Ai Makabi
Python for Beginners ( #PyLadiesKyoto Meetup )
Ai Makabi
•
793 views
Python エンジニアの作り方 2011.08 #pyconjp by Takeshi Komiya
Python エンジニアの作り方 2011.08 #pyconjp
Takeshi Komiya
•
3.4K views
[PyConJP2019]Pythonで切り開く新しい農業 by Makoto Koike
[PyConJP2019]Pythonで切り開く新しい農業
Makoto Koike
•
9.8K views
Django で始める PyCharm 入門 by kashew_nuts
Django で始める PyCharm 入門
kashew_nuts
•
5.6K views
211120 他人の書いたPythonスクリプトをステップ実行で理解する by Takuya Nishimoto
211120 他人の書いたPythonスクリプトをステップ実行で理解する
Takuya Nishimoto
•
1.3K views
LT: 今日帰ってすぐに始められるPython #nds45 by civic Sasaki
LT: 今日帰ってすぐに始められるPython #nds45
civic Sasaki
•
2.2K views
Python界隈の翻訳プロジェクト by Tetsuya Morimoto
Python界隈の翻訳プロジェクト
Tetsuya Morimoto
•
3.5K views
Python & PyConJP 2014 Report by gree_tech
Python & PyConJP 2014 Report
gree_tech
•
2.9K views
PyCon JP 2017Yuta Kitagami by Yuta Kitagami
PyCon JP 2017Yuta Kitagami
Yuta Kitagami
•
7.2K views
初学者のためのプロンプトエンジニアリング実践.pptx by Akifumi Niida
初学者のためのプロンプトエンジニアリング実践.pptx
Akifumi Niida
•
961 views
いまどき(これから)のPHP開発 by Kenjiro Kubota
いまどき(これから)のPHP開発
Kenjiro Kubota
•
4K views
せっかくだから俺はこの NPAPI の話をするぜ by Naruto TAKAHASHI
せっかくだから俺はこの NPAPI の話をするぜ
Naruto TAKAHASHI
•
14.3K views
プログラミング学習とScratch raspi python by Yoshitaka Shiono
プログラミング学習とScratch raspi python
Yoshitaka Shiono
•
4.1K views
Pythonでラズパイのgpio制御 by artk saga
Pythonでラズパイのgpio制御
artk saga
•
402 views
私の好きなPython構文 vol.2 #nds46 by civicpg
私の好きなPython構文 vol.2 #nds46
civicpg
•
1.8K views
人間のためのpython #stapy68 2021-04-14 by Xoxzo Inc.
人間のためのpython #stapy68 2021-04-14
Xoxzo Inc.
•
334 views
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化 by Yutaka Kato
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
Yutaka Kato
•
686 views
Pythonとgit hubとベンチャー企業の上手な付き合い方 by Takahiro Fujiwara
Pythonとgit hubとベンチャー企業の上手な付き合い方
Takahiro Fujiwara
•
5.7K views
S09 t0 orientation by Takeshi Akutsu
S09 t0 orientation
Takeshi Akutsu
•
979 views
More from Kei IWASAKI
コロナ渦とキャリアの話 / my carrier and covid-19 by
コロナ渦とキャリアの話 / my carrier and covid-19
Kei IWASAKI
2.2K views
•
32 slides
Collaboration hack with slackbot - PyCon HK 2018 - 2018.11.24 by
Collaboration hack with slackbot - PyCon HK 2018 - 2018.11.24
Kei IWASAKI
1.8K views
•
63 slides
Elasticbeanstalk で Ansible を使っている話 by
Elasticbeanstalk で Ansible を使っている話
Kei IWASAKI
1.7K views
•
36 slides
入門書を読み終わったらなにしよう? 〜Python と WebAPI の使い方から学ぶ次の一歩〜 / next-step-python-programing by
入門書を読み終わったらなにしよう? 〜Python と WebAPI の使い方から学ぶ次の一歩〜 / next-step-python-programing
Kei IWASAKI
6.5K views
•
50 slides
Pelican の紹介 / World Plone Day 2017 Tokyo by
Pelican の紹介 / World Plone Day 2017 Tokyo
Kei IWASAKI
2K views
•
31 slides
3分でサーバオペレーションコマンドを作る技術 by
3分でサーバオペレーションコマンドを作る技術
Kei IWASAKI
12.7K views
•
52 slides
More from Kei IWASAKI
(10)
コロナ渦とキャリアの話 / my carrier and covid-19 by Kei IWASAKI
コロナ渦とキャリアの話 / my carrier and covid-19
Kei IWASAKI
•
2.2K views
Collaboration hack with slackbot - PyCon HK 2018 - 2018.11.24 by Kei IWASAKI
Collaboration hack with slackbot - PyCon HK 2018 - 2018.11.24
Kei IWASAKI
•
1.8K views
Elasticbeanstalk で Ansible を使っている話 by Kei IWASAKI
Elasticbeanstalk で Ansible を使っている話
Kei IWASAKI
•
1.7K views
入門書を読み終わったらなにしよう? 〜Python と WebAPI の使い方から学ぶ次の一歩〜 / next-step-python-programing by Kei IWASAKI
入門書を読み終わったらなにしよう? 〜Python と WebAPI の使い方から学ぶ次の一歩〜 / next-step-python-programing
Kei IWASAKI
•
6.5K views
Pelican の紹介 / World Plone Day 2017 Tokyo by Kei IWASAKI
Pelican の紹介 / World Plone Day 2017 Tokyo
Kei IWASAKI
•
2K views
3分でサーバオペレーションコマンドを作る技術 by Kei IWASAKI
3分でサーバオペレーションコマンドを作る技術
Kei IWASAKI
•
12.7K views
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~ by Kei IWASAKI
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Kei IWASAKI
•
2.7K views
Vagrant+virtualboxを使ってみよう by Kei IWASAKI
Vagrant+virtualboxを使ってみよう
Kei IWASAKI
•
4.7K views
障害発生時に抑えておきたい基礎知識 by Kei IWASAKI
障害発生時に抑えておきたい基礎知識
Kei IWASAKI
•
2.2K views
監視のススメ by Kei IWASAKI
監視のススメ
Kei IWASAKI
•
914 views
Recently uploaded
SNMPセキュリティ超入門 by
SNMPセキュリティ超入門
mkoda
420 views
•
15 slides
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
23 views
•
38 slides
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
NTT DATA Technology & Innovation
132 views
•
42 slides
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向 by
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Hitachi, Ltd. OSS Solution Center.
85 views
•
26 slides
定例会スライド_キャチs 公開用.pdf by
定例会スライド_キャチs 公開用.pdf
Keio Robotics Association
127 views
•
64 slides
光コラボは契約してはいけない by
光コラボは契約してはいけない
Takuya Matsunaga
24 views
•
17 slides
Recently uploaded
(10)
SNMPセキュリティ超入門 by mkoda
SNMPセキュリティ超入門
mkoda
•
420 views
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by NTT DATA Technology & Innovation
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
•
23 views
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by NTT DATA Technology & Innovation
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
NTT DATA Technology & Innovation
•
132 views
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向 by Hitachi, Ltd. OSS Solution Center.
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Hitachi, Ltd. OSS Solution Center.
•
85 views
定例会スライド_キャチs 公開用.pdf by Keio Robotics Association
定例会スライド_キャチs 公開用.pdf
Keio Robotics Association
•
127 views
光コラボは契約してはいけない by Takuya Matsunaga
光コラボは契約してはいけない
Takuya Matsunaga
•
24 views
Windows 11 information that can be used at the development site by Atomu Hidaka
Windows 11 information that can be used at the development site
Atomu Hidaka
•
89 views
IPsec VPNとSSL-VPNの違い by 富士通クラウドテクノロジーズ株式会社
IPsec VPNとSSL-VPNの違い
富士通クラウドテクノロジーズ株式会社
•
502 views
The Things Stack説明資料 by The Things Industries by CRI Japan, Inc.
The Things Stack説明資料 by The Things Industries
CRI Japan, Inc.
•
73 views
SSH応用編_20231129.pdf by icebreaker4
SSH応用編_20231129.pdf
icebreaker4
•
366 views
たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016
1.
たった一ファイルの python スクリプトから始める OSS 開発入門 PyCon JP 2016 2016‒09‒21 Wed GMO Pepabo, Inc Kei IWASAKI
2.
お前誰?
3.
Kei IWASAKI Twitter: @laugh̲k Github: @laughk GMOペパボ ‒ 技術部所属 最近は tetote というサービスの開発などの技術支援を行う ペパボでは珍しく python & Django を触っている 元MSPのWeb系インフラエンジニア ペパボでも元々はインフラエンジニア
4.
https://tetote‒market.jp
5.
#pyhack
6.
今日のお話
7.
プログラムコードを書かないWeb系インフラエン ジニアが python を通じてコードを書くようにな り、その成果物をオープンにするようになった体 験とその時の起こった技術的な広がりの話 ※ 突っ込んだ技術的な話はありません
8.
対象 普段コードを書きたいと思ってもなかなかかけていない人 将来的にもっとコードを書くことを自分の業務の中心にしていきたいと考え ている人 身近なスクリプトを公開していくことに興味がある人 特にWeb系インフラエンジニアの方
9.
Outline 1. 簡単な監視やオペレーションの自動化をはじめていたころの話 2. コマンドラインツールの開発に乗り出して行った話 3. github/PyPI に成果物をのせてみた話 4. オープンにすることも自然になっていった話 5. おわりに
10.
1. 簡単な監視やオペレーションの自 動化をはじめていたころ
11.
もちろん最初から手を動かして コードの力を活用できていたわけではない
12.
数年前のお仕事 サーバのお世話 サーバの初期構築 SSH経由のコマンドラインに寄るオペレーション 機器の購入や遊休化などの資産管理的なこと データセンタでラッキング、ケーブリング 障害対応 ドキュメント 手順書(ここでこのコマンドを実行するなどをまとめたもの) Excel/Word メールチェック 送信元はだいたい人間じゃない などなど
13.
普通に過ごしていると プログラムはほぼ触らない
14.
慣れてくればオペレーションのスキルもそこそこ上がる し、ドキュメントの書き方もわかってくる。でも日々の業 務の延長線上だけで過ごしてといずれ技術者としてできる ことが頭打ちになってくる という危機感が日に日に強くなっていた
15.
たしかに、サーバー構築自体は効率よくできるようになっているでもそれはエン ジニアとして成長しているわけではなく、ただサーバーをつくるのがうまくなっ ているだけなんです 【後編】第5回ペパボテックカンファレンス~インフラエンジニア大特集~開 催レポート より
16.
手を動かさなきゃ!!!
17.
少しずつ手をつけていった シェル芸も磨いてそもそものオペレーションスキルを上げた 何度も同じことをすることはスクリプト化 Perl も試してみた Python も触ってみた
18.
Python に馴染めた 書き方が矯正される分、時間を開けながら見てもそこまで苦労せずに読み書 きできた 雰囲気がシェルスクリプトと違って戸惑ったけど、それは最初だけだった Linuxサーバであればどこでも使えるのも大きかった デプロイツールとして有名な fabric も使いやすかった
19.
この時意識していたこと 無理矢理にでもコードを書く方向に仕事をもっていった 時間に余裕があるときは「これコード書いて楽できないか?」を考えて強引 にでも手を動かす 既に配置されてる監視スクリプトなど既存のコマンドの中身を覗いてみて参 考にしたりもした 緊急時やそれっきりではないとき「それシェル芸でいいじゃん」という気持 ちをこらえる
20.
少しずつ身についていった そこそこ複雑な作業であったり、シェルスクリプトがつらくなってきたら Python を使うようになっていった 標準ライブラリの使い方も覚えていき、徐々に手に馴染むようになってきた
21.
Python を使い始めて幅が広がった例
22.
fabric による複数サーバに対するオ ペレーションの自動化 メンバーの増減に伴うあたたかみのある usradd (userdel) x 稼働サーバか らの開放など
23.
fabric による複数サーバに対するオ ペレーションの自動化 fabfile.py: from fabric.api import
sudo def useradd(): sudo('useradd -m -d /home/laughk laughk') ユーザー追加 $ fab -H hostname1,hostname2,... useradd
24.
複雑な状況のAkamaiのキャッシュパ ージ Akamai の複雑な条件でのキャッシュパージ PyPI に ccuapi というキャッシュ関連のAPIを扱うライブラリがある 実際にあったケースは http://<ドメイン名>/<アカウントID1>/<アカウントID2>/etc/...
25.
シェルコマンドだけでは困難な調査 URLエンコードをした状態のファイルパスで 255byte を超えるもの一覧を取得する 対象のファイル名一覧は find コマンド + fabric でリストファイルとして取得 リストファイルのファイルパスを URL encode した状態ですべて評価 python スクリプトは urllib, re, sets の標準モジュールだけで可能だった
26.
バク速になった例 シェルスクリプトよりもパフォーマンスの面でよかった例 find + xargs によるリネームよりも os/glob モジュールを使った python ス クリプトのリネームのほうが早かった
27.
少しずつにできることが増え 技術的な広がりを感じ始めた
28.
とはいえ広がりの限界もあった
29.
書いたスクリプトは実行したサーバにそのまま放置されてしまい、結果自分 でも存在を忘れがち 過去の成果物をよその環境で使いたいと思ったときに移植するのが非常に面 倒だったりする バージョン管理、構成管理がされないケースのほうが多い結果として秘伝の タレの一部と化すこともある
30.
場当たり的なスクリプトの限界を感 じ始めた
31.
ここまでまとめ
32.
ここまでまとめ 業務だけで得られる知識だけでは技術的に取り残されそうという危機感から 手を動かし始めた 業務にも使えそうなものを色々試してみて python が一番手に馴染んだ 無理矢理でも業務で使い、少しずつできることが増え、技術的な広がりを実 感してきた とはいえ場当たり的にコードを書いてるだけでは問題も出てきた
33.
2. コマンドラインツールの開発に乗 り出して行った話
34.
状況に応じて機会を見つけてコードを書いた りしてみるもののどこか「裏技」のような感 覚が抜けきれないでいた
35.
転機
36.
「fabric 便利だけどもう少しワンラ イナーで気軽に使いたいねー」
37.
「fabric 便利だけどもう少しワンライナーで気軽 に使いたいねー」という声を聞く ※ 便利なので個人のオペレーション効率化でよく使っていた
38.
「fabric.api.execute 使えば wrapper みたいなの 作れるのでは」と思い始める
39.
ということで作った
40.
cmspkit
41.
cmspkit カラーミショップのインフラチームに在籍中に制作 cmsp(カラーミーショップ) + kit(道具) 日々の運用を便利にすることを目標に作ったもの 主に role ごとのリモートコマンドをいい感じに実行してくれる カラーミーショップのインフラ環境に特化したものなので非公開
42.
cmspkit 使っている技術の詳細についてはこちら http://www.slideshare.net/laughk/3‒53764813
43.
cmspkit # リモートにてコマンド実行 $ cmspkit
remote exec [options] # リモートのファイル取得 $ cmspkit remote get [options] # リモートにファイルを転送 $ cmspkit remote push [options] 主なオプション -s, --sudo ... sudo を利用して root 実行をする -H, --hostname ... 実行対象をIPやホスト名指定`,`区切りで複数化 -R, --roles ... 実行対象をロール名で指定する `,` 区切りで複数化 -P, --parallel ... パラレルで実行数も指定可能 -c, --command ... exec 用オプション 実行するシェルコマンド指定する
44.
cmspkit 例 構成管理するまでもないスクリプトファイルの配布 img ロールに配布する場合 $ cmspkit remote
push > -s -P 3 --roles img > -f send-to-bayt/rsync-to-bayt.sh > -d /root/send-to-bayt/rsync-to-bayt.sh [img20a.***.jp] put: send-to-bayt/rsync-to-bayt.sh -> /root/send-to-bayt/rsync [img17.***.jp] put: send-to-bayt/rsync-to-bayt.sh -> /root/send-to-bayt/rsync- [img13.***.jp] put: send-to-bayt/rsync-to-bayt.sh -> /root/send-to-bayt/rsync- [img08.***.jp] put: send-to-bayt/rsync-to-bayt.sh -> /root/send-to-bayt/rsync- [img06.***.jp] put: send-to-bayt/rsync-to-bayt.sh -> /root/send-to-bayt/rsync- [img04.***.jp] put: send-to-bayt/rsync-to-bayt.sh -> /root/send-to-bayt/rsync- [img03.***.jp] put: send-to-bayt/rsync-to-bayt.sh -> /root/send-to-bayt/rsync- [img02.***.jp] put: send-to-bayt/rsync-to-bayt.sh -> /root/send-to-bayt/rsync- [img.***.jp] put: send-to-bayt/rsync-to-bayt.sh -> /root/send-to-bayt/rsync-
45.
cmspkit 例 img ロールで home の残り容量がヤバイ順に sort [laughk@manage00i ~]$ cmspkit
remote exec -R img -c 'df -h /home' | grep [img01.***.jp] Login password for 'laughk': [img12.***.jp] out: 168G 155G 13G 93% /home [img05.***.jp] out: 487G 469G 19G 97% /home [img10.***.jp] out: 168G 143G 26G 85% /home [img07.***.jp] out: 488G 459G 30G 94% /home [img16.***.jp] out: 168G 125G 34G 79% /home [img14.***.jp] out: 488G 452G 37G 93% /home [img11.***.jp] out: 488G 425G 39G 92% /home [img15.***.jp] out: 481G 442G 40G 92% /home [img09.***.jp] out: 168G 112G 48G 71% /home [img17.***.jp] out: 488G 437G 52G 90% /home [img04.***.jp] out: 168G 104G 56G 65% /home [img13.***.jp] out: 488G 406G 59G 88% /home [img06.***.jp] out: 488G 401G 63G 87% /home [img08.***.jp] out: 481G 418G 63G 88% /home [img02.***.jp] out: 488G 424G 65G 87% /home
46.
cmspkit この時に気を使ったこと 配布しやすいようにパッケージング 共通踏み台サーバにはインストール 「ツール作ったよー」ということを宣伝
47.
cmspkit 配布しやすいようにパッケージング pip install で入れれるようにする作業 setup.py を含んだリポジトリを Github Enterprise においた やり方は Python プロフェッショナルプログラミング 第2版 の Part1 Chapter3 の 「Pythonプロジェクト の構成とパッケージ作成」の情報をもとに 今だと @tell‒k さんの PyPIデビュー 2015 がものす ごく参考になる
48.
cmspkit 共通踏み台サーバにはインストール 他のチームメンバーが必ずログインする場所にセットアップすることですぐ 試せるように パッケージングのおかげで以下の通りでOK $ pip install
> git+https://ghe-url.example.com/cmspkit/cmspkit.git
49.
cmspkit 「ツール作ったよー」ということも宣伝
50.
cmspkit 「ツール作ったよー」ということを宣伝 フィードバックももらえたりした
51.
このとき得たもの
52.
このとき得られたもの パッケージングのノウハウ Github Enterprise 上で管理これまで煩雑になっていたツールの管理が一元化 された 各環境への配布が非常に楽になった ヘルプやREADMEなど使ってもらうことも意識するようになった
53.
なによりも
54.
一つのプロダクトとして提供することでノウハウ を確実に簡単に広められ、フィードバックもすぐ に反映できた
55.
ここまでまとめ
56.
ここまでまとめ 場当たり的にスクリプトを書いているうちはどこか「裏技」のような感覚が あった 使ってもらえるツールとして作りきってみるとプロダクトとして自分以外の 人にも認識され、確実なノウハウ展開とフィードバック反映ができるように なった 使ってもらうツールとして作るにはインストール方法や使い方など、単純な 機能以外も気にすることが多かった
57.
3. Github / PyPI に成果物をのせて みた
58.
takosan というものがある https://github.com/kentaro/takosan 単純な HTTP POST で Slack に通知できる Web インターフェースペパボ社内 では頻繁に使われてる sample: takosan を起動しているサーバへポストする $ curl >
-d 'channel=@laughk' > -d 'message=Hello PyConJP 2016' > http://takosan.example.com:4979/notice
59.
この takosan のクライアントをつく ってみた
60.
kite‒string
61.
kite‒string https://github.com/laughk/kite‒string sample: $ kite >
--channel '@laughk' > --message 'Hello PyCon JP 2016' > http://takosan.example.com:4979/notice タコ糸 curl で 「-d 'key=value'」 といちいち書くのが面臭くなったのでワンラ イナーで使えるコマンドツールとして作ってみた 技術的には CLI フレームワーク Click と requests を使用 元々は cmspkit 同様社内向けにして公開するつもりもなかった
62.
これ、公開してもいいのでは?
63.
勢いでPyPIへ登録 takosan がオープンなものなのでいいやという軽い気持ちで PyPI に登録 アップロード方法はググると結構古い情報が引っかかってしまったけど、プ ロフェッショナルPythonプログラミング第2版が参考に 今だと PyPIデビュー 2015 一番良くまとまっている
64.
公開したときの気持ち https://memo.laughk.org/2015/06/07/kite‒string‒release.html
65.
公開したときの気持ち 勢いで一つの目標を達成してしまった
66.
ここでまとめ
67.
ここでまとめ 自分で作ったものが単純な pip install で導入できてテンションあがったそし て本当に便利 これをきっかけに他の PyPI に乗っかっているコードをより身近なものと感 じるようになった 同時にオープンにすることに対する自分の中の敷居が一気に下がった
68.
ツール自体は大して流行ったとかはは無いけ れど、公開するという体験が精神的な障壁を 取り除いた
69.
完璧ではなかったものの 自分の中でのブレイクスルーを感じ た
70.
4. オープンにすることが自然になっ ていった話
71.
監視周りをどうにかしたいという状 況になった クラウド環境のため新規で Nagios/Munin を入れるのはなかなかつらそうだ った かといって Mackerel のような外部サービスは予算的に厳しい 一般的には自動化周りのノウハウが枯れている Zabbix がよさそう!となっ た
72.
オープンに検証 https://github.com/laughk/zabbix‒playbook‒ubuntu Ansible Plyabook を公開した状態でつくり DigitalOcean でひたすら検証 role として使うことを前提に書いたので、「イケるな!」となったらそのま まプロダクション環境へ適応できた
73.
アラート通知が課題に やりたかったのはSlack通知 Zabbix側でもSlack側でも特に標準で用意はされていなかった いくつか公開されているスクリプトもあったけど「コピペして適宜編集よろ しく!」というスタイル 管理が煩雑になりそうで運用上あまり使いたくない
74.
ということで作った
75.
zbx2slack
76.
zbx2slack https://pypi.python.org/pypi/zbx2slack 実はたった1ファイルの Python スクリプト コマンドのオプションに通知したい情報を渡せばすべてが完結するもの 最初から「公開して配布できるようにすることを前提」に書いた
77.
zbx2slack を作るとき意識したこと 使うことだけに集中してもらいたかった 利用者は中身をいじらなくてもいい 通知に必要な情報は全部コマンドオプションで渡せる 配布を極力簡単にするために1ファイルにすべてまとめた pip install するもよし、直接 wget してサーバにおくもよし CentOS 6 (python2.6) も条件付きで考慮
78.
この体験で得た気づき
79.
この体験で得た気づき 何らかのOSSソフトフェアを選定するときは、覗けるならばコードも読みつ つ更新状況やGithubのIssueなど生きているのかを気にするようになった オープンにすることが前提になることによって自分の環境特有のハードコー ディングがなくなり、解決したい問題をより一般的に捉えるようになった 「これ公開しちゃまずそう」と思うことでも「一般的なこういうことをする 技術」というところをきちんと切り出すことができれば案外自由にできる 1ファイルのスクリプトも、「こういう問題を解決する」「こういうことが できるようになる」ということが満たせているのであれば十二分に公開する 価値はある OSSとして、自分のものとして取り組めるので好きな技術で開発できる
80.
ここまでをまとめると
81.
ここまでをまとめると たった一つのスクリプトを書き捨てる程度から、Python を好きになりここま でやってくる事ができた 確実にコードの力で何かを解決する力が身についてきている オープンにすることによって技術的な視野の広がりも体験して、Pythonにと どまらないものになってきている
82.
おまけ
83.
Python に限らず色々オープンにする ようになった例
84.
自分のブログのテーマ https://github.com/laughk/pelican‒ hss 静的サイトジェネレータ Pelican の テーマ シングルページレイアウトで個人的 に気に入るものがなかったので、フ ォークしてカスタムしたもの
85.
Django チュートリアルをオープンに すすめてみる https://github.com/laughk/py3‒ django‒tutorial 取り組んだ日付ごとにPRで管理 後で自分で振り返ってみるのに便利 だったりする
86.
PCセットアップの記録 https://github.com/laughk/dell‒ xps15‒9550 ブログとは違う粒度でログとして残 しつつアウトプットする場として Issue だけ使ってる
87.
おわりに
88.
ささいなスクリプトでも使われることを意識して 公開していけば目の前の問題は明確になり、他の 誰かの問題も解決できるかもしれない
89.
誰かの作ったスクリプトも 目的を理解して今まで以上に使いこなせるように なって、そんな行動がきっと自身の可能性を広げ て行いきます
90.
たった一ファイルの python スクリプトから始める OSS開発 一緒にやっていきませんか?