Hatena::ブログ(Diary)

星のダンスを見においで

2013-12-09

Pythonを禁止されたインフラエンジニアのたった1つの冴えたやり方

はい、釣りタイトルです。Python Advent Calendar 2013 の9日目は@usaturnがお送りします。
UNIX/Linux環境が自由に使えずWindowsクライアントインフラ運用する場合、Cygwin環境でPython動かすのは結構便利だよ、というお話です。

さて、私はかつてアウトソーシング系の会社に勤めており、色々な現場へ行き色々な経験をさせて頂きましたが、ある時、厳しい現場にあたり非常に困った事がありました。

困った事・・・それは「ほとんどのフリーウェア/OSSを使わせてもらえない」という事(その時の顛末はこちらに https://yukar.in/note/ckFj5Y )。
そもそもインターネットアクセスすら許されないような現場もあるので、私の場合はまだ良かったのかもしれませんが、上記のような時に役に立つ(かもしれない)のがCygwinです。

つまりWindowsネイティブPythonを許可されなくても、Cygwinが許可されればPythonだってなんだって入ってるじゃない!

という主張なのですが、そんなシーンがそうそうあるのかは疑問です。

Cygwinの便利な点

まあまあ、そんな目で見ないで聞いてやってください。

インターフェースについて考える必要が無い

仮想環境のインターフェースだとブリッジでIPアドレスを使ってしまったりNATでハマったりする所ですが、CygwinWindows上で動くのでなんの問題もありません!

Windows上のツールと連携できる

UNIX/Linuxのコマンドが使えるという事は言うに及ばず、Windows上で手軽にシェルスクリプトを書いて動かせますし、ファイラでディレクトリ移動した所をカレントにしてターミナル(mintty等)を開いたり、逆にシェルからcygstartでExcel方眼紙を開く事だってできます!

ビルド環境を整えるのが楽

Pythonの拡張パッケージには、pycryptoやPILのようにインストール時、Cのソースをコンパイルするパッケージがあります。
Windowsの場合はVC++頒布可能パッケージを探してきてインストールする必要があり結構面倒ですが、Cygwinならgccを入れるのは簡単です。むしろ初めから入れてるでしょう!

Pythonを知らなくても使えるツール達


Pythonのパッケージ管理ツール(setuptools,pip)を使って簡単にインストールできる上にPythonコードを書かずに使える便利なツールがあります。

Sphinx

最早語るまでも無いドキュメンテーションツール。

Mercurial

Gitに押されがちですが、Gitよりも学習コストが低いバージョン管理ツール

Ansible

まだchefやpuppetの影に隠れてますが、こちらも学習コストが圧倒的に低い、サーバ等の構成管理ツール

pssh,tomahawk

機能的にはTeraTermProのブロードキャストコマンドに近い物があります。複数サーバへのssh同時実行ツール。

Pythonを書ければもっと便利に!


標準モジュール

Pythonの文法をちょっと覚えれば、充実した標準モジュールを使って作業の自動化ができてしまいます。
socketモジュールで名前解決のチェック、httplibモジュール等でWebやProxyのチェック、smtplibでSMTPのチェックやメール送信などなど。

Fabric

拡張モジュールならFabricを使い、ssh越しにできる作業はなんでも自動化可能。TeraTermマクロでやっていた事、あるいはできなかった事でもFabricならスマートに実行できます。
スクリプト内でのコマンド実行、返り値の取得、ファイル転送まで全てがシームレスに実行可能。
「超強力なリモートで実行できるシェルスクリプト+α」、それがFabricです。

最後に


Cygwin推しな点を述べてきましたが、VirtualBoxなりVmwareServerなりを使わせてもらえるなら素直にCentOSUbuntuを入れた方が幸せになれると思います。Cygwinは動作が重い上に色々やろうとするとハマる事が・・・
しかも「Cygwin環境でPython動かすのは結構便利だよ」というお話をするつもりでしたが、よく考えたらビルド環境を整えるのが楽、という事以外にPython関連で便利な事って無かったですね (∀`*ゞ)テヘッ
タイトルも「インフラエンジニアに勧める言語はPythonで決まりだね!」くらいにしたほうが良かったでしょうか。

さて、明日はtwitterでのゆるふわ顔文字キャラで定評のある @ さんです。

2011-12-18

1人アドベントカレンダー18日目「アジャイルサムライ読書会 新宿道場#1」


アジャイルサムライ読書会 新宿道場#1 2011/12/18 日曜日 14:00 to 17:00

https://connpass.com/event/125/

株式会社タイムインターメディア様の会議室をお貸し頂きました。

諸注意 〜 アイスブレイク 〜 第1章

2つのテーブルで2グループに分かれて座っていたのですが、Python関連の勉強会で顔見知りな方が多かったです。
知らない人同士2人組を組んで10分近く自己紹介〜おしゃべりをたっぷりしました。アイスブレイクでここまで長時間しゃべったのは初めてです(笑)

アイスブレイク終了後は各自、知りたい事を付箋紙に書き出しチーム的にどういう形で進めるか相談しながら勧めていきます。

付箋紙をまとめた所で私のいたグループは大きく分けて2つ

ここで、そもそもアジャイルとは、それぞれにとってどのような物なのかを発表しないか、という提案がメンバから出ます。
みなさんの意見をお聞きして思ったのが、人によってアジャイルのイメージが違う!という事。
私がイメージしているのは「人と人とがコミュニケーションを重視した考え方」でしたが、これはあくまでも根本の考え方の1つにしかすぎずアジャイルの最終目標ではありませんでした。

最後にこの提案をしたメンバの発表がみんなを納得させる1つの答えとなり、それは、

アジャイルとはお客様に価値を届ける事」

ここまでで一区切り。

ワークショップの形式は「ワールドカフェ」。
ワールドカフェはグループを作り、リーダーを決めてディスカッションを進め、話したい人はトークンオブジェクトと呼ぶ目印(コースターでもなんでもいい)を持つルール。
1ラウンドが終わったら、リーダーだけテーブルに残り他の人は別のテーブルに移るという方式です。
今回は2グループしか作らなかった為、変形バージョンとしてリーダーは立てずにメンバが半々入れ替えに。

ここでも色々な意見が出ます。

  • アジャイルなら計画を立てなくていい、いくら仕様変更をしてもいい、というわけじゃないでしょ?
  • アジャイルは何度でも小さな計画を立て直す事ができる
  • buzzwordじゃないよ!」 #世界のマスターセンセー
  • フィードバックも道を見ながらハンドリングをする必要があるよね?
  • Webで有名なブランコの話
  • ゴールさえしっかりしていれば、なんとかなるんじゃないか
  • 色々な事象フィードバックされるから進める事ができる
  • アジャイルとは共有する事だよね
  • ゴールを共有してフィードバックする事で柔軟性が出てくるのではないか?

2ラウンド目が終わり、おやつタイムへ。

おやつタイム

主催者の方の心づくしで凄く豪勢な感じでした。スイートポテトがとてもおいしかったです!
時間が20分で少々長めでしたが、この時間にも色々お話しました。

  • アジャイルを業務で実践している方〜?」誰もいなかったり〜
  • 「一生ウォータールでやりたくないから学びに来ているんですよね?」

第2章

テーマ決めて、じっくりディスカッションしました。

  • 自己組織的なチームってどんなチーム?
    • 積極的に考える事ができるメンバでないと難しい
    • 考えを持っていても発言しやすくないとダメ
    • 自己組織化って何?上から指示してもメンバが動かない。チーム内で話合っていって動くようになった
    • 自分が良いと思った事は率先してやる。問題があったら後で謝ればいい
    • 自分が言ったことに責任を持つ
    • アジャイルはそこに顧客が入ってくるので謝ればいいという事にならない。コミットメントが必要。
    • チーム内と対顧客で少し違う
    • 失敗があった時に失敗した人だけを非難するのは間違っている。チーム全体の責任であるはず。そのためにはコミュニケーションが必要
    • 達成感があれば目標に進んでいける
    • リーダに守られる安心感があるといい

ここでメンバ交代。

  • 自己組織的なチームを作るコツは?
    • リーダーが指示するだけではなく、自分で動く事
    • リーダーに守られる安心感
    • ゴールを共有する
    • 全員がリーダーになろう http://d.hatena.ne.jp/Chikirin/20110927
    • ゴールの共有という意味合いで、顧客とチームで対立していく
    • 顧客の夢が広がっていくのをどう止めるのか
    • 担当レイヤーが違う。メール配信ツールを作っていたのにFacebookみたいなのができていた、というのはおかしい
    • それはプロダクトオーナーと調整する事で解決。顧客もチームに巻き込む
    • みんなの意見を、よしこれにする!と決めるのがプロダクトオーナー
    • アジャイルのゴールは一体どこにあるんですか?
    • ゴールは始まりの時点では方向性だと思う。それが最終的に点に収束するのでは?
    • そうではないと思う。その機能を作ったら何が起こるのか?個々の機能を作るのではなく、顧客は最終的にどうなりたいのか?を実現する事ではないのか?

だんだんアジャイルサムライ中盤以降の内容になってきた為、自己組織的なチームについての話へ戻ります。

    • みんなで補い合っていこう、というと相対的に能力が低い人をフォローする為に能力が高い人の負荷があがってしまう
    • 結局、日々の仕事に追われて、教育しながらという事ができない。日々できる人が損をする
    • 自己組織化というのは助け合いではない
    • うまくいかないのはマネージメントが足りていないから。周りのフォローアップができていない。
    • まさにマネージメントができていない。マネージャーがいない。
    • 誰が何をやる、タスクの割り当てというのは誰かがやるの?
    • マネージャーはいないとダメ。どこの現場でもマネージメントは絶対必要
    • その人がどれだけできるか、積極性があるか。どうやって成長していくのか
    • アジャイル関係なく、そもそもチームを作るのであれば、おかしい事をおかしいと言えるような環境が必要。
    • プロジェクトが抱えている目的に向かって進んでいくというのもあるけど、細かいイテレータで回していう考え方が必要
    • ネガティブな事を言うのではなく、改善していく行動をする、それを繰り返していく事によって幸せになれると思う
    • イテレーションの区切りで振り返る時に、ネガティブな意見ではなく改善する行動を起こしていく
    • 顧客をいかに巻き込んでいくか。信頼をどうやって高めるか。信頼貯金をためていく
    • アジャイルを導入する時に、不安のある顧客に正直ベースで話していく
    • お隣さんを巻き込む。例えばgeekの顧客に技術的なデモをしていく

懇親会

半分くらいの方が参加されました。本編3時間に対して、懇親会は4〜5時間やってたような気がします(笑)

トピックスとしては「TDDのお話」「英語しゃべれるようにする為には?」

私が、おお!と思ったのは社内で「++」という方法を採用している方がいらっしゃった事。
バグを見つけたりした場合、バグを出した人に「-(マイナス)」を付けるのではなく「+(プラス)」を付けるんだそうで。
こういう事を考え、また採用されるような会社は素晴らしいですね。

2011-12-17

1人アドベントカレンダー17日目「(第14回)Python mini Hack-a-thon」


(第14回)Python mini Hack-a-thon 2011/12/17(土) 11:00?

https://connpass.com/event/141/

これまた感想が前後してしまいますが、前回の#pyhack(Python mini Hack-a-thon)に引き続き私は2回目の参加となります。

場所はアリエル・ネットワーク株式会社様。

午前

電車遅延等で遅れてくる方が多かった為、11:30頃からしょーまさんから事務通知。全員で自己紹介&本日やる事の発表をしてから黙々と各自の作業開始・・・ではなくまずは雑談が多かったかも。

私は午前中一杯かけてどんなツールを作るのかをまとめてました。

自社で大量に個人宛てにメールを送信するような事をしそうなので、メール送信が楽できるツールを作りたい
最低限の要件

  • 個人宛てのメール送信ができる
  • To: ○○さん のような宛先は引数で指定できるようにする。
  • CUIで操作する
  • メールのテンプレートを準備して、宛先ごとに編集がしやすいようにする。※できたら

流れ

  1. メール送信モジュールの確認
  2. 操作方法考案


お昼

お昼は@t2yさんのお勧めカレー店へご一緒にさせて頂きました。

@junjun_mathさんの質問から形態素解析の話になった。@tk0miyaさんと@t2yさんから色々お話聞けた。

  • N-gram
    • n文字単位で分ける
  • わかち書き
    • 単語で区切る
  • どちらも良い所があるのでハイブリッドの検索システムがある。
  • わかち書きではインデックス(辞書)をメンテナンスするのが大変
  • 東京都』という単語から東の「京都」を必要とする人もいたりするのでどうヒットさせるかを決めるのは難しい
  • 自然言語処理関連の技術でWebをクロールさせて辞書を作成する事は可能だが、どうしても人が判断する必要のある文字列(複合語とか)が出る。
    • 人が判断する所を省く事はできるけど、精度の低い検索エンジンって意味ないよね
    • 検索範囲がインターネットグローバルなのか、会社のファイルサーバで自分が書いた文書なのかで複合語の扱いは変わってくる


午後

皆さん事務関連やら議論やら雑談やらアドベントカレンダーの勧誘やらで色々お話されてましたが、15:30くらいから本格的にモクモクし始めました。
私は成果発表を必ずする!と決めていたので、この間、少しでもマシな発表ができるよう必死に。

そして、17:30から成果発表。

全員分のIDと発表詳細を追い切れなかったのでツイートからコピって箇条書きです。

自分の成果
    • emailモジュールの使い方をググってヒットしたブログからコピーさせてもらいました(汗
    • メール送信まではできましたが、メール本文をテキストから入力という部分がわからず。詰まり中
    • 成果発表の際に、アドバイスを受けて文字化けしながらもメール送信できた!

懇親会

色々楽しいお話を聞けました。ネタ的な物も多かったですが、興味深い話も多かったです。

特に@aodagさんの面接時にする?したい?質問「好きな図形は?」「その理由を30秒で答えて」はスキルについては、それまでに十分わかっているので、この質問でその人のポリシーがわかるという話が面白く感じました。ちなみに@aodagさんは平行四辺形と台形が完璧の一歩手前で好き、との事。奥深い・・・

その他トピックス
  • 高校生が2人参加。自分がこの人たちに追いつける日はいつなのかと考えてしまった
  • @t2yさんから塩昆布を頂いた
  • 今日発売されたばかりのVITAを買ってきてハック始めた方が!
  • まずいと評判のフィンランドのお菓子「SALMIAKKI」を頂きました!外側のチョコレートは普通においしかったです。
  • しょーまさんにsmtplibのSMTPはクラスなのでインスタンス作らないと、と教えて頂いた。

来月の#pyhackも公開されたので、早速登録しました。とにかく少しでもレベルあげないと・・・

2011-12-16

1人アドベントカレンダー16日目「エキスパートPythonプログラミング読書会 第二期 01」


エキスパートPythonプログラミング読書会 第二期 01 2011/11/08 19:00 to 22:00

http://atnd.org/events/21166
場所は目黒のバリストライド株式会社様の会議室。

#pyfesで@tfmagicianさんがエキPy読書会をもう一度やって欲しい!とつぶやかれていたのが開催の発端。
まさか2期があるとは思っていなかったので、@tfmagicianさんを始め講師役を引き受けて頂いている@shimizukawaさん他、大勢の方々に感謝してます!

@shimizukawaさんが1期のまとめを公開されています
http://www.freia.jp/taka/docs/expertpython/reading/index.html

人気が凄くて、参加登録枠が一瞬にして埋まってしまい、だめかと思いましたが補欠繰り上がりで無事参加できました。

当日については下記にまとめて頂いてますので私は所感だけ書きます。

エキスパートPythonプログラミング読書会 第二期 01
https://github.com/tfmagician/expertpython/blob/master/01.rst

所感
  • 初めは空気が重かった
  • @shimizukawaさんご結婚おめでとうございます!
  • Vimmer率が異常。30人中Emacsを使ってる方が4人。それ以外の方はVimを使っているとの事だった。もしかしたらVim以外のエディタを使ってる人はいたのかもしれないけど少数派という事で言い出せなかったのかも。
  • IDEを使ってる人が誰もいない
  • OSは、Windows派5人。Linux派4人。残りMac派。圧倒的すぎ。私はWin派でしたが@shimizukawaさんもWin派だったのでOK
  • 本編終わった後に、そのままビアバッシュに。間あけずに懇親会って凄くいいです
  • という割には、いつものぼっち体質&人見知り気質で顔見知りだった@tk0miyaさんと@hekyouさんとばかり話してた。一応、Python忘年会を挟んでの第2回では改善されましたが。


第1回は環境周りやPython自身についてのお話だったので付いていけないのでは?という心配は取り越し苦労でしたが、既に投稿済みの第2回からレベルが跳ね上がりました。

2011-12-15

1人アドベントカレンダー15日目「Sphinx ハンズオン #1」


Sphinx ハンズオン #1 2011/12/14 19:30 to 21:30

http://atnd.org/events/22421

今回は色々と自業自得な所で身になった所が少ない為、感想少な目です(汗)

知らない方にご説明しますとSphinxとは「reStructuredText(reST)」というマークアップ言語を基本の記法としたドキュメント作成ツールです。
詳しくはこちらへ

http://sphinx-users.jp/

せっかくですので、ソースコードの可読性が高いという話が「たぶん」あがっていたのではないかと思いますので本日はreSTで書きたいと思います。

当日参加できるまでの経緯
====================================

1) 補欠で3番目に登録。間違いなく繰り上がるだろうと予測。

2) 開催日間近になっても繰り上がらない。ちょっとあせる。

3) 直前になって枠が5人分増えたので、繰り上がった!

4) しかし、前日のエキスパートPython読書会の際に、完全に初心者向けで初心者に広めるための勉強会だという事を開催者の方から強調される

5) 当日、実質キャンセルがほとんど無い事に申し訳なく思って、本当に使ったことの無い方の為に自分がキャンセル

6) 未練がましくツイートをしていたら、開催者の方にお情けで来ましょうよ、と誘って頂けた

7) 仕事が終わってダッシュで向かうも、寝過ごして新宿3丁目で降りる。

8) 何を思ったのか、もしかしたらこのまま歩いたほうが早いのかも、と歩き出す

9) 遅刻して到着

10) 遅れてすみません!


Sphinxインストールまで
====================================

1) 普段使い慣れていないubuntuでSphinxを使う!というコンセプトで「インストールから始めます」と申し出た所、インストールから始める初心者グループへ案内して頂いた

2) PCを起動した所、何故か無線LANに繋がらない!

3) インストールから開始グループは、@tk0miyaさんと@shkumagaiさんが講師役でしたが、無線LANに繋がらない程度で邪魔をするわけにも行かず。

4) 時間の空いた時に@tk0miyaさんと見回りにきた@takanoryさんに無線LANパスワードを間違って入力している事を指摘して頂いて、やっとネット接続。この間1時間弱。

5) そこからは、一生懸命課題のプリントアウトされたサンプル議事録を写経。合間に@tk0miyaさんと@shkumagaiさんの説明に耳をそばだてるも、2人とも意外と違う教え方をされていて、どっちも聞きたいとか思ったり。


所感
====================================

* いくつか質問したい事があったのに、なんだかんだで質問する機会を逃した。

* 講師役の方の教え方はやっぱり違うな、という感じ。知識量も違うし、何より説明の仕方が丁寧。見習う必要あり。

* 中途半端に写経とかしないほうがよかった。自分の場合は基本的な事は知っていたので講師役の方の話のみに集中していたほうが有意義だった。

* そのうち、自社でSphinxハンズオンやりたい。人が集まれば・・・

* 次回は、モヒカン部屋で揉まれたい

* 今回の自分はぐだぐだで終わった

* 懇親会と帰りの電車も楽しかった。千葉仲間が増えた!