zillionプロジェクト開発ブログ soliloquy 忍者ブログ

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

最近、プロジェクト管理ネタをTwitterでつぶやきまくっていたのも、友人が善意で貸してくれたサーバーをプロジェクト管理ツール用のサーバーに使用かと思ってたからなんだ。

とりあえず、以下の3つのツールが使われてるんだよ。

  • Jenkins
  • Redmine
  • Subversion
ほとんどは、メンバーが使用するだけだけど、募集のページや、何を作っているのかもっと詳しく書いてあるページもあるし、進捗情報がわかるよ。

是非、見て、興味を持ってくれたらうれしいな。
Redmine Soliloquy Development Team

なお、Jenkinsには、テスト用のものがあがっているだけなので、動作しないので、そこのところ気をつけてね。
ダウンロードしても何も無いから。

拍手[0回]

PR

Twitterでフォロワーをたどって、プログラミングをしている中高生のブログやサイトを見ると、ふと重大な疑問が浮かびます。
特に、Twitterでリンクされているのが、無駄にFlashやSilverlightで洗練されたサイトではあるものの、情報を公開するだけ。
つまり、プロジェクトが存在しているということを知らすだけのサイトで、実際に活動しているのかは謎・・・
もちろん、その中にはしっかりと活動しているグループもあるのでしょうが、せっかくの洗練されたページも効果が伴わなければ、ただの飾りに過ぎません。(もっとも、サイトをデザインするプロジェクトなら別ですが)
特に、1人で作業せず、複数名でプログラムするというグループなのに、VCS(Version Control System:バージョン管理システム)を使わないで、どのように皆で作業しているのかと疑問に思います。
相当クローズドソースでやりたいなら別ですが、一般的なプログラミンググループであれば、ソースを公開したとき損の伴わないならば、ほぼ確実にプロジェクトのVCSのリンクがサイトのトップにあって、現在の開発状況がわかるものです。採用していないプロジェクトチームは、ただのにわかプロジェクトチームです。
進展しないプロジェクトは、チームのやる気を奪い、周りからの関心をなくします。(コレに関しては今までの私たちのチームですが・・・)

現在、僕のプロジェクトではSubversion(通称:SVN)というVCSを使用していて、GitというVCSに移行しようとしている最中なのです。

さて、今日の記事から、数回の記事にわたって、(いつもいつも頓挫しているけど)、プロジェクトを立ち上げる上で、管理できるソフトなどの紹介をしていきたいと思います。

1,そもそも、VCSってどんなものなのか?

さっきから、VCS,VCSって言っているが、そもそもVCSって何なのかという話をします。
VCSとは、簡単に言えば、インターネット上のフォルダ(このフォルダをレポジトリって言うんだよ!)をみんなで編集できるようにするシステムです。

(問題)プロジェクトを主催して、このプロジェクトにはプログラマーが3名います。
さて、skypeで連絡を取っていますが、みんなで1つのものを作りたい。あなたはどうするでしょうか?

この解決手段で、おそらく一番いいと思うのがVCSの導入です。

skypeで毎回ファイルを送りあう。これは不便ですね。
同じファイルを編集した場合、どちらのをとるか考えるでしょうし、あわせてビルドできるかっていうのも、怖いですね。

(問題2)さて、あなたのプロジェクトにはデザイナーが2名います。
skypeでプログラマーを混ぜた会議をしていますが、当然プログラム用語はわからないので、進んでいるのかわかりません。これでは、デザイナーのやる気が落ちます。どうすべきでしょうか?

進展度合いを、共有する。
これは、メンバーのそれぞれのやる気の維持に非常に重要ですが、チャットでの交流では限界があります。やはり、成果を見てこそ、納得できるのです。

そして、やはり、これも解決できるのがVCSです。なお、おそらくあとの記事になると思われますが、この問題は、CI(継続的インテグレーション)の導入によってより改善されます。

今回は、このVCSについてみていきます。

さて、VCSは、先ほど「ネットワーク上にフォルダを作り、みんなで編集しあうシステムだ」という説明をしました。
細かく見ていくと、以下のようになります。

●プログラムのソースファイルなどをメンバーと共有する。
●プログラムのソースファイルの書き込む権限、削除権限、閲覧権限など細かく指定できる。
●同じファイルが競合した場合、上書きしないで、マージをすることができる(一般的にマージはVCSではなくマージソフトが行いますが、競合を見つけるのはVCSであり、だいたいのVCSにはマージソフトがついています。)
●複数のバージョンを保持できる。(バグがあったら前のバージョンに戻せる!)
●誰が編集したかがわかる(だれが編集してバグになったのかがわかる)
●誰がどのくらいファイルを編集しているかがわかる。(自分の仕事率、周りの仕事率を把握することで、その意欲が向上する。)

つまりは「みんなで効率よく作業ができて、編集した履歴の残るワークスペースなんだね!」

2,VCSにはどんな種類があるの?

※用語を抑えよう(Gitだと用語が結構異なるようですが、SVN用の用語でだいたい統一して書きます。詳しいことは調べてね。)
・作業コピー ・・・・VCSには、編集用のファイルがあるけど、それはそのままは編集しないよ。ローカルに、ダウンロードして編集するんだ。
・コミット ・・・・VCSのサーバー側に、自分の作業コピーに加えた編集をあげることだよ。要するに、アップロードだね。
・更新 ・・・・VCSのサーバー上にあるレポジトリから作業コピーを持ってくることだよ。他の人が編集した内容を踏まえたうえで編集ができるね!
・マージ ・・・もし、他の人がファイルを編集して競合(コンフリクトって言うよ!)してしまったら(例えば、A君はあるファイルに[value=10]って書いたけど、B君はそのファイルに[value=20]って書いたら、VCSはどっちが正しいかわからなくなってしまうよね。)マージをするんだ。
つまり、正しいと思うほうを選択するって言う作業。マージソフトが一部は自動でやってくれるよ。



主に、VCSを大別すると2つの種類があります。

集中管理型VCS
昔から使われてきたVCSだといえます。自分でサーバーを立てなくても、「Google Code」や「Source Forge」など、さまざまなサービスを借りることで利用できます。(もちろん、自分で立てたほうがいいです。)
だんだんと、分散管理型のほうが人気が出ている気がしますし、便利ですが、集中管理型もまだまだ現役ですし、いいところもあります。
特徴は、サーバーにひとつだけレポジトリがあることです。
●メリット
・1つしかレポジトリが無いから、今編集しているバージョンがわかりやすい!
・サーバーを立てる場合、管理が楽(個人的な解釈)
・分散管理型と比べて、どこのレポジトリにあげたらいいのかわかりやすい。
●デメリット
・サーバーにしかレポジトリが無いから、編集中のファイルを前のバージョンに戻すっていうのは、ムリ。
・分散型と比べ更新頻度を高くなるので、更新に相対的に時間がかかりやすい。

集中管理型VCSの例
Subversion(フリー)
・CVS(フリー,古いかな)
Team Foundation Server(高いよぉ・・・)

分散管理型VCS
最近人気!集中管理型より、サーバーのセットアップが面倒な感じがする。「GitHub」など、一部(結構あるかもしれないけど・・)のサービスを借りて利用可能。(やっぱり自分で立てるのがオススメ)
特徴は、レポジトリがローカルにもあること。つまり、編集していってまずはローカルにコミットして、ある程度まとまったらサーバーにコミットするわけです。
つまり、サーバー(1)+ユーザーの数だけレポジトリがあるってことなんだ。

●メリット
・ローカルでバグが出ても、バージョンが戻せる(これすごい便利!)
・なんか最近人気でコミュニティが盛んだからいろんな資料がある。
・集中管理型と比べて、取得とかが早い気がする。

●デメリット
・レポジトリがたくさんできてしまうので、どこにコミットすればいいのかわからなくなりやすい。
・サーバー立てるのが難しく感じた。

分散管理型VCSの例
Git(フリー、日本語文字化けする。対策あり。フリー)
Mercurial(日本語系が文字化けするかも?フリー)
Bazzer(日本語OKっぽい、フリー。新しいのかあまり見かけない?)

少し古いけど、SVNと分散管理型VCSの比較→here!

んで、結局どれがいいの?
結論「僕にもわからない。集中型VCSでも、分散型VCSでもそれぞれに利点があるよ。やっぱり使用者の多そうな、SVNかGitが有力。」

3,早速VCSサーバーを立ててみよう


3-1,プロジェクトホスティングサービスを利用する

自宅でサーバー立てるのは面倒だ。多少制限されたり、遅かったりしても問題ないやって方。プロジェクトホスティングサービスを利用すれば楽にVCSが利用できます。

有力なサービスはこんな感じ

●Subversion
Google Code(僕たちのグループが今使っているものだよ。ただし、近いうちに閉鎖して、サーバー立ててGitにするんだ。一部は日本語になるが、ほとんど英語)
Source Forge(前にやったことあるんだけど、SVNの設定がうまくいかなくてコミットできなかったって今年か覚えていない・・・。そして登録から作成まで少し時間がかかる。日本語ページ)

●Git
GitHub(Gitだったらコレが有力。英語)

大体は、登録するだけですぐサーバーはたつよ。(Source Forge以外)
自宅サーバーだといろいろいじれるんだけど、ソレが無い分早いね。5分で作れちゃう。


3-2、いやいや、サーバー立てることにはロマンがある。って人。自宅サーバーで簡易的にVCSサーバーを立てる。

3-2-a,SVN編
やっぱり、自分で立てるからこそ意味がある!って人用。
サーバーを立てるのには結構知識が必要かもよ。でも、絶対に意義があること。
使用するOSとか・・・Windows系
Linuxの方がこういうのは得意なんだろうからいろいろできるんだろうけど、僕は良くわからないので、WIndowsでやるよ。

①、必要なものをダウンロードしよう。
Visual SVN Server(右上のDownLoadから、管理がしやすいパッケージなので、Windowsの場合はコレが便利)

②、IP固定をしよう。
グローバルIPアドレスから、パソコンには接続ができるが、ルーターが間に入っていると、パソコンにはローカルIPアドレスが割り当てられ、グローバルIPアドレスではアクセスできないんだ。
さて、これからポートマッピングといって特定のポート(データの玄関のようなもの)へのアクセスは特定のパソコンに橋渡ししてねっていう設定をしないといけないんだ。
だけど、普通はこのローカルアドレス、毎回変わっちゃうんだ。だから、最初に、このパソコンにはこのアドレスを支給してね。ってやっておく必要があるんだよ。
ココを参考にやってね。

③、①でダウンロードしたソフトをインストールしよう。
ポート番号が聞かれるので、適当に入力して覚えておく。他にサーバーを動かしていない限り初期設定のままでよい。

④、ポートマッピングをする。
③で入力したポートに対してポートマッピングをしよう。
ココを参考にしてね。(中段)

⑤、設定をしよう
スタートメニューなどにVisual SVN Serverって項目があるのでソレをクリックしてサーバー管理ソフトを起動しよう。
⑤-1 レポジトリを作成するぞ!
サーバーの準備はできた、ではレポジトリを作成しよう。
左のツリーからSVNを選んで右クリックしてCreateを選ぶぞ。
好きなレポジトリ名を入力しよう。(だいたいはプロジェクト名)

⑤-2 ユーザーを設定するぞ!
アクセスしてほしいユーザーしてほしく無いユーザーがいるだろう。
そこで、Userのところから、Add Userを選んで、ユーザーを作成だ。
IDとパスワードを設定しよう。

⑤-3 グループで役職ごとに管理だ!
グループからAddGroupを選べば、役職に分けられるぞ、役職に分ければ、グループ単位で権限が与えられるから管理がらくだ。
つまり、プログラマーは書き込めるし、読めるけど、デザイナーは読めるけど書き込めないなんて設定もできる。

⑤-4 権限を設定しよう
造ったレポジトリのフォルダを右クリックしてPropertiesから、ユーザーの権限が編集できるぞ。
デフォルトでは、All Userに Write/Readの権限が与えられているので、Readに変更しよう。
Addから、グループもしくはユーザーを選択して好きな権限を与えよう。これで、設定は完了だ。

⑥確かめてみる
ブラウザのアドレス欄に「http://localhost:指定したポート番号/svn/指定したレポジトリの名前」(httpsという設定にしたのなら、https://~~になる)とすると、アクセスできるぞ。作ったユーザーでログインしよう。
  そして、やったね!サーバー立てられたよ!だいたい30分ぐらいかかるかな?
3-2-b,Git編
Git編はプロジェクトのVCS移してからその経験を基に書くのでお待ちを

4,実際に使ってみる。
実際に使う時は、クライアントソフトを利用することが多いだろう。コマンドラインからの利用では耐えられないからだ。
幸いにもSVNにはすごく使いやすいクライアントソフト(Tourtoise SVNがあるので、ソレを使うと良い。)
Gitにも
Tourtoise Gitがあったと思うが、日本語で使用するには、調整が必要なようだ。
Tourtoise SVN
Tourtoise Git 

クライアントの使用方法については、以下のサイトを参考にすると良い。
ココ(少し古い)

いかがだっただろうか。確かにサーバーが必要ではあるが、その効果は絶大だ。
少なくとも、決まったファイルのやり取りのシステムを持っていないチームであるならば採用すべき管理方法では無いだろうか。

次回は、ITS(Issure Tracking System:課題管理システム)の解説をしよう。

拍手[1回]

まだまだ先ではありますが予選があるわけですが、前回はケアレスミスで20点落とすというありえないミスをしてしまったので気を付けたいと思います。
1,2,3は、普通に解けるでしょうがやはり、勝負は4です。4,5,6をいかに1問でもとれるかがかなめとなります。
前年度の4の過去問を解いていたのですが、入力2まではどうにかなっても処理速度的にほかが現実的な速度で解けないということで、コードを全部見直す必要がありました。
アルゴリズムを考えるだけでなく、速度的な問題も考えるとなると、やはり難しいです。

拍手[0回]

 メンバーも全然更新していないようですね。
ところで、グループ内で、いつも僕が仕事を割り振っていたのですが、最近、タスク管理ようの役職専門の人を設けました。

やっぱりプログラムもしながら他の人に仕事を頼むのは大変ですし。
自分の頭の中ではわかっていて他人に頼む際に誤差が生じます、本来それは何度も何度も念密に練り合してなくすわけですが、そんなんだったら自分でやれば早いって思ってしまって仕事をメンバーに渡さないってことが多かったわけです。

それに僕は来年受験生で、今年いっぱいまでしか活動できないので、一時的に引き継ぐつもりです。
ただ、プログラマーがほとんど、来年受験生なんです。プロジェクトの仕事の管理者が居てもプログラマーがほとんどいなくなったら、活動できなくなるんじゃないかと懸念しています。

どなたか、C#できる方、参加しませんでしょうか?
参加希望はzeoniccharkyasbal@yahoo.co.jpまで


P.S
スクリーンショットでも公開するって言ってましたが、いろいろ配置がくずれるバグが発生してたりしているので、次回更新時には必ず・・・

拍手[4回]

火曜日から金曜日からです・・・

ブログ更新していないと思ったので、ちょっと近況報告のために更新しに来ました。

とりあえず、試験終わったらSSでも公開していきますので、それまで更新はほかの人がやってくれると思います。
クラゲル(メンバーの一人)とか、クラゲルとか、クラゲルとか 

拍手[3回]

◎ カウンター
◎ カレンダー
06 2017/07 08
S M T W T F S
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
◎ 最新CM
[10/24 名無しの権兵衛]
[08/30 名無しの権兵衛]
[08/14 no name no future]
[08/05 ゲームサークルEaSt]
[07/28 リオウ]
◎ プロフィール
HN:
kyasbal
年齢:
22
性別:
男性
誕生日:
1994/09/22
職業:
人間
趣味:
趣味ねぇ~~う~ん・・・
◎ ブログ内検索
◎ バーコード
◎ アクセス解析
◎ フリーエリア
◎ フリーエリア
Script: Ninja Blog 
Design by: タイムカプセル
忍者ブログ 
[PR]