としおの読書生活

田舎に住む社会人の読書記録を綴ります。 主に小説や新書の内容紹介と感想を書きます。 読書の他にもワイン、紅茶、パソコン関係などの趣味を詰め込んだブログにしたいです。

4267000_s

自然言語処理関連のソフトを作る機会があり、最近のメジャーな日本語自然言語処理ライブラリとしてGiNZAというものがあるという話を聞いたので試しに使ってみました。


GiNZAとは


GiNZAとはリクルートが国立国語研究所との共同研究成果をもとに開発した日本語自然言語処理ライブ来です。

形態素解析器であるSudachiPyと機械学習部分であるspaCyを合わせたライブラリのようです。

特徴は従来のspaCyは日本語に対してはMeCabをバックエンドに形態素解析ができる程度でした。

しかし。GiNZAの登場により最先端の機械学習技術を用いた日本語自然言語処理が簡単にできるようになったようです。



GiNZAのインストール


今回は2021年9月現在GiNZAの最新バージョンであるGiNZA v5.0をインストールしていきます。

GiNZA v5はインストール時に解析モデルのパッケージを指定する必要があるようで、解析度重視の場合は以下のコマンドでインストールしましょう。

pip install -U ginza ja-ginza-electra

速度重視の場合は以下のコマンドでインストールしてください。

pip install -U ginza ja-ginza

両方使い分けたい場合は、両コマンドとも実行してください。

インストールができたら動作を確認してみましょう。

ginza
すもももももももものうち。

# text = すもももももももものうち。
1       すもも  すもも  NOUN    名詞-普通名詞-一般      _       3       nsubj   _       SpaceAfter=No|BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|NP_B|Reading=スモモ|NE=B-OTHERS|ENE=B-Flora
2       も      も      ADP     助詞-係助詞     _       1       case    _       SpaceAfter=No|BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|Reading=モ
3       もも    もも    NOUN    名詞-普通名詞-一般      _       5       nsubj   _       SpaceAfter=No|BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|NP_B|Reading=モモ|NE=B-OTHERS|ENE=B-Animal_Part
4       も      も      ADP     助詞-係助詞     _       3       case    _       SpaceAfter=No|BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|Reading=モ
5       もも    もも    NOUN    名詞-普通名詞-一般      _       7       nmod    _       SpaceAfter=No|BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|NP_B|Reading=モモ|NE=B-OTHERS|ENE=B-Color_Other
6       の      の      ADP     助詞-格助詞     _       5       case    _       SpaceAfter=No|BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|Reading=ノ
7       うち    うち    NOUN    名詞-普通名詞-副詞可能  _       0       root    _       SpaceAfter=No|BunsetuBILabel=B|BunsetuPositionType=ROOT|NP_B|Reading=ウチ
8       。      。      PUNCT   補助記号-句点   _       7       punct   _       SpaceAfter=No|BunsetuBILabel=I|BunsetuPositionType=CONT|Reading=。




PythonでGiNZAを操作する


インストールができたろころでPythonでGiNZAを操作していきましょう。

1.文境界解析


文境界解析は文章から文の境界を検出する処理です。

import spacy

nlp = spacy.load('ja_ginza_electra')
doc = nlp('銀座でランチをご一緒しましょう今度の日曜日はどうですか。')

# 文境界解析
for sent in doc.sents:
    print(sent)

銀座でランチをご一緒しましょう
今度の日曜日はどうですか。

"。"がなくても文の境界が判断できていますね。


2.形態素解析


形態素解析は文章を単語に分割すると同時に単語の品詞などを推測する処理です。

import spacy

nlp = spacy.load('ja_ginza_electra')
doc = nlp('銀座でランチをご一緒しましょう。')
for sent in doc.sents:
    for token in sent:
        print(token.i, token.orth_, token.lemma_, token.pos_, token.tag_, token.dep_, token.head.i)
    print('EOS')

0 銀座 銀座 PROPN 名詞-固有名詞-地名-一般 obl 5
1 で で ADP 助詞-格助詞 case 0
2 ランチ ランチ NOUN 名詞-普通名詞-一般 obj 5
3 を を ADP 助詞-格助詞 case 2
4 ご ご NOUN 接頭辞 compound 5
5 一緒 一緒 VERB 名詞-普通名詞-サ変可能 ROOT 5
6 し する AUX 動詞-非自立可能 aux 5
7 ましょう ます AUX 助動詞 aux 5
8 。 。 PUNCT 補助記号-句点 punct 5
EOS






3.係り受け解析


係り受け解析は単語間の関係を解析する処理です。

以下のサンプルは係り受け木をSVG形式で保存しています。

# -*- coding: utf-8 -*-
# 文境界解析

import spacy
from spacy import displacy
from pathlib import Path

nlp = spacy.load('ja_ginza_electra')
doc = nlp("銀座でランチをご一緒しましょう。")
for sent in doc.sents:
    svg = displacy.render(sentstyle="dep")
    file_name = "kakari.svg"
    output_path = Path("./" + file_name)
    output_path.open("w"encoding="utf-8").write(svg)

キャプチャ


4.固有表現抽出


固有表現抽出は国名、人名などの固有表現を抽出する処理です。

import spacy
from spacy import displacy

nlp = spacy.load('ja_ginza_electra')
doc = nlp("山田さんと銀座でランチをご一緒しましょう。")
for ent in doc.ents:
   print(
       ent.text+','# テキスト
       ent.label_+','# ラベル
       str(ent.start_char)+','# 開始位置
       str(ent.end_char)) # 終了位置

山田,Person,0,2
さん,Title_Other,2,4
銀座,City,5,7



5.単語の分散表現


GiNZAでは学習済みの単語分散表現(word2vec)も使用できるみたいです。

分散表現は300次元ですが今回は最初の2次元だけ表示します。分散表現が学習されていない単語はALL 0になるみたいですね。

また、L2ノルムも取得することができます。

分散表現はja_ginza_electraでは学習済みモデルがないみたいなので、ja_ginzaを使用しています。

import spacy

nlp = spacy.load('ja_ginza')  
doc = nlp("銀座でランチをご一緒しましょう。")
for token in doc:
    print(token.text, token.vector[:2], token.has_vector, token.vector_norm)

銀座 [ 0.55935055 -0.02516028True 3.8992517
で [-0.09195102 -0.10327693True 1.8796002
ランチ [ 0.23565347 -0.08456942True 3.8218849
を [-0.19509408 -0.13202968True 2.0958433
ご [0.33537257 0.21526141True 2.8017106
一緒 [-0.1381576  -0.10699644True 2.5291438
し [ 0.00739705 -0.32393304True 2.2611105
ましょう [0. 0.] False 0.0
。 [ 0.12551211 -0.1708449 ] True 2.4466825

また、以下のように書くことで文のベクトル表現なども簡単に表現できます(各単語のベクトルを足して平均を求めている)。

import spacy

nlp = spacy.load('ja_ginza')  
doc = nlp("銀座でランチをご一緒しましょう。")
print(doc.vector[:2]) 

0.09312034 -0.08128325]





まとめ


GiNZAの基本的な処理について一通り触れてみましたが正直むちゃくちゃ便利です。

spaCyに関する知識が少ないのでGiNZAを有効活用できるようにそのあたりも勉強していこうと思います。





以前、OpenCVを使って顔認識をしたのですが、dlibというライブラリを使うと顔の細かいパーツのランドマークが検出できると聞いたので試しに動かしてみました。




dlibのインストール


まずは事前準備をしていきます。

dlibのインストールは以下のコマンドで行うことができます。

pip install dlib

dlibのインストールができたら、dlibの公式サイトから学習済みモデルをダウンロードしましょう。



「shape_predictor_68_face_landmarks.dat.bz2 」というファイルが顔から68個のランドマークを検出する学習済みモデルです。

また、上記の物の他に処理が軽い学習済みモデルとし「shape_predictor_5_face_landmarks.dat.bz2 」という顔から68個のランドマークを検出するモデルがあります。

今回は「shape_predictor_68_face_landmarks.dat.bz2 」を使用していきます。





写真から顔のランドマークを検出する


dlibの準備ができたところで顔のランドマークを検出してみましょう。

今回学習済みモデルは実行ファイルと同じパスにおいています。

import dlib
from imutils import face_utils
import cv2

# 顔検出ツールの呼び出し
faceDetector = dlib.get_frontal_face_detector()

# 顔のランドマーク検出ツールの呼び出し
facePredictor = dlib.shape_predictor('shape_predictor_5_face_landmarks.dat')

# 検出対象の画像の呼び込み
img = cv2.imread('検出したい画像のパス')

# 顔検出
faces = faceDetector(img1)

# 検出した全顔に対して処理
for face in faces:
    # 顔のランドマーク検出
    landmark = facePredictor(imgface)
    # 処理高速化のためランドマーク群をNumPy配列に変換(必須)
    landmark = face_utils.shape_to_np(landmark)

    # ランドマーク描画
    for (i, (xy)) in enumerate(landmark):
        cv2.circle(img, (xy), 1, (25500), -1)

# 顔検出ファイルを出力
cv2.imwrite("dLibSample-output.PNG"img)

以下の画像を今回は入れてみました。

woman-1274056_1280

分かりにくいので顔部分をアップしますが確かにランドマークが検出されていますね。

キャプチャ

顔のランドマークの番号は以下のように1~68番まで割り当てられているみたいです。

figure_68_markup

https://ibug.doc.ic.ac.uk/resources/facial-point-annotations/より


ちなみに「shape_predictor_5_face_landmarks.dat.bz2 」のモデルを使用した場合は以下のような出力になりました。

キャプチャ



まとめ


dlibを使って顔のランドマークを検出してみました。

ランドマーク検出って論文など見ていたら難しそうだというイメージがあったのですが今はこんなに便利なライブラリがあるんですね。

せっかくだからこのdlibを使ってなにかおもしろいソフトを作ってみたいですね。

OpenCVではうまくいかなかったface swapでも試してみようかな。






4267000_s

今回はPythonとOpenCVを使って写真の顔部分に自動的にモザイクをつけていきます。

これができればブログを書くときにモザイクをかける手間が減って便利そうです。


顔認識するプログラム


まずはモザイクをかける部分を決めるために顔認識を行うプログラムを作ってみます。

OpenCVには顔認識用の学習済みのカスケードファイルがあるのでそちらを使っていきます。

カスケードファイルは環境にもよりますがAnacondaを使っている場合、

~\Anaconda3\\envs\\python3.6\\Lib\\site-packages\\cv2\\data

の中に顔を認識させるものや目を認識させるものなどが入っています。

今回は、haarcascade_frontalface_alt.xmlというファイルを使います。

顔認識を行うサンプルプログラムは以下の通りです。

import cv2
import sys

# 識別したい画像を読み込む
imageFile = "画像ファイル名"
image = cv2.imread(imageFile)
imageGs = cv2.cvtColor(imagecv2.COLOR_BGR2GRAY)

# 顔認識ファイルを読み込む
cascadeFile = "~\\Anaconda3\\envs\\python3.6\\Lib\\site-packages\\cv2\\data\\haarcascade_frontalface_alt.xml"
cascade = cv2.CascadeClassifier(cascadeFile)

# 顔認識を実行
faces = cascade.detectMultiScale(
    imageGs,
    scaleFactor=1.1,
    minNeighbors=1,
    minSize=(150150)
)

if len(faces) > 0:
    # 顔部分を赤枠で囲む
    color = (00255)
    for face in faces:
        xywh = face
        cv2.rectangle(image, (xy), (x+wy+h), colorthickness=8)
    cv2.imwrite("facedetect-output1.PNG"image)
else:
    print("No Face")

OpenCVのカスケードファイルは白黒画像に対してのみ顔認識を行うことができるため、一度画像をグレースケールに変換しています。

以下の画像を入力として与えると、

woman-1274056_1280

以下のように顔周りが赤枠で囲われた画像が出力されています。

facedetect-output1

画像を見て分かる通り顔認識ができていますね。





顔にモザイクをかける


次に顔にモザイクをかけていきます。

先ほど赤枠で囲っていた領域内にモザイクをかけるように先ほどのプログラムを改造していきましょう。

if len(faces) > 0:

以降の顔を赤枠で囲っていた処理を以下のように変えてください。

    # 顔部分にモザイクをかける
    mosaic_rate = 30
    for(xywhin faces:
        # 顔を切り抜く
        face = image[y:y+hx:x+w]
        # モザイクをかける
        face = cv2.resize(face, (w//mosaic_rateh//mosaic_rate))
        face = cv2.resize(face, (wh), interpolation=cv2.INTER_AREA)
        # 元の画像に張り付ける
        image[y:y+hx:x+w] = face
    cv2.imwrite("facedetect-output2.PNG"image)

モザイクをかける処理はコードを見て分かる通り、元画像を縮小した後に元の大きさにもどしてモザイクをかけています。

mosaic_rateの値が大きいほどモザイクが荒く、小さいほど細かくなります。

mosai_rateが30の場合は以下のような画像が出力されます。

facedetect-output2




まとめ


顔認識って難しいのかなとか思っていたのですがOpenCVを使えば簡単に実装することができました。

この機会にOpenCVの顔認識を使って色々と遊んでみようと思います。






Raspberry Piを使って定点カメラを作ってみました。

コマンドで定点カメラを使っても良かったのですが今後Pythonを使って色々やっていきたいと思っていたので今回はPythonを使って定点カメラを作っています。

カメラモジュールは『Raspberry Pi カメラモジュール v2』を使用しています。





Pythonで写真を撮る


ラズパイでPythonを使って写真を撮るのにはPiCameraというライブラリを使用します。

以下のコードでは5秒間カメラのプレビュー画面が表示されます。

from picamera import PiCamera
from time import sleep

camera = PiCamera()
camera.start_preview()
sleep(5)
camera.stop_preview()

実際に写真を撮るのにはPiCamera().caputureメソッドをコールします

また、とりたい写真のサイズをPiCamera().resolutionメソッドで設定することができます。

以下のコードの場合、プログラム起動して5秒後に写真が撮影されデスクトップにimage.pngという1920×1080のファイルが保存されます。

from picamera import PiCamera
from time import sleep

camera = PiCamera()
camera.resolution = (19201080)
camera.start_preview()
sleep(5)
camera.capture("/home/pi/Desktop/image.png")
camera.stop_preview()






定点カメラを作成する


写真の撮り方が分かったところで定点カメラを作成していきましょう。

今回は、5分に1回写真を撮るようにしていきます。

from picamera import PiCamera
from time import sleep
import datetime

camera = PiCamera()
camera.resolution = (19201080)
camera.start_preview()

while(True):
    sleep(300# 300秒待機
    camera.capture("/home/pi/Desktop/Image.png")

上記のコードで5分に1回写真を撮るという要件は満たせたのですが、このままだと同じファイルに写真が上書きして保存されてしまいます。

そこでファイル名をユニークな名前にするために今回は、ファイル名に現在時刻を付けていきます。

sleepの後を以下のように改造してください。

now = datetime.datetime.now()
filename = '/home/pi/Desktop/Image/' + now.strftime('%Y%m%d_%H%M%S') + '.png'
camera.capture(filename)

これで写真を撮るたびに別のファイル名がつくようになりました。

定点カメラの完成です。



まとめ


今回はラズパイ + Pythonで簡単な定点カメラを作ってみました。

写真を撮る頻度など対象によって変えていったら面白そうですね。





PXL_20210909_122156338

七月隆文さんの『100万回生きたきみ』を読みました。

七月さんらしいロマンティックな作品で良かったです。

以下、あらすじと感想になります。


『100万回生きたきみ』のあらすじ


美桜はこれまで100万回前世の記憶を持ちながら生まれ変わってきた。

最初のころは生まれ変われることを楽しんでいたが、次第に美桜の心はすさんでいった。

100万回目の人生を体験している今は女子高生と行きながら終わらぬ命に心が枯れた結果、誰にでも体を許す女になっていた。

そんな彼女が今回の人生に絶望し自殺しようとしたとき、同級生で幼馴染の光太に救われた。

光太に救われた瞬間、光太に恋した美桜は誰にでも体を許していたことを後悔し、気を失っていった…。


そんな美桜を助けた光太も実は100万回あらゆる人生を体験してきた人間だった。

光太と美桜は2500年前、実はフランス郊外のケルト地方で出会っていた。

光太の当時の名は武勇で国中に名をはせていたタラニス。

美桜の当時の名は吟遊詩人のミアン。

二人は2500年前にも恋していた。

100万回生まれ変わってきた二人が再び出会い恋に落ちた、一途な恋の物語。

二人の運命はどうなるのだろうか。



感想(ネタバレあり)

呪いの正体


女神の呪いの正体が実はハルカだと分かったとき、思わず「マジか…」と一人で呟いし舞うほど衝撃的でした。

ハルカはこれまでタラニスが過ごしてきた人生にある時は蝶として、ある時は鳥としてずっとずっとタラニスと一緒にいました。

ハルカはタラニスのことを心から愛していました。

そんなハルカがタラニスの話を聞いて自分の正体が呪いだと気づいたときはどのような気持ちだったのだろうか…。

ハルカは最終的に大好きなタラニスとミアンの幸せを祈って消えていきましたが、ハルカにも幸せになってもらいたかった。

呪いがなくなっても一人の人間として最後までタラニスとミアンの側にいることができればよかったのに。

読んでいて呪いをかけてハルカという存在を生み出した女神がにくく感じてしまいました。





100万回目の奇跡的な再会


タラニスはミアンと再会するまで100万回の生死を体験してきましたが、その辛さは尋常ではないと思います。

ミアンは美桜としてタラニスと再会した後にタラニスの呪いを解くために同じ人生を繰り返しますが、タラニスほど精神が強くなく最終的には精神が崩壊してしまいました。

そのようすからもタラニスの精神が以下に強く、そしてどれだけミアンのことを愛していたのかが伝わってきます。

生き返るたびにミアンに出会えなかった悲しさと、それでもミアンを探し続けるタラニスの切なさを考えると100万1回目の人生でミアンに再び出会えたときの衝撃は凄まじいものだったんでしょうね。

どんなロマンティック小説よりも、再会の瞬間はロマンティックに描かれている作品でした。


100万回という数字に違和感


本作が100万回記憶をなくさずに生まれ変わってきたというロマンチック小説だということは分かっているのですがどうしても100万回という数字に違和感を感じてしまいました。

光太がタラニスとして生きていた時代は2500年前でした。

そこから100万回生死を繰り返していたとするとうるう年など気にせずに単純な計算になりますが0.9125日に一度は死んでいた計算になります。

そう考えると100万回という数字に違和感を感じてしまい、物語序盤からずっと引っかかっていました。

きりがよくてロマンティックだから100万にしたのかもしれませんが現実的なことを考えると1000とかにしてほしかったですね…。

タイトルに違和感を感じていたこともあり少しだけ感動が薄れてしまいました。



まとめ


現実的な恋愛小説も面白いですが、たまには非現実的でぶっ飛んでいる恋愛小説だからこそ感じられるロマンティックを体験するのも悪くないですね。

久しぶりに七月さんの別の作品を読み返したくなった。






Raspberry Piで定点カメラを作りたいと思いAmazonで『Raspberry Pi Camera V2』を買いました。

今回はこちらのカメラでコマンドを使って写真と動画を撮る方法を紹介していきます。


『Raspberry Pi Camera V2』のスペック


『Raspberry Pi Camera V2』のスペックは以下の通りです。

Raspberry Pi Camera Module V2
センサーソニー製IMX219PQ(1/4inch)
ピクセルサイズ1.12μm
画素数有効808万画素
静止画最大3280×2464ピクセル
動画1080p 60fps/720p 180fps
サイズ23.86 × 25 × 9 mm

4766円で購入できる小型カメラと考えればかなりスペックが高いです。

後ほどV2で撮った写真がどんなものなのかも紹介していきます。



カメラモジュールを接続する


写真や動画を撮る前にRaspberry Piにカメラモジュールを取り付けていきます。

今回はRaspberry Pi 4 Module Bを使っていきますが、他のモデルでも接続の方法などは基本的に同じです。

カメラモジュールは以下の画像の赤丸の部分に取り付けていきます。

PXL_20210907_133814272

カメラモジュールを取り付ける前に黒い部分を持ち上げてください。

カメラモジュールは以下の向きで取り付けます。

PXL_20210907_134414501

カメラモジュールが起動できたらRaspberry Piを起動して、カメラモジュールを認識させます。

Raspberry Piの設定画面を開き、

Screenshot_20210907_225708

カメラの設定を有効にして、OKをクリックします。

Screenshot_20210907_230138

その後再起動を求められるので再起動してください。



写真を撮る


カメラを取り付けられたところで写真を撮っていきましょう。

写真は以下のコマンドで撮ることができます。

raspistill -o ファイル名

ちなみにとれた画像は以下です。

test

カメラ固定せずに撮影したわりにはなかなかきれいです。

raspistillコマンドで個人的に覚えていたら便利だと思うコマンドを以下にのせておきます。

raspistill
-?ヘルプの表示
-w画像の幅の指定
-h画像の高さの指定
-qjpeg品質を設定(0 - 100)
-o出力ファイル名
-t撮影までの時間(ミリ秒)
-dデモモード
-eエンコード方式指定(jpg, bmp, gif, png)
-tlこま撮り(ミリ秒で指定した感覚で連続撮影)






動画を撮る


写真がとれたところで次に動画を撮影していきます。

動画は以下のコマンドで撮ることができます。

raspivid -o ファイル名 -t 撮影時間

ライブドアブログの仕様上撮影した動画を載せられないのですが、動画の方も思ったよりもきれいに撮れていて個人的には満足しています。

raspividコマンドで個人的に覚えていたら便利だと思うコマンドを以下にのせておきます。

raspivid
-?ヘルプの表示
-t撮影時間の指定(ミリ秒)
-fpsフレームレート
-kEnterキーでキャプチャと一時停止を切り替え
-o出力ファイル名
cdコーデック指定(H264, MJPEG)
-w動画の幅の指定
-h動画の高さの指定




まとめ


『Raspberry Pi カメラモジュール v2』の基本的な使い方についてまとめていきました。

次はPythonからカメラモジュールを使用する方法など調べていきたいです。




PXL_20210905_013736109

横関大さんの『わんダフル・デイズ』を読みました。

小説を読みながら盲導犬についての知識が吸収できる本で非常に勉強になりました。

今まで知らなかった盲導犬に関する事実を知ることができて良かったです。

以下、あらすじと感想になります。


『わんダフル・デイズ』のあらすじ


主人公は盲導犬訓練センターに勤務し始めたばかりの新人指導員である歩美。

盲導犬訓練センターで働き始めて三か月、優秀な盲導犬の指導員になることを志し午前中に座学を受け、午後にセンターの掃除を行うという生活を送っていた。

そんな歩美にとうとう指導員が着いた。

歩美の指導員となる男の名前は阿久津。

阿久津は指導員としては優秀でこれまで多くの盲導犬を指導してきたが、その反面人とのコミュニケーションが苦手なようだ。

そんな彼女らがある日、盲導犬であるジャックのパートナーから最近ジャックの調子が悪いという相談を受けた。

ジャックの不調の原因を調査していた二人はある事実に気づく…。

明るい歩美と人が苦手な阿久津の性格が全然違う凹凸コンビが送る、盲導犬×ミステリー小説。



感想(ネタバレあり)


盲導犬について知らなかった様々な事実


『わんダフル・デイズ』を読んで盲導犬の存在は小学生のころから知っているが、知らない事実がたくさんあったことに気づかされました。

まず第一話の『パピーウォーカー』を読んでいて、タイトルのパピーウォーカーという存在を知りませんでした。

引退した盲導犬を一般家庭で引き取るという制度があるのは知っていたのですが、将来的に盲導犬になる子犬を一年間ほど預かるパピーウォーカーという制度があるのは知りませんでした。

てっきり盲導犬って子犬のころから指導センターで将来盲導犬になるために育てられていると思っていました…。


また、盲導犬っていう存在は知っていたけど実際に見ることってほとんどないなとは思っていたのですが、需要に供給が追い付いていなかったんですね。

盲導犬指導員の人数にも限りがあるし、本当に優秀な犬しか盲導犬になれないという事実を考えると仕方ないのかもしれません。

ただ、視覚障害者の人で盲導犬を求める人が多いのは事実なので盲導犬をできる限り多く輩出できるように国全体で取り組みが必要なんだろうなという風に感じました。

本作ではこのほかにも盲導犬の行動原理や利口さが分かるシーンがたくさんあり盲導犬について色々と知ることができました。





歩美と阿久津の凹凸コンビ


最初は盲導犬を育てることがメインの物語だと思っていたらまさかの推理物で意外でした。

元気な歩美と推理力抜群で寡黙な阿久津というミステリーあるあるのコンビだったのですが、凹凸コンビでありながらもどこか相性のいい感じもあり読んでいてすごくほっこりしました。

歩美のとにかく明るいキャラクターは読んでいて気持ちが暗くなる物語があるなかで明るい気持ちになれました。

また、新米指導員ということもあり盲導犬にあまり詳しくない読者が共感しやすいような人物に仕上がっていたのもよかったです。

一方、阿久津は人とはコミュニケーションをとるのが下手だが、犬とのコミュニケーションをとるのは誰よりも得意だという様子から犬への愛を感じられるキャラになっていてました。

歩美にとっても指導員だけど読者からしても盲導犬に関する様々なことを教えてくれる先生的なキャラで物語を楽しみながらも盲導犬の知識が入りやすいようになっていてよかったです。



ただ、この二人のコンビに関して物語を読んでいてその演出いるのかなと思う部分が二つありました。

一つ目は歩美と阿久津がやたら美男美女と言われていることについてです。

盲導犬メインの作品なので別に指導員の二人がどんな顔していてもいいだろと読んでいて感じてしまいました。

二つ目は、歩美と阿久津がやたらと昭和のオヤジギャグを連発していたことです。

歩美の祖父が大好きだったことを強調したいのかもしれませんが、使うにしても使用頻度を減らしてほしかったですね。

いいシーンでオヤジギャグがとんでくると横やりが入ったような気がするんですよね…。

なんか映像化を狙いすぎて二人のキャラを濃く作りすぎているなという風に感じました。



まとめ


『わんダフル・デイズ』は盲導犬の現状を読者に教えてくれるいい作品でした。

少しミステリー要素が多いようにも感じましたが、盲導犬の知識ばかり詰め込むのとはちがい飽きずに読める工夫だと考えるといい作品でした。

この作品を読んで私ももっと盲導犬について詳しくなりたいなと感じたので、未読の方はぜひ読んでみてください。







IMG_20200711_170405


喜多喜久さんの『ビギナーズ・ラボ』を読みました。

本書は研究者ってかっこいいなと感じさせられる本でした。

以下、あらすじと感想を書いていきます。



【目次】
あらすじ
感想
最後に




『ビギナーズ・ラボ』のあらすじ


主人公は旭日製薬で総務として働く水田恵輔。

休日に祖父がいる老人ホームに訪れた際、千夏に出会い恋に落ちる。しかし、彼女は治療薬が存在しない難病、「ラルフ病」に侵されていた。

恵輔は千夏を救いたい一心で、創薬素人でありながら、ラルフ病の治療薬を開発するという無謀な挑戦を始める。

恵輔はラルフ病の治療薬を完成させることができるのか…。



感想(ネタバレあり)


『ビギナーズ・ラボ』を読んで主人公である恵輔の好きな人を救うためにラルフ病の治療薬を作りたいという想いに感動させられました。

老人ホームで出会った千夏に恋をしたことをきっけに、今までと全く違う仕事である創薬に挑戦しようという志がすごくかっこよかったです。

普通の人なら誰かが作ってくれるだろうと考えて、自分で創薬すればいいなんでいう考えが出てこないんだろうな。

もちろん恵輔のようにやる気を持っているだけで成功する可能性があるかどうかは分かりませんが、誰かのために何かを作りたいという強い意志を持って仕事をすることってすごく大切だと感じました。

また、やる気を維持するためにはそのものを作ることで誰が喜ぶかという、喜ぶ対象を具体的に考えることも大切であると学びました。

本書を参考に私もお金のために機械的に仕事をするのではなく、自分の仕事をすることで誰かの役に立つということを意識しながら働いていきたいです。



本書を読むことで製薬の現場がどんな感じなのかを知ることができたのも良かったです(製薬現場の人からしたら全然違うよという意見もあるかもしれないが…)。

また、『ビギナーズラボ』をとおして会社で研究を行うということは慈善事業ではないということを改めて理解しました。

創薬も費用が掛からず慈善事業で行うことができるのなら、患者数が少ない病気に対する治療薬を開発する会社も増えるのかもしれません。

しかし、会社として生きていくためには儲けることが大切なので糖尿病のような患者数が多い病気の治療薬を優先して開発していくことが大切なんだろうな。

企業の研究者として生きている人たちはこういったジレンマにとらわれてすごく大変そうですね。

ただ、近年は希少疾患に関する薬を作ることで儲かるような仕組みもできているみたいなので以前よりもましなのかな(希少疾患の治療薬は高価なので患者側に負担がかかるという欠点はあるが…)。





最後に


現在、新型コロナウイルスが世界中で流行っているが、製薬現場の人たちは少しでも早く治療薬を完成させるために『ビギナーズ・ラボ』に出てきたような苦労をしているのだろう。

そんな今だからこそぜひ製薬現場の苦労を知ることができる本書をぜひ読んでもらいたいです。







DSC_3791


まもなく映画が公開される、西加奈子さんの『まく子』が文庫化されたので読んでみました。

読み始めは自分にはあまり会わない本かと思ったのですが、主人公である慧の思いを理解していくにつれてどんどん引き込まれていってしまいました。

西加奈子さんの作品をいくつか読んでいるのですが、やっぱりどの作品を読んでも心理描写が上手だと思わされる作家さんですね。

以下、簡単に感想をまとめていきます。ネタバレも含まれますので未読の方は注意してください。


西加奈子『まく子』の感想


大人になると失ってしまうもの


主人公の慧は、小学五年生になり子どもと大人の狭間にいる少年で、周りの女子や自分の体が変化していくことを感じて大人になっていくことを恐れています。

ただ大人になるのを恐れている反面、自分より年下の子どもを子どもっぽいと思ったり、すでに年齢的には大人であるにに大人になりきれていないドノを軽蔑していたりと大人になり切れないのも嫌だと思いを持っています。

本作は、そんな慧の子どもから大人に変化するまでの心理をうまく描いている作品で、子どもから大人になる際に「純粋な気持ち」を失ってしまうことがいくつか描かれていました。

純粋な気持ちの一つに「人を信じる気持ち」があります。

まだ小学1年生だったころの慧たちは、一つ年上の類(ルイ)の言ったこと(UFOを見たなど)を何でも信じていました。しかしある日、類の言っていることは嘘ばかりだと気が付いてしまいます。その日を境に慧たちは誰も類の言うことを信じなくなると同時に「人を信じる気持ち」を失いました。

もちろん、大人になり社会にでると全ての人間を信用するわけにはいきません。ただそれでも、人を信じる気持ちというのは失っていいものなのでしょうか。

物語中のドノのセリフに以下のようなものがあります。
「誰かが言うことを、俺は信じるし。それは嘘だって責める前に、どうせ嘘なんだしとかじゃなくって、俺は言葉通り、そのまま受け止めたいんだし。類が虎を見たって言うなら、それを信じるし、状況なんて関係ないし。そいつがそう信じてほしいことを、俺はし、信じるし。」
 西加奈子『まく子』p177 より
ドノは大人になり切れない反面、人を信じる純粋な気持ちを失っていませんでした。大人になり物事を合理的に考えるもの大切かもしれませんがこのようなことを忘れずに成長するのも大切なのかもしれません。

『まく子』を読んだことで失っていた様々なものを思い出せた気がします。




コズエの正体


コズエの正体は最終的に本当に宇宙人であるということが分かりました。

転校してきたしばらく後に慧に「私は宇宙人だ」とつげたコズエの正体ですが、私も物語序盤では慧とどうように冗談で宇宙人と言っているだけだと思っていましたが、物語が進むにつれて少しずつ本当に宇宙人かもしれないと思わされました。

物語序盤ではほとんど無表情であったのに、物語が進むと笑ったりする喜びの感情が芽生えてきました。その結果、いつも常盤城で行っている撒く行為の楽しさを慧に語ったりして人間らしさが増すのを感じさせられました。どんどん人間らしくなる様子が逆に不自然に感じて、宇宙人かもしれないという疑念を持たせます。

また周りの子どもたちがどんどん大人びていくのに対して、コズエはどんどん純粋さを取り戻して子どもに近づいて行っているような感じがしました。西加奈子さんがこういうことを意識して書いたのかは分からないが、こういった様子が人間になりたての宇宙人だという話に真実味を持たせました。

コズエは宇宙に帰る前も、常盤城で砂利を撒くように、自分という存在がいたことを忘れさせないため自身の魂を撒いていきました。本当に『まく子』というタイトルにマッチしている少女でした。


放火犯の正体


作中では、放火犯の候補としてドノや慧の父の浮気相手だったチカがいましたが、本当の犯人はコズエが去った後に慧と同じクラスに転入してきたソラでした。

ソラは母の希望により引っ越すことになりましたが、同級生と別れるのが嫌で引っ越し先で家事が起きれば引っ越しが中止になると考え、祭りの日に慧たちの住んでいる土地に訪れたときに放火を行いました。結果的に引っ越しは中止にはなりませんでしたが、慧たちならコズエと出会った経験を活かしてソラに引っ越してきて良かったという思いを芽生えさせることができるでしょう。



最後に


『まく子』はこのブログでは語り切れないほどの魅力いっぱいの作品なので未読の方は読んでみてください。

もうすぐ映画が公開されますが、小説との違いを確認するために見に行けそうだったら行きたいな…。



DSC_3787


池井戸潤さんの下町ロケットシリーズの第二弾となる『下町ロケット2 ガウディ計画』を読みました。ガウディ計画も前作以上に面白かったです。

シリーズものとなると、第一弾が最も面白くその後失速していく作品が多いイメージがあるのですが、池井戸潤さんの作品はシリーズものでもそういうことが起きず、逆にシリーズを重ねていく毎にパワーアップするという印象があります。

以下感想を書いていきます。ネタバレもあるので未読の方はご注意ください。


『下町ロケット ガウディ計画』の感想

佃製作所 VS サヤマ製作所


前作では佃製作所の敵は大企業のみでしたが、こんさくでは打って変わって、佃製作所と同じ中小企業である「サヤマ製作所」がライバルとして出現しました。サヤマ製作所の社長の椎名が二代目であるため、佃製作所と被っている面もあるので王道のライバルという感じがします。

しかしただの王道のライバル展開というわけではありませんでした。どちらがより良い製品を作るかだけで競っているのならば王道なんですが、椎名は佃と違いNASA時代の人脈や経験を活かして大企業への裏回しを上手くこなしていくなかなかの野心家です。

物語冒頭で、一度は日本クラインから佃製作所が人工心臓のバルブの設計を量産前提で受けたのですが、椎名の根回しがありその仕事は結局サヤマ製作所に盗られてしまいます。また、新規開拓の仕事だけではなく、前作で帝国重工に納品したロケットのバルブの更新時期が近いということでその仕事も奪ってやろうと裏で手をまわしていきます。

また椎名は佃製作所から仕事を盗るだけではなく、バルブの設計者として佃製作所で若手の有望株である中里を引き抜いてしまいます。佃航平にとって仕事を盗られたこと以上に部下を引き抜かれたことが屈辱的でした。

これまでの様子から考えると椎名が率いるサヤマ製作所には穴がないように思えますが、そんなサヤマ製作所にも隙がありました。それはベンチャー気質であるがゆえの部下との結びつきの弱さです。

椎名は仕事ができる人間には手厚い待遇をもうけるが、できない人間には厳しかったこともありけっきょく部下からサヤマ製作所の不正がもれてしまいます。まあ、部下から漏れる以前に不正をするのはどうかと思うのですが、椎名の野心家であるからこそ起きたことのような気がしますね。

最終的に、佃製作所は、一度は帝国重工のロケットバルブの仕事を盗られてしまいますが、無事取り戻すことができました。

世の中、真面目な人間が馬鹿を見るような世界かもしれませんが、本書では真面目にものづくりに取り組んでいた人間がいつかは報われるということが証明されました。

実際の仕事の世界でも佃製作所の人々のように真摯にものづくりをしている人間ばかりになってほしいですね。




人の命を救うものづくりの力


私は本書のテーマの一つに「人の命を救うものづくり」というものがあると思います。

本作ではロケットに関する話も出てくるのですが、それ以上に人工心臓や人工弁といった医療機器の開発が物語のメインとなっています。

立花と加納が血栓が詰まりにくい人工弁のために新型バルブを開発しようとしますが、最初はなかなか上手くいきませんでした。悩んだ二人は実際に医療現場に足を運び人工弁を必要とする子どもを見たり、手術の様子を見ることで新たなヒントややる気を取り戻しました。

また、ともに開発している桜田や一村も会社の利益や自分の名声のためではなく、病気で苦しんでいる子どもを救いたいという思いのみで開発を続けていきます。

最終的には血栓が詰まりにくいという問題だけではなく、人工弁をつけやすいように改良したことで手術時間を短縮することができ、子どもの体にも負担がかかりにくい人工弁の開発に成功しました。

もちろん会社が利益なしで仕事を行うというのがきれいごとなのは分かりますが、日本の社会でも本書のように行動に移すことができれば多くの人間を救うことのできる医療機器を開発できるのかもしれません。

ガウディ計画では、日本クラインの社員やアジア医療大学の貴船教授も自分たちの富や名声のために新型の人工心臓を開発しようとしてきました。ですが最終的に、なぜ自分が医療にたずさわりたいと思ったのか、それは多くの人を救うためだという真の医療にかける思いを取り戻すことができました。

法律など色々な問題があるかもしれまえんが人の命を救うことのできる人や道具が現実世界でも今よりさらに増えるといいですね。



最後に


ガウディ計画がすごくおもしろかったので次の『下町ロケット ゴースト』を読むのが楽しみです。またドラマもすごく面白いみたいなので原作と比べる意味もこめて見てみようかな。

まだ本書を読んでない方はぜひ一度お手に取ってみてください。




↑このページのトップヘ