1993年に発売された世界初のトレーディングカードゲーム（TCG）である。公式にはマジック、のように略され、他にもギャザなどと呼ばれる。このほか、「もっともよく遊ばれているTCG」などでもギネス世界記録に認定している。メインデザイナーのリチャード・ガーフィールドは、このゲームを作ったヒントがボードゲームのコズミック・エンカウンターにあると話している。コズミック・エンカウンターの基本的なルールは簡潔なもので、そのままでは単調な展開にしかならない。しかし各プレイヤーはプレイ開始時点に“特殊能力”を与えられており、時には基本ルールを逸脱するような特殊ルールが適用される。これによってゲームの展開やバランスはプレイごとに大きく変化する。マジック:ザ・ギャザリングを初めとするTCGにおいては、一定の制限内で好きなようにカードを組み合わせたデッキ（山札）を各プレイヤーが用意する。さらに、多くのカードが原則を破る特殊ルール（極端な一例として「ライフが0になっても敗北しない」「山札切れすると勝利する」など）を持っている。これにより、コズミック・エンカウンター以上に多彩かつダイナミックな展開が実現された。このゲームは発売されてから短期間の内に驚異的な人気を得て、TRPG関連の新興零細メーカーに過ぎなかったウィザーズ・オブ・ザ・コースト社を一気に成長させた。そしてその人気に触発されて多くのメーカーが次々とTCGを発売した結果、僅か数年でTCGがゲームの一ジャンルとして確立したのである。人気は他のゲームジャンル・漫画にも影響を与えた。デュエル・マスターズはこのゲームの影響を強く受けている。
マジック:ザ・ギャザリング（Magic: The Gathering）は、米ウィザーズ・オブ・ザ・コースト社製のトレーディングカードゲーム。日本における代理店は、ウィザーズ・オブ・ザ・コースト社の日本支社が窓口になっている。
拓大一高では2年次の1964年、夏の甲子園東京都予選3回戦でノーヒットノーランを達成。高校卒業後は中央大学へ進学し、東都大学リーグで通算35試合に登板。9勝3敗を挙げる。大学同期には杉田久雄・石渡茂がいた。大学卒業後は本田技研を経て、1971年のドラフト4位で東映フライヤーズに入団。デビュー当初から主に敗戦処理が中心であったが、イースタン・リーグでは1年目の1972年に最優秀防御率のタイトルを獲得。1979年には新山隆史コーチとマンツーマンで腰の回転を研究。これまでアンダースローでありながら腰の回り方がオーバースローに近いものであったが、アンダースローに合った腰の回転に矯正。先発での7試合を含めて39試合に登板し、規定投球回もクリア。防御率3.47・9勝3敗の成績を残し、リーグ投手ベストテンの7位に入った。1981年の日本シリーズでは、第4戦で4番手に登板している。1982年1月、榊原良行との交換トレードで阪神タイガースに移籍。中継ぎとして29試合に登板したが、1年限りで退団。1983年には韓国プロ野球のヘテ・タイガースに移籍し、同年は30試合登板・7勝3セーブを上げて韓国シリーズ優勝に貢献。1984年に現役引退。引退後は1989年から2001年までTCN制作の日本ハム戦中継でレギュラー解説者を務め、2002年から2003年までは古巣・起亜で投手コーチを務めた。退団後はイ・スンヨプら日本でプレーする韓国人選手の良き相談相手でもあった。
三養基高校では高校通算32本塁打を記録。パンチ力が注目され、1986年ドラフト2位で西武ライオンズ指名され入団。1987年アメリカ1A・サンノゼ・ ビーズに野球留学した。1992年には2軍で24本塁打を記録。1993年の開幕直前、清水義之選手との交換トレードで森山良二選手と共に横浜ベイスターズに移籍した。1995年限りで退団。その後、横浜の瀬ヶ崎フレンズ(小学生ソフトボールチーム)の監督をしている。
Eiffel の特徴の一つとして、継承における細かい指定が可能ということが挙げられる。例えば class A feature   method1 is     io.put_string("Hello from A")     io.new_line   end end class B inherit   A feature   method1 is     io.put_string("Hello from B")     io.new_line   end endというコードがあるとする（ioは標準入出力を扱うインスタンスで、ANYクラスのメンバである）。これは A というクラスを継承した B というクラスに同じ名前のメソッドがある場合である。このとき  class  C  creation    make  feature    a : A    b : B     make is    do      !!b      a := b      b.method1      a.method1    end endというコードを実行したとき。b.method1 はおそらく B で定義されたメソッドが動くと誰もが期待するだろうが、a.method1 で実行されるメソッドは A と B どちらで定義されたものだろうか?この場合の処理は言語によって異なっており例えばC++の場合は A で定義されたメソッドが実行され、Javaの場合は B のメソッドが実行される。すなわち言語によって動作が違うため作成者の勘違いなどによって混乱を招くおそれがある。Eiffelでは実のところ、どちらが実行されるか以前に上記のような例ではコンパイルすることができないことになっている。すなわち Eiffelのメソッドは全てデフォルトでは継承不可である。しかしこれでは、あまりに制約が強すぎるため、同名のメソッドを定義する必要性があるときは、継承クラスの作成者がどちらを実行するかを指定することが出来る。具体的には rename と redefine という機能があり、上記の例では A で定義されたメソッドを実行したい場合は class B inherit   A   rename     method1 as method2   endとする。この場合クラス B では A のメソッドを method2 という名前に改名させて、名前の衝突を防いでいる。B のインスタンスでも、クラス A のインスタンスとして扱われた場合（上記の例のような場合）は A の method1 が実行され、クラス B のインスタンスとして扱われた場合は B のmethod1 が実行される。B のインスタンスとして扱われた状態で A の method1 を実行するには上記の例では b.method2 とすればよい。これらの改名による効果は継承先と継承元の他、多重継承時のメソッド同士の衝突にも使用できる。逆に A のインスタンスとして扱われる場合でも B の method1 を実行したい場合は以下のようにする。 class B inherit   A   redefine     method1   endこの場合、クラス B はクラス A の method1 を継承時に破棄しクラス B で再定義することを示している。クラス B のインスタンスは A、B どちらで扱われても method1 はクラス B のものが実行され、クラス A の method1 はもはや実行されることは無い。なお再定義を宣言された method1 は必ずクラス B で再定義しなければならず、再定義していない場合はコンパイルエラーとなる。このように、Eiffel ではクラスの継承時に継承クラスの作成者がメソッドの扱いを自由に設定することができる。