1.2.5が、本日、クリスマスイブに合わせてリリースされます!いくつかの不具合修正に加え、「痒いところに手が届く」よう、操作性の改善などを加えています。詳しくはリリースノートを確認ください。「ペア・プログラミング」と「集団的な所有権」こんにちは、天野勝です。今回から読まれる方もいらっしゃると思いますので、簡単にこの連載の概要を説明します。Miller(*1)の提案しているXPのプラクティス(*2)を、筆者の解釈にもとづき皆様に紹介していくというものです。■感謝されたい人から「ありがとう」って言われるとうれしくなりますよね。ほとんどの人は人から感謝されて迷惑ということは無いでしょう。人のために働いて、その働きに対して感謝される。「すみませーん(店員を呼ぶ)」という光景を良く見ませんか。散歩に連れ出しているうちに、みるみる元気になったというのもよく聞く話ですね。「ペア・プログラミング」というプラクティスでは、2人の開発者が1台のマシンの前に座り、交代しながらプログラミングをすることを決めています。約から逸脱するのを抑制する効果がある、といった性悪説的な考えの利点もありますが、コードを書いているドライバーがつまずいているときに、隣に座っているナビゲータが問題解決に積極的に関わり、仕様の不明な点を聞きにいったり、使えそうなAPIを調べるといった性善説的な考えの利点をぜひ強調したいです。■環境でコードの構造が変る良いプログラムコードというと、皆さんはどのようなコードを思い浮かべるでしょうか。パフォーマンスも大事でしょうが、私は保守性の高いコードが良いコードだと思っています。保守性の高いコードとはどのようなコードでしょうか。条件として、センスの良い名前は必須ですが、シンプルで明確な責務を持ったクラスから構成され、メソッドも数行程度の大きさというのも条件のひとつですよね。粒度が細かいほうが良いコードなのです(*3)。「集団的な所有権」というプラクティスでは、プログラムコードなどの成果物の責任者をチーム全員とし、必要に応じて誰でもが成果物を修正することができます。時に修正することが増えてしまいます。プログラムの粒度が粗いと、誰かがコードを修正していて自分達の作業ができないという待ち状態になる確率が上がってしまいます。度が細かくする必要がでてきます。集団的な所有権を実施するにはどうしても良いコードを書かなくてはならなくなってしまいます。コードを共有するためにバージョン管理ツールを良く使いますが、悲観的ロックか、楽観的ロックかでもコードに影響がでますね。次回は、いよいよ最終回、今回と同じく開発者のプラクティスの「継続的なインテグレーション」と「YAGNI」について説明いたします。この連載に対するご意見お待ちしています。細かすぎるのも問題ですが。______________________________________________________________________この記事への評価にご協力をお願いします。URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用のブラウザに表示されれば投票完了です。[2]■はじめにこの記事は、初級プログラマである私がみなさんと一緒にC#を使ってオブジェクト指向(OO)の基礎を気軽に勉強していこう、という内容です。frameworkを使ったC#開発環境の構築と簡単な出力プログラムについて行いました。・プログラム作成を通じてクラスとインスタンスを大筋で理解です。■内容まずはあまり考えずに、ばちばちとキーボードをたたいて、コンパイル、実行してみましょう。}}----------------------------------------------------------------------●実行結果----------------------------------------------------------------------一行目出力結果:えいちゃん二行目出力結果:ねねちゃん三行目出力結果:せばすちゃん----------------------------------------------------------------------コンパイル・実行できましたか?実行してから、進んでくださいね。●プログラムの説明オブジェクト指向の考え方の説明の本の中で、「クラス」と「インスタンス」の関係を(実世界の)「たいやきの型」と「(実際に食べられる)たいやき」の関係で説明されることがあります(クッキーのほうが多いかな?)。「たいやきの型」に材料を入れて「つくる(焼く)」ことで「たいやき」ができて、また「たいやきの型」が「1つ」あれば、「たいやき」を「複数」つくることができる、この関係がクラス(たいやきの型)とインスタンス(たいやき)の関係なんだよ、って感じに。この「たいやきの型」と「たいやき」の関係が、今回のプログラムのどこに対応するか確認してみたいと思います。「たいやきの型」(クラス)に対応するのが「stringクラス」になりそうです。(ほかにも上げられますが今回はstringに着目します。"せばすちゃん";が対応しそうです。私がソースコードを上のようにキーボード叩いても”えいちゃん”インスタンスはつくられそうにありません。ソースコードをコンパイルしても"ねね"はできないみたいです。行されて初めて、メモリ内に"せばすちゃん"が生成されそうです。最後の「たいやき」(インスタンス)はメモリ内の"えいちゃん"、"ねね"、"せばすちゃん"が対応しそうです。メモリ内の"せばすちゃん"等のように対応しそうです。■まとめ今回は、クラスとインスタンスについてstringクラスを使って実際にプログラムを作成・実行しました。クラスとインスタンスの関係を実世界のたいやきと今回のstringを使ったプログラムで対応づけを行い、勉強してみました。「クラスとは」、「インスタンスとは」の用語そのものの説明は行いませんでした。今回の対応づけでクラスとインスタンスは大筋で理解できたかなと思います。次回は、今回のようにstringクラスの既存クラスを使ってプログラムするのではなく、新規にクラスを自分でつくるプログラムを作成し、クラスについてもう少し勉強したいと思います。それでは、さー・よ・お・な・ら(IENAGA)______________________________________________________________________この記事への評価にご協力をお願いします。URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用のブラウザに表示されれば投票完了です。┗編集後記(拡大版)今年は「ソフトウェアの原則シリーズ」を書かせて頂きました。言葉に表すことの難しい「設計センス」を体系化したいと考えています。来年も期待していてください。よる11原則をコレクションしてデザインしてみました。カレンダーはまだ在庫があるので、熱烈な要望があれば若干数郵送できるかも。(平鍋)日頃より、オブジェクト倶楽部の活動にご参加、ご協力頂きまして、誠に有難うございました。今年は、皆様のご要望にお答えし、このメルマガを始め、イベントなどを行ってまいりました。来年も皆様にとって有意義な活動を行っていく予定です。ご支援よろしくお願いします。(事務局長)こんにちは、天野勝です。「Wikiでウッキッキ」「XP実践家への道」と2つの不定期ですが連載記事を書かせていただきました。思い知らされた一年でした。来年は、コミュニケーションスキルに関する連載をしてみたいと考えています。いうの読みたい人っていますか?(天野勝)ienagaです。只今、C#で学ぼうオブジェクト指向入門を連載させていただいています。連載方針は、「力を抜いて気軽にオブジェクト指向を学んじゃおう」です。これからも、どうぞよろしくお願いします。オブジェクト指向がみなさんの幸せを呼びますようにではでは(ienaga)梅田です。リファクタリングの連載がしばらく続きます。有用な知識をなるべくわかりやすく伝えることと、文章として面白いものを書くことを目標にがんばります。フィードバックも含めて、今後ともよろしくお願いします。(梅田)「Judeで始めるUML」を書かせていただきました。皆さん「今日のUMLクイズ」やっていただけたでしょうか?今後は、UMLやOO設計、ツール関連の小粒な記事を書いていければと思っています。これを取り上げて欲しいという項目があれば、ぜひメールいただければと思います。(岡村)ko-chanです。世界中の数多くあるオープンソースの中から面白そう使えそうなものを探し出して記事にしています。それと、今後は、TDDやFITなどテストに関する記事も書いていきたいと思っています。皆さんのテストがいままでよりも10倍楽しくなりますよう努力したいと思います。今後ともよろしくお願いします。(ko-chan)たかが編集、されど編集。何かしらの想いを伝えようという気持ちは、ライターには負けじと頑張ってきました。読者のみなさんの想いと、ライターの想いををうまくまとめて、より良いモノを作っていきます。(編集・さとみ)配信を開始した頃は、週刊なんて本当にできるのかと不安でいっぱいでしたが、ライター陣の協力と、何より彼らにモチベーションを与えてくれる読者の皆さまのおかげでここまでこれました。