fc2ブログ

makopi23のブログ

makopi23が日々の生活で感じたことを気ままに綴るブログです。

「エキスパートPythonプログラミング読書会 第二期 10」に参加しました

2012/10/9(火) 「エキスパートPythonプログラミング読書会 第二期 10」に参加してきました。

connpass(告知サイト)
http://connpass.com/event/911/

togetter(ツイートまとめ)
http://togetter.com/li/387248

エキスパートPythonプログラミングエキスパートPythonプログラミング
(2010/05/28)
Tarek Ziade

商品詳細を見る


場所は目黒のバリストライドグループです。
今回は「第8章 コードの管理」が対象範囲でした。

最初に、バージョン管理システム(VCS)のお話が出てきます。
中央集中型システムはCVSやSubversion、分散型システムはGit, Mercurialあたりが有名ですかね。
んで、この本はMercurialに焦点を当ててます。
しかも今日はMercurialのコミッターである藤原克則さん(@flyingfoozy)さんも参加されてました。


私、Mercurialは使ったことなかったので、この本が初でした。
んで、実際に本に沿ってMercurialをUbuntu Linuxにインストールし、動かしてみました。

■1.Mercurialのインストール
まず、UbuntuにMercurialをインストールします。

apt-get install mercurial


■2.リポジトリへファイルをコミット
んで、本に沿って設定を進め、リポジトリを作成します。
次にファイルをリポジトリにコミットしようとすると、以下のエラーが表示されました。

mercurial_commit_fail2.jpg

「ユーザ名が未指定です」とのエラーメッセージを元にググって原因を調べると、どうやら
設定ファイルにユーザ名を記載しておく必要があったようです。
ホームディレクトリに .hgrc というファイルを作成し、以下を追記することでエラーは出なくなりました。

hgrc.png

■3.簡易Webサーバの起動とリポジトリ閲覧
以下のコマンドで、Mercurial自身が持つ簡易Webサーバが起動し、リポジトリをブラウザから閲覧できます。

hg serve

mercurial_web3.jpg

■4.Webサーバ(Apache)の設定
MercurialのCGIスクリプトを実行するため、Webサーバを設定します。
Apacheのインストールが必要になりましたので、以下のコマンドでインストールします。

apt-get install apache2


次に /home/mercurial/atomisator/apache.confファイルを作成します。

apache_conf2.png
↑の黄色い線の部分ですが、本から一部設定を変更しています。hgwebdir.cgiでなく、hgweb.cgiとしました。
hgwebdir.cgiが無かったからです。これで大丈夫みたい。
作成できたら本のとおり、 /etc/apache2/sites-enabled/の下にシンボリックリンクを設定しました。

あと、/home/mercurial/atomisator/hgweb.cgi を以下のように修正しています。configファイルのパス修正。
こうしないと怒られます。
hgweb_cgi.png

あと、本のとおり /home/mercurial/atomisator/hgweb.config を作成します。
hgweb_config.png

■5.MercurialのCGIスクリプトをApache上で実行
これらを設定後、http://localhost/hg にアクセスすると、以下の画面が表示されました。

mercurial_web4.jpg

ちゃんとMercurialのCGIスクリプトがApache上で動作しているようです。
この辺までが、実際に自分で本を写経して、Mercurialを触ってみた内容でした。

以下は、読書会のメモ。



■SubversionからのVCS移行で、bzrにするかhgにするかのツイートまとめ
togetter: svnからの切り替え先にbzrを検討するなど(最終的にはhgになった‥)

■Mercurialの要望とかは、ハッシュタグ #mercurialjp へツイートするとMercurialコミッターさんが拾ってくれるらしい。

■Git vs Mercurial
・GitとMercurialは、用語が対応してないので注意が必要。

・SubversionとMercurialは、用語とかコマンドとかが似ている。
 → SubversionからMercurialへの移行は、Gitへの移行より楽かも?

・Mercurialは、コマンドで簡略なことしかできない。
 → 人にMercurialを教えるのは楽かも。基本的なことしか最初はできないので。

・GitとMercurialでの違いで大きいのは、ブランチ戦略。

・Mercurialは、「標準」と「拡張(エクステンション)」がある。
 - Mercurialは「標準」のままでは使えないようになってる機能がけっこうある。
 - 初心者が触らなくても良いところは、「標準」では提供してない。
 - 「拡張」を有効にすることで使えるようになる機能がある。

・Mercurialは、GUI(TortoiseHg)が使いやすい。

・Gitは、Githubが使えるのが大きい。Githubが使えないと、Gitの価値は軽減する。

・Gitは学ぶのが大変。

・GitはWindowsだと使いにくい。

■Mercurialのコマンドはメッセージが100%日本語化されている。
 set LANGUAGE=ja と設定すると、Mercurialのプロンプトが日本語化される。

■Mercurialのコマンド実行時に -v オプションを付けると詳細なマニュアルが出る。
 (例:hg -v help add)

■8.2節で紹介されている継続的インテグレーションツールのBuildbotは使わないほうが良い。
 セットアップが大変なので。ニーズが発生したときに触るくらいで良い。
 普段は、継続的インテグレーションツールとしてJenkinsを使うのが良い、とのこと。

■清水川さんの「Python Developers Camp 2008」でのテスト自動化に関する発表スライド
Python Autotest pdc2008w from Takayuki Shimizukawa

今日の読書会でチラッと触れられていたスライドです。Buildbotとか、いろいろ出てきてますねー。

■10月にTokyoMercurialという勉強会がある。
TokyoMercurial#6 : http://connpass.com/event/1162/

■PyCon JP 2012で「分散バージョン管理システムの組織化」というセッションがあった。
 http://2012.pycon.jp/program/sessions.html#session-15-1430-room230-ja
 (セッションの動画とスライドが置いてあります)

■継続的インテグレーションは「Travis CI」が便利らしい。
Travis CIってのを始めて知りました。
 どうやらGitHubのリポジトリをビルドして結果を通知してくれるWebサービスのようです。
 Travis CI: https://travis-ci.org/





懇親会&LT

読書会終了後は、その場で懇親会です。この日はお寿司とピザでしたー。
あと、希望者のLTタイムがありました。どのLTも面白くて興味深かったです。

LT1 @Alice1017さんの「蜘蛛の巣から抜け出すには?」
蜘蛛の巣から抜け出すには? from Hayato Tominaga


LT2 @hirokikyさんの「新卒から半年で会社辞めた」
ldjjhu2.jpg
(写真は @takanory さんのツイートより)

LT3 @tfmagicianさんの「Scrapyネタ」
・ScrapyはPython製のオープンソース・ソフトウェアらしく、Webサービスから必要な情報を抜き出したり、自動操作をしたりするスクレイピングと呼ばれる技術らしい。
 参考: http://www.moongift.jp/2009/10/scrapy/
・Scrapyの公式サイト: http://scrapy.org/
・Rubyだと、Nokogiriとかが該当するみたい。 http://route477.net/rubyscraping/

★感想:
今回はPython自体というよりもバージョン管理しシステム、特にMercurialメインの会でした。
最近は自分もSubversionとかJenkinsとかを使ってるし、Gitとかにも興味あったので、Mercurialの話は
とても興味深かったです。
GitとMercurialの比較の話とかもいろいろ聞けたし、Mercurialコミッター藤原克則さん(@flyingfoozy)さんの生の話とかはとても興味深かったです。

運営や発表の皆さん、ありがとうございました。次回も楽しみにしてます。

-->