2009年4 月1日  |  Written by matsumoto  |  under Perl Yahoo!ブックマークに登録    はてなブックマーク - [perl] Date::Pcalcと うるう年の処理

うるう年と"2月29日"の処理は非常に面倒です。
この面倒な部分の処理の時、よく使われるのが

$year % 4 == 0

なのですが、1900年などは実はうるう年ではなく、上記の条件では処理できない年があったりもします。

perlではDateTime、Time::Piece、Date::Simpleなど各種モジュールがあるのですが、
root(管理者権限)で操作できない環境ではperlモジュールをインストールできないため
自分の作業可能なディレクトリに設置して操作できるperlモジュールを利用します。

モジュールのインストールについてはこちら

※Date::PcalcはPurePerl(C言語などで構成されたXSモジュールに依存していない形態)なので
レンタルサーバなど、制限がある環境でも動作します。

このモジュールを利用したプログラムのサンプルコードが以下になります。

2009年4 月4日  |  Written by matsumoto  |  under JavaScript, jQuery Yahoo!ブックマークに登録    はてなブックマーク - [JavaScript] jQueryでプルダウンを動的に変更する

jQueryでラジオボタンを押した際に、動的にプルダウンが変わるというコードのサンプルです。

jQueryでプルダウンを動的に変更(サンプル)

フォームのCMSを開発する際によくあるケースですが、
選択されている親カテゴリによって、子カテゴリのプルダウンの項目を動的に変更したいときがあります。

こういう場合、jQueryでは以下のように書けます。

$("#team input[type=radio]").click(function(){
  var $pulldown = $("#pulldown");
  $pulldown.empty();
  $option_entries = new Array();
  $.each(team[this.id],function(i){
    $option_entries.push('<option value="' + i + '">' + this + '</option>');
  });
  $pulldown.append($option_entries.join());
});

本来は Optionオブジェクトを追加するような形で

$pulldown.append(new Option(html,value) );

という形が分かりやすいのですが、IE上では動作しません。

ですので、一旦 optionのHTMLを配列として受け取り
それを1つの文字列に束ねてプルダウンにappendする形を取っています。

詳しくはtech-wikiにまとめています、ご覧下さい。

関連リンク

2009年4 月5日  |  Written by matsumoto  |  under JavaScript, jQuery Yahoo!ブックマークに登録    はてなブックマーク - [JavaScript] jQueryでフォームの2重送信を防ぐ

掲示板やお問い合わせなど、フォームを使ったWebアプリケーションを作る機会は多々あるかと思います。

このようなWebアプリケーションでフォームの2重送信を防ぎたいというケースが多々ありまして、
jQueryで利用できるプラグインにしました。

使い方

使い方は簡単です。
以下のようにFormを指定して、プラグインを実行すれば submitボタンの2重送信を防ぐことができるようになります。

$("form").disableDoubleSubmit(1000);

サンプルはこちら

詳しくはjQueryでsubmit(送信)ボタンの2度押しを禁止する(ありんく tech-wiki)をご覧下さい。

2009年4 月5日  |  Written by matsumoto  |  under サーバー Yahoo!ブックマークに登録    はてなブックマーク - 自作PCでサーバを組むためのパーツ選び

弊社では、自作パソコンのパーツを組み立て、開発・実験用のサーバを立てています。

全てのパーツを個別に買っているのですが、この際のTIPSを少しご紹介します。

※下記の情報は2009.04現在のもので、変動性のある情報です。

構成する際のポリシー

現在はコストパフォーマンスの点でIntel系が望ましいと判断しているため、以下Intel系を中心にして書いていきます。

CPU

まずはIntel系、AMD系に分かれると思います。

現在Intel系、AMD系のプラットフォームによる障壁は事実上存在せず、どちらも利用しています。

設置場所

オフィス内に設置するため、静音性も重視します。iDC用のサーバのような音が大きいものは避けます。

※PCパーツの組み合わせはトレンドが変化しやすいため、2009.04現在での動向を踏まえたケースになります。

マザーボード

フォームファクタはほぼ全てのケースでMicro-ATXを利用し、Intel純正のマザーボードを選んでいます。

また、DIMMスロットは4本が必須です。

最近ではCore2Duoを利用する場合、Intel DG33BUC(Intel G33+ICH9DH)、Core2Quadを利用する場合DG35ECをよく利用しています。

マザーボードのNICについて

マザーボード自体の性能はASUS、GIGABYTE、MSIなど主要メーカーでも全く変わらないのですが、NIC(LANなど)のインターフェースでハマりました。

IntelはIntel純正のNICを使っており、他メーカーはおおよそLeadTekのNICを使っています。
(Intelよりチップセット自体の料金が低い=コストパフォーマンスが良いからだと思います。)

LeadTekのNICのドライバはLinuxではデフォルトでは対応しておらず、別途カーネルに組み込む必要があります。
また、FreeBSD7でのインストール時では、認識はするのですが時間が経つにつれてスループットが落ち、最終的に「NICの認識はするが、スループットが0」という悩ましい状態になりました。

Windowsではドライバの対応がされているのですが、Linux/FreeBSDでは微妙な状態にあります。
ですので、初期インストール時のトラブルや工数を最小限にするためにIntelの純正マザーを利用しています。

他チップセットについて

x33、x35チップ系はメモリの上限も8Gまであり、余力をもった設計ができます。

x31系はメモリの上限が2G/4Gなどが多く弊社のサーバで利用するメモリ上限に達してしまうため利用していません。

また、x41、x45以上のGPUがリッチなマザーボードはそもそもサーバでの利用にグラフィック機能は必要ありませんし、オンボードの機能が多く、余計な電力を消費するため対象外としています。

また、メモリを16G搭載できるAMDのマザーもありますので、メモリの利用量を目的にしてマザー・CPUを選択するのも全くアリだと思います。

CPU

一番気になる部分です、そして一番お金がかかりやすい部分でもあります。

最近ではCore 2 Quad Q8300(2.5GHz 4MB)を利用しています。

開発サーバは往々にして負荷をいきなり掛けたり、複数のプロジェクトを1つのサーバに同居させたりしています。
この際に複数プロジェクトのバッチ処理も1つのサーバで行うため大変な負荷が一気にかかる場合があります。
なので、瞬間的な処理速度ももちろんですが、同時平行処理の能力も大変重視します。

ですので、並行処理に強いQuadCoreを利用したいのですが、安くなったとはいえまだまだハイエンドのモデルは高いのが実情です。

一応現在の価格帯では安い部分に入り、且つ45nmで生産されている、Core 2 Quad Q8300(2.5GHz 4MB)を選択しています。

また、QuadCoreは消費電力が大きく(TDP95w)消費電力がより少ないs版(TDP65w)のQuadCoreも選択できるのであればよいかと思います。

※QuadCoreの省電力版(型番の最後に"s"がつくもの)は消費電力がCore2DuoのExxxxと同じため、サーバのCPUとしてはかなりオススメです。

ただこちらは同性能でも単価が高いので、予算との相談になるかと思います。

CPUファンは純正のものを利用しています。

メモリ

メモリはDDR2-800の2Gモジュールを利用しています。
メーカーはノーブランド(バルク)です。

これを搭載できる限界のスロット数(ほぼ4つ)に搭載し、
2Gx4=8Gのメモリを積んでいます。

DDR2のメモリは流通量も多く、品切れの可能性もあまりないため
すぐに購入できるスペックのものを選んでいます。

また、性能を最大限に利用するために、スロットに指すメモリは、なるべく同一製品の同時期に生産されたものを利用しています。

HDD(ハードディスク)

SATA2の1TB3.5インチを利用しています。

意外と開発環境のサーバはディスクを利用するということもあり
現在の主なHDDの最大容量を選択しています。
(WesternDigitalでは1.5TB、2TBのHDDも発売されていますが、単価が高いため現段階では見送っています。)

2.5インチはコストがかかるのと、ディスク容量も少ないため見送りました。

SSDも大変良いのですが、現実的に買える値段のMLCでは
ディスクのコントローラ自体にプチフリーズするという問題がある製品もあり、こちらが解決すれば導入すると思います。
SLCに関しては未だ値段が高いので導入は少々難しいと考えています。

PCケース

キューブ型ケースで、電源無しのものを利用しています。
メーカーは特にはないのですが、大きさをなるべく合わせるようにはしています。

キューブ型は省スペースな割りに12cmファンを搭載できるものが多く
静音で大排気量を持つファンを搭載できるものも多いです。

吸気側にファンが無いものも多いのですが、サーバとして利用するため
吸気側にも(大体8cm)ファンを付けています。

電源

電源は、SilverStoneかENERMAXを利用しています。どちらもメーカー自体に電源のラインナップ数が多く、選択肢が豊富なためです。

また、静音性も重視しますので、静かで効率的な電源であればどのメーカーでも構わないと思っています。

NIC

マザーにオンボードで乗っているNICとは別に、
PCI・PCIEで別売りされているインテルのNICを1つ指しています。

違うセグメントのIPアドレスも定義する場合や、PCルータとして使う場合もあるためです。

以上を踏まえて、サーバ1台を作るとしたら・・・・以下のようになります。

項目 製品名
マザーボード DG35EC
CPU Core 2 Quad Q8300
メモリ DDR2-800x4
HDD SATA2 1TB
ケース キューブ型
電源
NIC Intel製
ファン 8cm/12cm
合計

大体このような形で、ミドルスペックの開発サーバができるのではないでしょうか。

このPCにOSをインストールし、サーバとして機能させます。

※OSのインストールにつきましては別途記事を書く予定です。

2009年4 月6日  |  Written by matsumoto  |  under JavaScript, jQuery Yahoo!ブックマークに登録    はてなブックマーク - [JavaScript] jQuery1.3の新機能「live events」

今年1月にjQuery1.3がリリースされてから約3ヶ月経過しました。

これまでのシステムでは jQuery1.2.6をメインとして利用していたのですが
そろそろ 1.3への移行を検討しないと・・・と考えています。

jQuery1.3の機能の中で特に目新しいのが「live events」という機能です。

live events概要

公式サイトのリリース( http://docs.jquery.com/Release:jQuery_1.3 )やjQuery日本語リファレンス内でも書かれているのですが、

live eventsとは、あらかじめ定義されたセレクタに対して動的に(リスナーとして)監視する設定を行い、ドキュメント全体で全てのイベント発生時にチェックします。そして、該当するエレメントが存在すれば登録したイベントを実行する機能です。

利用例

例えば、「onLoad後に JSで動的に生成されたHTML」と「静的なHTML」の中で同一クラスのエレメントが混在している場合

$('.classname').click(function(){ ... });

をonLoad時に行うと、「静的なHTML」にしかイベントが登録されません。
(onLoad後に「JSで動的に生成されたHTML」は生成されるためです。)

こういったケースで「JSで動的に生成されたHTML」にもイベントを登録させたい場合は

jQuery1.3では

$('.classname').live("click", function(){ ... });

という書き方で対応できます。

  • live eventsのサンプルコードはこちらです。

関連リンク

下記のページで jQuery1.2から1.3への変更点について詳細に書かれています。

※jQuery1.2.6までのjQueryをお使いの場合、livequery(jQueryプラグイン)を利用する事でも同様の効果を期待できます。

jQuery1.2.6以前の場合

上記と同じケースで jQuery1.2+livequeryプラグインでのコードは以下になります。

$('.classname').livequery('click',function(){ ...});

livequeryの詳しい使い方はこちらです。

2009年4 月7日  |  Written by matsumoto  |  under Perl, web技術 Yahoo!ブックマークに登録    はてなブックマーク - [perl] ファイルの入出力の基本

perlでのファイルの入出力の基本である、open->print->close までの
一連の流れをまとめてみました。

ある条件(この場合は入力ファイルの先頭に「000000」が入っている場合)を満たす行は、
出力の対象から外すということをルール付けしています。

2009年4 月13日  |  Written by matsumoto  |  under CSS Yahoo!ブックマークに登録    はてなブックマーク - [CSS] clearfixを使ったDIVの段組みテクニック

DIVタグを使った段組ではCSSでカラムの回り込みを設定します。

この際に以下2カラム構成の場合、以下のようなHTMLを書いた場合

HTMLソースコード

<div style="clear:both">
親DIVタグ
<div style="float:left">子DIVタグ:カラム1</div>
<div style="float:left">子DIVタグ:カラム2</div>
</div>

以下のような表示になり、赤い枠で囲っている領域から「子DIVタグ:カラム1」「子DIVタグ:カラム2」がはみ出している状態になります。

ブラウザでの表示

親DIVタグ
子DIVタグ:カラム1
子DIVタグ:カラム2

※赤い枠線内に青い枠線のDIVを入れたいが、はみだしてしまっている。

このような書き方ですと、親DIVが高さを定義できず、子DIVがあふれてしまうという状態になります。

これは親DIV内の全ての子DIVタグがfloatのスタイル属性を持っており、CSSの仕様上なのですが親DIVが子DIVの高さを考慮した計算行わないために起こっている現象です。

子DIVにheightのスタイル属性を持たせることで、親DIVが考慮することもできるのですが、高さは動的に変わるケースも非常に多いため、毎回高さを計算することは現実的に難しいと思われます。

以上を踏まえて、実現したいことは以下になります。

floatのスタイル属性をもっている子DIVの高さを考慮して、親DIVの高さを動的に確保したい。

これを実現するために「clearfix」といわれる、CSSハックを使用します。

CSSハック

「CSSハック」とはInternetExplorer(IE)、FireFox、Safariなどブラウザによって実装されているレンダリングエンジンの違いや、ブラウザのバグを逆手にとって、それらの違いを利用した形でCSSを適用させるテクニックです。

clearfixはCSSハックの中でも代表的な手法で、多くのサイトで利用されているテクニックです。

書き方も色々あるのですが、弊社では以下の形を取っています。(最も一般的な形だと思います)

.clearfix:after{
    content:".";
    display:block;
    height:0;
    clear:both;
    visibility:hidden;
}

.clearfix{
    display:inline-block;
    min-height:1%;  /* for IE 7*/
}

/* Hides from IE-mac */
* html .clearfix { height: 1%; }
.clearfix { display: block; }
/* End hide from IE-mac */

この記述をCSS内でクラスとして定義し、DIVの構成ではみ出してしまう親の要素に適用させます。

DIVによる2カラム構成にclearfixを適用

では、上記で定義したクラス「clearfix」を適用させます。

具体的には1行目のDIVタグに「class="clearfix"」を入れるだけです。

<style>
.clearfix:after{
    content:".";
    display:block;
    height:0;
    clear:both;
    visibility:hidden;
}

.clearfix{
    display:inline-block;
    min-height:1%;  /* for IE 7*/
}

/* Hides from IE-mac */
* html .clearfix { height: 1%; }
.clearfix { display: block; }
/* End hide from IE-mac */
</style>

<div style="clear:both" class="clearfix">
<p>親DIVタグ</p>
<div style="flaot:left ">子DIVタグ:カラム1</div>
<div style="flaot:left">子DIVタグ:カラム2</div>
</div>

clearfixの記述を加えると、今まではみ出していた青い枠の2つの子DIVが親DIVに内包されるようになり、
これにより、DIVの中でDIVの段組を行った場合、親DIVからはみ出すということを防ぐことができるようになります。

普通のCSSデータですのでもちろん、外部からの読み込みで対応することもできます。

ブラウザでの表示状態

親DIVタグ
子DIVタグ:カラム1
子DIVタグ:カラム2

青い枠のDIVが赤い枠の親DIVに内包されています。

いかがでしょうか。
非常に簡単な方法ですのでぜひお試し下さい。

自作DOS/VによるPCサーバ

自作PCを使ってPCを組み、それにサーバ用のOSをインストールして、サーバとして利用する手法ですが
弊社ではごく一般的な手法としていまして、サーバ構築の際は1つの選択肢としています。

パーツ同士の相性のリスクや、アンチエイジングのテストが微妙というデメリットもありますが
個別に細かくカスタムできる点は大きな魅力です。

元々、PCパーツは値段が下がっていく傾向ですし、構築するタイミング(時期)により構成の仕様が大きく変わりますので
都度その時に合わせて性能・値段面でもベストな構成でサーバーを構築しています。

今回、ある案件で近々に自作DOS/VのPCサーバを構築する予定でして、サーバスペックや詳細情報などを定義する機会がありました。

以下がサーバに求める条件になります。

2009年4月現在での費用対効果を考えた構成は以下になりました。

サーバースペック (2009年4月現在)

項目 品名 備考
ケース Thermaltake/サーマルティク LANBOX Lite(VF6000BWS) キューブ型 Micro-ATX
CPU Intel Core 2 Quad Q8200(2.33GHz) CPUファンは純正品を使用
マザーボード Gigabyte GA-EG41MF-S2H Intel G35+ICH8 4スロット/最大8GB
電源 ENERMAX LIBERTY ELT400AWT-ECO 最大400W
メモリ UMAX/ユーマックス Pulsar DCDDR2-4GB-800 x2セット メモリは1台のサーバに2セットで計4枚(8G刺す)
HDD Seagate/シーゲイト ST31000528AS (SATA 1TB)
HDDクーラー CB-HDF801512L20
LANカード EXPI9301CT(Intel 82574Lチップ) PCIE(1)
9cmケースファン SANYO DENKI/山洋電気 F9-PWM ケース側面に取り付けるファン
防振ゴムプッシュ AINEX MA-023A (ファン固定用 防振ゴムブッシュ) 4つ入り(ケース側面に取り付けるファンを固定)

ケース、ケースファン、電源など

ケース

Thermaltake/サーマルティク LANBOX Lite(VF6000BWS)

http://www.alink.co.jp/tech/blog/wp-content/uploads/2009/04/41nhlfm-fbl_ss500_1.thumbnail.jpg

「省スペース性」を求めるのですが、1Uハーフサーバなど、ラックマウント型の省スペース型のサーバはコストがかかります。
また資材を簡単に調達できる事や、配線周りのメンテナンス性も考えますと、管理が楽なキューブ型のMicro-ATXを選択しました。

このケースはサイドにメッシュ状の穴が開いており、ここからも吸気させることができます。
例えば価格コムでの同ケースに側面ファンをつけた例(その1)同じように取り付けた例(その2)が大変参考になります。


電源

ENERMAX LIBERTY ELT400AWT-ECO

電源は効率のいいものを適当に選んでいます。
昔はseven teamをよく利用していましたが、最近はENERMAXかever greenを利用しています。
サーバ用ですのでビデオカードなどは使いませんので400Wの電源で十分です。

<参考リンク>
同ケースを利用した自作PC作成例

CPU

  • Intel Core 2 Quad Q8200(2.33GHz)

サーバーのCPUとしてはCore2Quadが最適だと考えています。やはり、平行処理の能力はサーバとのCPUとして大変魅力です。
QuadCoreのSシリーズ(省電力バージョン)もリリースされていますが、まだまだ値段が高いのと、
Q8200(TDP95W)とQ8200s(TDP65W)では消費電力がほとんど変わらないという結果もでています。

比較的省電力で動作するQuadCoreとしては、Q8200がコスト面・性能面からみると現時点ではベストと判断しました。

尚、CPUファンは純正を利用しています。特に変更する理由が無かったためです。

マザーボード

Micro-ATXのケースを選び、IntelのCPUを選んでいますので、まずMicro-ATXのIntelCPU対応のマザーの中から選んでいます。
Core2を選択していますので、更に「LGA775」(CPUをマザーに乗せる基盤の形)に対応したものになります。

それと、DIMMスロット(RAMをさせるスロット)は必ず4本付いているものを選びます。

メモリはDDR2-800を選択しています。
4本あれば2Gのメモリを4枚(計8G)さすことができます。

メモリはヒートシンクが付いているUMAXの2G-DDR2-800のメモリを4本刺します。

オンボードのNICがRealtek 8110SCですので、CentOSでは少々注意が必要です。
(CentOS5.1のインストール時に標準でドライバが付いておらず、別途インストールを必要としたケースがありました)

HDD、その他

HDDはSATA2で1TBを選んでいます。

SSDもよいのですが、未だにコストパフォーマンスが微妙なのと、MLCではコントローラの挙動がこれまた微妙な問題がありまだちょっと様子見です。

ざっとですが、以上のような構成で構築する予定です。

ネットワークを組む際に詳細を書きたいと思います。

<参考リンク>
自作PCでサーバを組むためのパーツ選び

2009年4 月16日  |  Written by matsumoto  |  under PHP, Perl Yahoo!ブックマークに登録    はてなブックマーク - [perl] Memcachedのインストール・利用方法

memcachedをdaemontoolsから使うドキュメントを公開しています。

弊社ではキャッシュサーバとしてmemcachedをよく利用しています。

memcached公式ページ

memcachedとはデーモンがメモリーを確保し、その中に変数の情報を格納できる仕組みです。大変高速に動作し、Mixiでも採用されていたりと、非常に信頼性の高いキャッシュシステムです。

使い方はごくシンプルで、キーを元に値をセットします。
ファイルキャッシュではなく、メモリ上に値を持つので、オブジェクトをそのままセットできます。(シリアライズされません)

Memcachedのインストール

CentOS(Linux)とFreeBSDでインストールします

CentOS(Linux)

yumで一発でインストールです

# yum install memacached

デーモンを起動します

# service memcached start
Distributed memory caching (memcached) を起動中:           [  OK  ]

以下のようなプロセスが起動されると思います。

memcached -d -p 11211 -u nobody -c 1024 -m 64

memcachedに渡すオプションを変更する場合は

/etc/rc.d/init.d/memcached

を編集します

FreeBSD

/usr/ports/databases/memcached
sudo make install

※FreeBSD6系でしか試していませんが、多分他のバージョンでもports以下は同じディレクトリかと思います。

デーモンを監視するツール(daemontools)

service コマンドでの起動でも十分ではあるのですが

弊社ではMemcachedがストップするという状態を2,3度経験しまして、
慎重を期すために、以後はdaemontools経由でmemcachedを取り扱う事にしています。

Mixiの場合でもdaemonotoolsを使っているようでしてdaemontoolsでの起動スクリプト例があります。

※daemontoolsについては次回の記事で解説致します。

perlから使ってみる

perlから使うためにはCPANモジュールの「Cache::Memcached::Fast」をインストールします。

# perl -MCPAN -e 'install Cache::Memcached::Fast'

データのset、getをしてみます。

 #!/usr/bin/perl
 
 use Cache::Memcached::Fast;
 
 my $key = "key";
 my $cache = Cache::Memcached::Fast->new({servers=>["localhost:11211"]});
 $cache->set($key,"http://www.yahoo.co.jp");
 
 if( my $val = $cache->get($key) ) {
   warn "[ GET CACHE ] ".$val;
 }
 

このプログラムを実行すると、きちんとmemcachedが起動している状態であれば

http://www.yahoo.co.jp

と表示されます。

PHPで試してみる

PHPではpeclライブラリの「php-pecl-memcache」をインストールします

# yum install php-pecl-memcache

#!/usr/bin/php

<?php
  $key = "key";
  $cache = new Memcache;
  $cache->connect("localhost", 11211);
  $cache->set($key,"http://www.php.net/");

  if ( $val = $cache->get($key) ) {
    echo "[ GET CACHE ] ".$val;
  }
?>
 

string(32) "[GET CACHE ] http://www.php.net/"

と表示されれば成功です

Memcachedの使いどころ

実際のWebアプリケーションでは主にページのキャッシュ、DBの抽出結果のキャッシュなどに使われています。

次回のMemcachedの記事ではperl上でのDBの抽出結果のキャッシュの実装について書きたいと思います。

関連リンク

2009年4 月18日  |  Written by matsumoto  |  under JavaScript, jQuery Yahoo!ブックマークに登録    はてなブックマーク - [JavaScript] フォームの入力文字数を簡単に制限する

jQueryプラグイン"easyStrValidate"

テキストフォームの入力文字数の制限を簡単にかけることができる、
jQuery用のeasyStrValidateプラグインをリリースしました。

easyStrValidateについて

文字数の入力制限をかけたいテキストフォーム・テキストエリアに対して適用することで、以下の機能を実装できます

  • 文字を入力する都度アラートメッセージが動的に変化
  • 文字数の大小を満たさない限り、submitボタンはdisable
  • 文字数の大小を満たさない限り、form自体が送信できない

動作サンプル

  • 別ウィンドウで開く場合はこちら

下のテキスト入力部分は「最小5文字、最大20文字」と定義されています。
入力内容に応じて、メッセージが変化します。

5文字以下、20文字以上の場合は、ボタンが押せなくなり、フォーム自体が送信できなくなります

テキストを入力

サンプルコード・ダウンロード

以下の様に書きます。この場合は「text」というIDのテキストフォームが対象になります

詳しくはこちらのドキュメントをご覧下さい

$('#text').easyStrValidate({
               maxLength : 20,
               messageID : 'valid_message'
});
  • ダウンロードはこちらから。
  • パラメータなどのオプションについてはこちら

詳しくはこちらのドキュメントをご覧下さい

私はチーム・マイナス6%です