浅野直樹の学習日記

この画面は、簡易表示です

未分類

scikit-learnでMNIST手書き数字の分類機械学習

前から気になっていた機械学習に手を出し始めました。 何冊かの本を読み、インターネット上の資料も見て、ようやく少し理解できました。 自分の理解を整理するために、scikit-learnを使ったMNIST手書き数字の分類という典型的な例を示してみます。

 

Recognizing hand-written digits — scikit-learn 0.24.2 documentationの焼き直しです。In-Depth: Decision Trees and Random Forests | Python Data Science Handbookも参考にしています。

 

jupyter notebook上で順次実行するという形で試していますが、他の環境でも本質的な部分には変わりはないと思います。

 

1.データの読み込みと確認

まずはデータを読み込んで確認します。

import matplotlib.pyplot as plt
from sklearn import datasets

####MNIST手書き数字のデータ読み込みと確認####
digits = datasets.load_digits()
print(digits.keys())

####読み込んだ手書き数字データの画像表示####
#描画領域の確保
fig, axes = plt.subplots(10, 10, figsize=(15, 15), subplot_kw={'xticks':[], 'yticks':[]}, gridspec_kw=dict(hspace=0.5, wspace=0.5))

#確保した描画領域に読み込んだ画像の最初の100枚を表示
for i, ax in enumerate(axes.flat):
    ax.imshow(digits.images[i], cmap=plt.cm.gray_r, interpolation='nearest')
    ax.set_title(digits.target[i])

これを実行すると次のような文字と画像が表示されます。

dict_keys(['data', 'target', 'frame', 'feature_names', 'target_names', 'images', 'DESCR'])

digitsという変数名で読み込んだデータのimagesというプロパティに画像のデータが、targetというプロパティに正解ラベル(その人が何の数字を書いたか)が入っています。

 

2.データの前処理

機械学習に適した形になるようデータを前処理します。具体的に言うと、サンプル数×特徴量数の2次元配列を作るということです。

 

まず、先ほど画像として表示したdigits.imagesの形式を確認してみましょう。

#imagesプロパティの形状を取得して表示
image_shape = digits.images.shape
print(image_shape)

#サンプル数の取得
n_samples = len(digits.images)
print(n_samples)

#念のために上記二種類のやり方で取得したサンプル数が一致することを確認
print(image_shape[0] == n_samples)

次のように表示されます。

(1797, 8, 8)
1797
True

サンプル数が1797というのはいいとして、特徴量の部分が8×8の2次元の配列になっており、全体で3次元の配列になってしまっています。

画像として表示するためには2次元の配列であるほうが都合がよいのですが、機械学習のためには1次元のほうがよいです。

そこで次のように変形します。

my_data = digits.images.reshape((n_samples, -1))
print(my_data.shape)

reshapeメソッドにマイナス1を渡すと適当にうまく値を定めてくれます。ここでは「my_data = digits.images.reshape((n_samples, 64))」と同じことになります。

(1797, 64)

これでデータの前処理は完了です。

今回は画像に適した2次元配列の特徴量から機械学習に適した1次元配列の特徴量へと手作業で変換しましたが、実はdigitsデータには最初から1次元配列に変換されたデータが含まれています。digits.dataです。

import numpy as np
flag = np.allclose(my_data, digits.data)
print(flag)

同じデータになっていることが確認されました。

True

 

 

3.訓練データとテストデータに分け、機械学習のモデルを作成し、学習させる

いよいよ機械学習の本体的な部分です。

from sklearn.model_selection import train_test_split
from sklearn import svm
from sklearn.metrics import accuracy_score

#訓練データとテストデータに分割
X_train, X_test, y_train, y_test = train_test_split(my_data, digits.target, shuffle=False)

#機械学習モデルの作成
model = svm.SVC()

#作成したモデルで学習
model.fit(X_train, y_train)

#学習結果のテスト
y_model = model.predict(X_test)
accuracy_score(y_test, y_model)

たったのこれだけです。難しいことは背後でscikit-learnがやってくれます。

0.9488888888888889

1に近いほどいい値であり、0.95くらいならまずまずではないでしょうか。

せっかくなので、もう一つ別のモデルでも試してみましょう。

from sklearn.ensemble import RandomForestClassifier

#別のモデルの作成
another_model = RandomForestClassifier()

#別のモデルで学習
another_model.fit(X_train, y_train)

#別のモデルの学習結果のテスト
y_another_model = another_model.predict(X_test)
accuracy_score(y_test, y_another_model)

結果の数字は先ほどより少し悪くなりました。

0.9333333333333333

モデルやパラメータの選択が機械学習の腕の見せ所になるのですが、ここではこれ以上深入りしません。

 

4.結果の可視化

どの数字をどの数字に間違えたのかを混同行列で示してみましょう。

from sklearn.metrics import plot_confusion_matrix
plot_confusion_matrix(model, X_test, y_test)
plt.show()

きれいなヒートマップが表示されます。

本当は3なのに8だと予測してしまったものが6つあるということがわかります。

今度は予測値と真の値を画像で表示してみましょう。

先ほどとは逆に1次元配列の特徴量を2次元配列の特徴量へと復元します。「X_test[i].reshape(8, 8)」の部分です。

#描画領域の確保
fig, axes = plt.subplots(10, 10, figsize=(15, 15), subplot_kw={'xticks':[], 'yticks':[]}, gridspec_kw=dict(hspace=0.5, wspace=0.5))

#テストデータの最初の100枚を「予測値→真の値」というラベルとともに表示
for i, ax in enumerate(axes.flat):
    ax.imshow(X_test[i].reshape(8, 8), cmap=plt.cm.gray_r, interpolation='nearest')
    label = str(y_model[i]) + '→' + str(y_test[i])
    title_color = "black" if y_model[i] == y_test[i] else "red"
    ax.set_title(label, color=title_color)

このような画像が表示されます。

上から2行目、左から5列目のデータで、正しくは5であるところを6と予測してしまっています。画像を目で見るとこれは仕方ないかなという気もします。

せっかくなので予測を間違えたものだけを取り出して見てみましょう。

データの画像を表示する部分は基本的に先ほどと同じですが、描画領域の100に対してデータが23しかなくて list index out of rangeエラーが表示されるのを防ぐため、「if i+1 >= len(failed_test): break」を最後に加えています。

#テストデータのサンプル数を取得
n_test = len(X_test)

#予測を間違えたテストデータだけを予測値と真の値とともにリスト内包表記で抽出
failed_test = [{'data':X_test[i], 'y_model':y_model[i], 'y_test':y_test[i]} for i in range(n_test) if y_model[i] != y_test[i]]

#描画領域の確保
fig, axes = plt.subplots(10, 10, figsize=(15, 15), subplot_kw={'xticks':[], 'yticks':[]}, gridspec_kw=dict(hspace=0.5, wspace=0.5))

#予測を間違えたテストデータを「予測値→真の値」というラベルとともに表示
for i, ax in enumerate(axes.flat):
    ax.imshow(failed_test[i]['data'].reshape(8, 8), cmap=plt.cm.gray_r, interpolation='nearest')
    label = str(failed_test[i]['y_model']) + '→' + str(failed_test[i]['y_test'])
    ax.set_title(label, color='red')
    if i+1 >= len(failed_test): break

次のような画像が表示されます。

予測を間違えるのも頷ける判別しづらい画像が並んでいます。

 

5.自分で書いたオリジナルの手書き数字で実験

ここからはオマケです。しかし一番苦労した部分でもあります。

自分で書いたオリジナルの手書き数字を判別できるか実験してみました。

MNISTデータと同じような画像にして同じようなデータにするのが大変でした。

試行錯誤の過程は省いて結論だけ言います。

GIMPを使い、32px×32pxの背景を1600%に拡大して表示して、5px×5pxの鉛筆を選んでマウスで数字を書きました。

プログラムを実行しているファイルが存在している階層にoriginal_imagesディレクトリを作成し、そこに0.png, 1.png, …, 9.pngという名前で画像を保存しました。

画像を読み込んで変形し、先ほど学習したモデルで予測をするコードは以下です。

import os
from skimage import io, color
from skimage.transform import resize

#オリジナルデータを格納するリストの作成
X_original = []
y_original = []

#ディレクトリから画像の読み込み
image_files = os.listdir('./original_images/')
for filename in image_files:
    image = io.imread('./original_images/' + filename)
    inverted_image = np.invert(image)
    gray_image = color.rgb2gray(inverted_image)
    resized_image = resize(gray_image, (8, 8))
    scaled_image = resized_image * 16
    X_original.append(scaled_image)
    y_original.append(int(filename[0]))

#画像データを機械学習に適した形にする
X_original_data = np.array(X_original).reshape(10, -1)
y_original_target = np.array(y_original)

#以前に作成したモデルでオリジナルデータの予測
y_original_model = model.predict(X_original_data)

#描画領域の確保
fig, axes = plt.subplots(1, 10, figsize=(15, 15), subplot_kw={'xticks':[], 'yticks':[]}, gridspec_kw=dict(hspace=0.5, wspace=0.5))

#オリジナルデータを「予測値→真の値」というラベルとともに表示
for i, ax in enumerate(axes.flat):
    ax.imshow(X_original_data[i].reshape(8, 8), cmap=plt.cm.gray_r, interpolation='nearest')
    label = str(y_original_model[i]) + '→' + str(y_original_target[i])
    title_color = "black" if y_original_model[i] == y_original_target[i] else "red"
    ax.set_title(label, color=title_color)

なぜか色が反転していたのでnp.invert関数でその補正をして、rgb画像からgray画像に変換し、32×32の画像を8×8にリサイズしています。

MNISTデータは0〜16で色の濃さを表現していることに気づかずハマリました。scikit-imageで何も指定せずにファイルを読み込むと0〜1で色の濃さが表現されているので、それを単純に16倍しました。

結果の表示は以下の通りです。

まずまずではないでしょうか。

 



令和3(2021)年司法試験予備試験論文再現答案民事訴訟法

再現答案

 以下民事訴訟法についてはその条数のみを示す。

 

〔設問1〕

(1) 本件訴訟は、債権者代位権(民法423条1項)に基づいて提起されている。この場合、債権者のXは、債務者Yの法定訴訟担当であると解される。そして、民法423条の6により、XはYに対して訴訟告知をしているはずである。

 訴訟告知を受けて訴訟に参加する場合は、補助参加(42条)によることが多いが、だからといって共同訴訟参加(52条)が許されないということではない。そこで、52条1項の要件に沿って検討する。

 本件訴訟の目的である、本件不動産のZの持分2分の1について、ZからYに対して遺産分割を原因とする所有権移転登記手続請求権は、当事者の一方であるX及び第三者Yについて合一にのみ確定すべき場合に当たる。よって、Yは、本件訴訟に共同訴訟参加をすることができる。

 Yは、XY間に債権債務関係はないと考えており、もしそうであるなら本件訴訟の前提となっている被代位債権が存在しないことになるので、共同訴訟参加をすることができないようにも思われる。しかし、Yが主観的にそのように考えているということは、共同訴訟参加の際の訴訟資料には顕出されないため、共同訴訟参加をすることができると解する。

 もっとも、本件訴訟が確定すると、信義則により、Yは後訴で本件貸付債権の不存在を主張することができなくなると解されるので、共同訴訟参加ではなく、独立当事者参加(47条1項)をするほうが望ましい。

(2) 独立当事者参加の要件は47条1項に規定されている。以下では前段と後段に分けて検討する。

 ① 47条1項前段について

 既判力は、主文に包含するものに限り発生するので(114条1項)、被代位債権の判断について既判力は生じない。そうすると、後訴で本件貸付債権の不存在を主張することができるため、その点につき、訴訟の結果によって権利が害されることはない。

 Xが敗訴した場合、ZからYに対して遺産分割を原因とする所有権移転登記手続を求めることができなくなるが、Yとしては、Zに対して登記名義の移転を求めるつもりはないので、訴訟の結果によって権利が害されることはない。

 Xが勝訴して、本件不動産に執行をかけられると、YがZから責任を追及されるおそれがある。しかし、それは後訴で本件貸付債権の不存在を主張することによって防ぐべきことであり、本件訴訟の結果によって権利が害されるとは言えない。

 ② 47条1項後段について

 本件訴訟の目的である、本件不動産のZの持分2分の1について、ZからYに対しての遺産分割を原因とする所有権移転登記手続請求権について、Yは自己の権利であることを主張していないため、要件を満たさない。

 以上より、Yは、本件訴訟に独立当事者参加をすることはできない。

 

〔設問2〕

第1 本件判決の既判力がYに及ぶか否か

 先述したように、債権者代位訴訟は、法定訴訟担当なので、当事者であるXが他人であるYのために原告となった場合に当たり、その他人であるYに既判力が及ぶ。

 仮にYに既判力が及ばないとしても、Yは訴訟告知を受けているので、53条4項により、46条の参加的効力が及ぶ。この参加的効力は、敗訴責任の分担という補助参加の制度趣旨から、被参加人敗訴の場合は、主文に包含するものだけでなく、それを導くための理由についても効力が生じると解されている。既判力以上の効力である。本件では、被参加人Xが敗訴しており、Yに既判力以上の参加的効力が及ぶので、既判力が及ぶと言ってよい。

第2 本件判決の効力がAに及ぶか否か

 繰り返し述べているように、債権者代位訴訟は、被代位債権の債務者のために債権者が訴訟を遂行するものである。第1で述べたように、本件判決の既判力がYに及ぶのだから、Yを介してその効力はAに及ぶ。

以上

 

感想

 法律実務基礎科目に続いて債権者代位なのかと思い、準備してきた人なら正解筋をすらすらと書くことができるのだろうなと想像しました。私は準備をしておらず、よくわからないまま、全体の整合性もあまり考えず、目の前の記述に集中しました。



令和3(2021)年司法試験予備試験論文再現答案商法

再現答案

 以下会社法についてはその条数のみを示す。

 

〔設問1〕

 乙社はまず、本件代金が発生する基礎となった本件取引基本契約が有効に成立していると主張する。

 これに対し、甲社は、株式会社は代表者を通じて契約を締結するのであって、代表取締役のBが存在するからCは代表権のない取締役であり(349条1項)、そのCが締結した本件取引基本契約の効力は甲社に帰属しないと反論する。

 乙社は、それに対し、354条の表見代表取締役の主張をする。代表取締役以外の取締役であるCは、副社長という株式会社を代表する権限を有するものと認められる名称を使用して本件取引基本契約を締結している。甲社がその名称を付したと言えるかどうかが問題となるが、甲社の発行済株式の5分の4を有しているAがこれを容認しており(少なくともBと同等の権限をCにも与えるべきだということはCに代表権を与えるべきだということである)、甲社がその名称を付したと評価してよい。

 この契約書には代表印が押されており、その他乙社がCに代表権がないことを知ることのできた事情は見当たらない。

 以上より、甲社は、本件取引基本契約を締結した責任を負い、乙社は甲社に対して本件代金を請求することができる。

 

〔設問2〕

第1 甲社のBに対する本件慰労金の返還請求の根拠及び内容

 退職慰労金は、取締役を退任後に支給されるものであるが、職務執行の対価として株式会社から受ける財産上の利益である。よって、361条1項により、同項各号について、定款に当該事項を定めていないときは、株主総会の決議によって定めなければならない。

 本件では、役員の報酬については定款に定められていないということなので、退職慰労金の定めもないものと思われる。そして、退職慰労金についての株主総会の決議も存在しない。

 以上より、本件慰労金の支給は無効である。

 よって、民法703条の不当利得返還請求権を行使して、甲社は、Bに対し、1800万円の返還を請求することになる。

第2 これを拒むためにBの立場において考えられる主張及びその当否

1.361条1項の要件は満たしているという主張

 361条1項の趣旨は、取締役が自ら高額の報酬を決定するというお手盛りを防止することであり、だからこそ定款又は株主総会の決議が要求されているのである。

 本件では、Aが他社から甲社の取締役として引き抜いてきたBが代表取締役に選定された時点で、Aは甲社の株式の全部を保有していた。よって、Aが書面又は電磁的記録により同意の意思表示をしたときは、株主総会の決議があったものとみなすことができた(319条1項)。確かに甲社ではその手続きをしておらず、株主総会の決議は存在していないのであるが、前述の361条1項の趣旨からすると、要件を満たしていると言える。

 そうだとしても、その内容は、1800万円という具体的な金額ではなく、本件内規に従うというものである。このような定めも、361条1項2号により、有効である。

 以上より、本件慰労金は有効であり、Bは返還請求を拒むことができる。

2.取締役解職によって生じた損害賠償請求権との相殺

 念のために、Bとしては、取締役解職によって生じた損害賠償請求権と相殺するとの予備的主張を行う。

 役員である取締役は、いつでも、株主総会の決議によって解任することができるが(339条1項)、その解任について正当な理由がある場合を除き、株式会社に対し、解任によって生じた損害の賠償を請求することができる(339条2項)。代表取締役から代表権のない取締役にさせる解職と、取締役の地位を奪う解任とは異なるが、中小企業では代表取締役が独断的に決定して代表権のない取締役には事実上何の権限もないことも珍しくなく、339条を類推適用してよい。

 本件では、Bが株主総会で代表取締役から解職され、その結果自ら辞任している。この解職に正当な理由はない。よって、Bは、解任によって生じた損害の賠償を請求することができる。代表権のある取締役の報酬がいくらで代表権のない取締役の報酬がいくらかなどが定かではないが、仮に本件慰労金の返還請求権が発生するとしたら、相当額の損害賠償請求権と相殺すると主張する。民法505条1項の相殺の要件は満たしている。

 

感想

 〔設問1〕では908条の登記の効力との関係が頭をよぎりましたが、時間も厳しく盛り込むことができませんでした。〔設問2〕は、役員の任期がわざわざ問題文に記載されていることと、他に書くことがあまり思いつかなかったことから、339条の主張をすべきなのだと判断しました。



令和3(2021)年司法試験予備試験論文再現答案民法

再現答案

 以下民法についてはその条数のみを示す。

 

〔設問1〕

第1 本件ワイン売買契約について

 Aが、本件ワイン売買契約の解除を主張する根拠は、542条1項1号である。本件ワインは飲用に適さない程度に劣化しており、本件ワインと同種同等のワインは他に存在しないため、債務の全部の履行が不能であるときに当たる。

 Bは、そのことに自分の責任はないと反論するかもしれない。しかし、543条に債務の不履行が債権者の責めに帰すべき事由によるものであるときは契約の解除をすることができないと規定されており、その反対解釈から、それ以外の場合には契約の解除をすることができると解されるので、Bの反論は当たらない。

第2 本件賃貸借契約について

 Aは、本件賃貸借契約は本件ワイン売買契約と一体として1つのものであり、そうすると542条1項3号に該当するので、契約を解除すると主張する。

 Bは、あくまでも本件賃貸借契約は本件ワイン売買契約とは別個のものであり、賃貸借契約の履行は可能なので、契約を解除することができないと反論することが想定される。

 しかしながら、本件賃貸借契約は、先行する本件ワイン売買契約に付随して締結されたものであり、もっぱら本件ワインを保管するためのものだったので、社会通念上1つの契約であると認められる。そして、本件ワインが飲用に適さない程度に劣化しており、株式会社Aは高級ワインの取扱いを新しく開始することができなくなっているので、残存する部分のみでは契約をした目的を達することができないときに当たる。よってAの主張が認められる。

 そうすると、第1で述べたこととは異なり、本件ワイン売買契約の部分も、本件賃貸借契約と一体として1つの契約になるので、542条1項1号ではなく、同項3号に該当することになる。

 以上より、Aは、本件ワイン売買契約及び本件賃貸借契約を、一体のものとして解除することができる。

 

〔設問2〕

(1) まず、譲渡担保契約自体は、民法で明定されていないが、必要性があって害がないので、有効である。変動する集合物についての譲渡担保契約も、場所や品目によって特定されていれば有効であると解する。本件では、倉庫丙内にある全ての酒類ということで対象物が特定されており、本件譲渡担保契約は有効である。

 動産の対抗要件は引渡しである(178条)。①の主張により、占有改定(183条)によって、倉庫丙内の動産である酒類がAからCに引き渡されていると言える。

 以上より、Cは、本件譲渡担保契約の有効性について、第三者に対して主張することができる。

(2) Dの③の主張は、本件ウイスキーは代金の完済まで所有権がDに留保されており、本件譲渡担保契約の効力が及ばないというものである。そもそも、所有権留保契約は、民法上明定されていないが、必要性と害のなさから、有効に成立する。本件ウイスキー売買契約は所有権留保契約である。

 もっとも、DはAに対して、本件ウイスキーの引渡日以降、本件ウイスキーの全部又は一部を転売することを承諾しており、転売されたウイスキーの所有権を主張して取り戻すことは予定されていない。令和3年10月20日、本件ウイスキーが倉庫丙に搬入された時点で、その所有権はCに移転している。Aは、これにより経済的利益を得ているので、転売であると言ってよい。

 以上より、Dは、Cに対して、本件ウイスキーの所有権を主張することができない。

以上

 

感想

 〔設問1〕は2つの契約を一体のものとして考えられるかどうかが最大の争点だとすぐに気づきましたが、その判断基準がよくわからず、本件ワイン売買契約のことを先に書き始めたこともあり、記述がまとまっていないです。〔設問2〕は考えたことがないことだったので、本文中の事情をできるだけ使うようにしました。

 



令和3(2021)年司法試験予備試験論文再現答案法律実務基礎科目(刑事)

再現答案

 以下刑事訴訟法についてはその条数のみを示す。

〔設問1〕

1 この準抗告は429条1項2号に基づく勾留に関する裁判に対する不服申立である。その勾留の裁判の根拠は60条1項2号及び3号である。

 (1) 疎明資料aについて

  疎明資料aは、Aの両親が彼らの自宅で生活させて監督し、Aに事件関係者と一切接触させないことにより、Aが罪証を隠滅すると疑うに足りる相当な理由があるときには当たらないと主張するものである。本件では、物証は既に収集が終えられており、人証の隠滅を防げばそれで足りるからである。60条1項2号に該当しないということである。

 (2) 疎明資料bについて

  疎明資料bは、Aが勤務先で重要な役割を果たしており、Aがフルタイムで働いているという客観的な事情とあわせて、Aが逃亡すると疑うに足りる相当な理由があるときには当たらないと主張するものである。60条1項3号に該当しないということである。

2 (1) 疎明資料aについて

  Aの両親が彼らの自宅で生活させるといっても仕事には行かせるのであろうし、仕事に行って営業に出れば自由に行動できるのだから、人証を隠滅すると疑うに足りる相当な理由があると言える。

  (2) 疎明資料bについて

  Aが勤務先で重要な役割を果たしてフルタイムで働いているといっても、現在の勤務先に勤め始めてからまだ1か月ほどであり、本件は重罪で重い刑が課される可能性もあるところ、それだけで逃亡を思いとどまらせるとは限らず、Aが逃亡すると疑うに足りる相当な理由があると言える。

 

〔設問2〕

第1 Wが物理的に犯行現場を目撃できたこと

 ⑤、⑮、K駐車場の照明も含めた形状により、Wが、別紙見取図のWの記号の場所に限らずK駐車場内の広い範囲で物理的に犯行現場を目撃することができたと認められる。

第2 面割り

 短めの黒髪で眼鏡を掛けていない30歳代の男性20名の顔写真のうちにAの写真があり、「この中に見覚えがある人がいるかもしれないし、いないかもしれない」という厳しい条件で面割りが行われたことに対し、Wが面識のないAを自信を持って選んだということは信用できる。

第3 防犯カメラとの符合

 服装、持ち物、移動方向とその時間が、Wの供述と客観的な防犯カメラの映像とで符合しており、Wの供述には信用性が認められる。

 

〔設問3〕

第1 ビデオリンク方式について

 本件において、ビデオリンク方式が認められる根拠となり得るのは、157条の6第2項1号である。Wは本件犯罪の被害者ではなく、27歳と成人しており、「人前で話すのも余り得意ではない」というのは多くの人にあることであるため、証人Wが被告人Aと同一構内に出頭するときは精神の平穏を著しく害されるおそれがあるとは認められない。

 157条の6第1項3号も根拠になり得るが、上記と同様に考えて、裁判官及び訴訟関係人が証人を尋問するために在席する場所において供述するときは圧迫を受け精神の平穏を著しく害されるおそれがあるとは認められない。

第2 遮へい措置について

1 被告人Aとの間の遮へい

 本件において、この根拠となり得るのは、157条の5第1項である。Wは本件犯罪の被害者ではないが、重大犯罪であり、Wの目撃証言が決定的な証拠となるので、Aから恨まれるということが想定され、証人Wが被告人Aの面前において供述するときは圧迫を受け精神の平穏を著しく害されるおそれがあると認められる。*Aには弁護人がついており、同項ただし書の要件は満たせるものと思われる。

2 傍聴人との間の遮へい

 本件において、この根拠となり得るのは、157条の5第2項である。これまで述べてきた条件に加えて、本件では特に名誉に対する影響は考えられないので、傍聴人との間の遮へい措置を採ることが相当だとは認められない。

 

〔設問4〕

 証人尋問は、証人の証言と態度から判断するという趣旨であり、証人を記憶とは異なる真実に反する方向に誘導することを避けるため、書面を示すことは原則としてできない。もっとも、例外的に、証人の供述を明確にするため必要があるときは、図面を利用して尋問することができる(刑事訴訟規則199条の12第1項)。本件では、別紙の見取図を示すことが、証人Wの供述を明確にするため必要なので、本件見取図を示すことができる(K駐車場のどこどこから何メートルの地点と供述するよりも、見取図のこのあたりと供述するほうが、明確である)。しかし、X及びWの記号は、証人Wを記憶とは異なる真実に反する方向に誘導するおそれはあるのに対し、これによって供述が明確になることはないので、原則に立ち返ってこれを示すことが禁止される(見取図のWの地点と供述しても、見取図のこのあたりと供述することと明確度は変わらない)。

 

*に以下の『』内を挿入

 『実際にWは「復しゅうが怖い。Aに見られていたら証言できない」と述べている。』

以上

 

感想

 見たことのない問題が多くて戸惑い、現場で必死に条文を探しました。食らいつけたかなという手応えはあります。

 




top