差分
'''SL#ペアプログラミング'''(えすえるしゃーぷ)とは、([[GPU英語]]で実行される:pair programming)とは、大雑把にいうと[[プログラマブルシェーダー職業プログラマー]]を、超高級言語であるを[[C Sharp|C#冗長化]]で書けてしまうという夢のような[[オープンソース]]の[[フレームワーク]]である。[[ライセンス]]は[[MITライセンス]]となっている。することである。
== 概要 ==
== 関連ライブラリ =作業効率の向上 ===2人組だと1人で作業するときとは流れが変わる。1人がドライバーとなり、1人がナビゲーターとなるため、次に何をすべきかを考え込むといったことが少なくなる。 === 外乱要因に対する耐性 ===2人組だと「[[Excel]]の使い方がわからない」などといった、「助けて[[パソコンの大先生]]!」的な、いわゆる[[FAQ]]な外乱要因に対しても耐性を示し、他の人が割り込んできても、一方が応対し、もう一方が作業を進められる。 === 多数の開発者による設計 ===ペアを頻繁に入れ替えれば、複数の人間が1つの機能の開発に関わることになる。これにより、よりよい[[設計]]が生み出され、たとえばあるペアが解決できない問題で作業が止まってしまっても、別のペアでは解決できることもある。 === 勤労意欲の向上 ===ペアプログラミングを行うことでチームの各人が互いをよりよく知ることができ、結束力を生み出しやすい。またペアプログラミングの方が1人で作業するよりも楽しいと感じる開発者もいる。これは友達の少ない[[プログラマー]]の[[コミュ力]]を向上させることにもつながることであろう。 === 集団的なコード所有権 ===プロジェクトの全員がペアプログラミングを行い、頻繁にペアを組みかえる場合、そのコード全体について全員がそれなりの知識を共有することになる。 === 教育的側面 ===初心者であっても固有の知識(プログラミングテクニックなど)を持っているものである。ペアプログラミングでは、余計な手間をかけずにそのような知識をチーム全体で共有できる。 == 欠点 =====コミュニケーション障害者===経験を積んだ開発者によっては、初心者とのペアプログラミングを一種の退屈な指導と捉える場合もある。一部の技術者は1人で作業することを好み、ペアでの作業を面倒と感じる場合もある。これは上級者側の[[コミュ力]]不足、[[指導力]]不足であるともいえ、そのような人物は[[RAプログラム]]の対象としても差し支えない。 また、ペアの組み合わせによっては双方が「よくわからんけどあいつはしっかりやるし大丈夫だろう」の考えの元に行動してしまい、結果として人件費を2倍かけたのにもかかわらず逆にチェックが杜撰になることもあるので注意が必要である。プロジェクトリーダーや人事はお互いが「あいつで大丈夫か」と思えるような人材同士(かつ険悪な関係にないもの)をペアにする必要があり、リーダーや人事の高い能力が求められる。 ===人件費===小規模な[[ブラック企業]]では[[ワンオペ]]による[[プログラミング]]が広く行われており、そのような環境下ではペアプログラミング以前に[[プログラマー]]1人のみですべてを行い、[[プロジェクトマネージャー]]や[[システムエンジニア]]などという役職も存在しない。また、その前提で[[チキンレース]]の末に[[不当廉売]]のような価格が横行しており、[[安かろう悪かろう]]を繰り返し顧客からの信頼も薄いため、正常な価格への値上げも難しい状況に陥っている。このような[[ブラック企業]]では[[人件費]]を捻出することが難しくペアプログラミングは夢のまた夢である。 ====RAIDプログラミング====ただこの状態は[[大企業病気]]の真逆の[[弱小企業病]](なお私が勝手に名付けた名称で一般的なものではない)であるといえ、顧客からの信頼性の面や企業としての収益性の面からみても放置すればその企業は確実に経営破綻する。それを回避するためにも徐々にでも正常な状態にもっていく必要があるといえる。 いわゆる世間一般でいわれるペアプログラミングは[[ハードディスク]]でいえば[[RAID1]]構成である。確かに目先の[[コストパフォーマンス]]は悪い。そこでまずは[[RAID5]]のような[[RAIDプログラミング]](なお私が勝手に名付けた名称で一般的なものではない)からはじめてみてはいかがだろうか。 [[プログラマー]]は最低3名構成で、うち1名はペアプログラミング的に巡回を担当する。それを日替わりなどで行うのである。万が一、不慮の事故や病気などで[[プログラマー]]が1名ほど欠落しても、一時的にペアプログラミング状態は停止することになるが、巡回するプログラマーを通常のプログラマーとして補欠できるため[[デスマーチ]]に陥る確率は大幅に低減できる。 そして企業として少し余裕が出てきたならば巡回するプログラマーを徐々に増やすなどして[[RAID6]]や[[RAID50]]に近い形態に移行し、最終的には[[RAID1]]、すなわち本来のペアプログラミングの体制にもっていけばよい。 SL#は下記のライブラリを使用している。長くなりそうなので以下に検証ページを作る。* [[Mono.CecilRAIDプログラミング]]* == 現実 ==2人組であれば開発速度は落ちないどころか向上すると言われているが、目下の[[人件費]]が2倍になるという理由から、いわゆる[[IT土方]]が集う、いわゆる[[ICSharpCode.NRefactoryブラック企業]]ではまず行われていない。そもそもそんな企業の人事やプロジェクトリーダーは能力不足によりまともに機能するペアを社内で構成することすらできず、ますますブラック化を加速させているのが実情と思われる。 * [[ICSharpCode.Decompilerシステム]]を発注する顧客の場合は、「本当に完成品を納品してくれそうか」を測る指標として、[[見積]]段階でペアプログラミングを導入しているかを尋ねてみると良い。尋ねると良いどころか、必ず確認しておかなければ危険な点であるとう人もいる。
== 関連項目 ==
* [[シェーディング言語ペアプログラミング合コン]]* [[GPUアジャイル]]* [[GPGPUエクストリーム・プログラミング]]
== 外部リンク 参考文献 ==* https://github.com/IgniteInteractiveStudio/SLSharp{{reflist}}
{{stub}}