スナックelve 本店

バツイチ40代女の日記です

いい感じじゃん!?

結果

f:id:elve:20220115154445p:plain
なかなかいい感じ。

きっかけ

snack.elve.club

学習させて保存するまで

snack.elve.club

tensorflowをローカルでうごごごごごご

TensorFlow は以下の 64 ビットシステムでテストおよびサポートされています。

Python 3.6~3.9
Ubuntu 16.04 以降
Windows 7 以降(C++ 再頒布可能パッケージをインストール済み)

TensorFlow

嫌な予感はしてたんスよ。うちのローカルpython3.10で動かねー!!!
Google Colabは3.7.12(2022/01/15時点)

3.7.12を入れよう・・・インストーラーがないよぅっぅぅぅ コンパイルする!? まじで!?

PythonWindows/3.7.12 at master · adang1345/PythonWindows · GitHub
怪しいところから落としましたw
pythonアンインストールして、↑のをインストールして
tensorflowを一旦全てアンインストールして・・・あーだこーだ悩みまくってなんとか動く環境にできました。Pillowも入れよう。
CUDA Toolkit 11.6 Downloads | NVIDIA Developerも入れたけどあんまり関係ないと思う(笑)

ソース

from asyncio.windows_events import NULL
import tensorflow as tf
from tensorflow.keras.preprocessing.image import img_to_array, load_img
from tensorflow.keras.models import model_from_json
import os
import numpy as np
import shutil
# 次回モデル読み込み
p = 'C:\\python\\'
# モデルを読み込む
model = model_from_json(open(p+'model.json').read())
# 学習結果を読み込む
model.load_weights(p + 'weights.h5')
# 読み込むもと
# C:\Users\user\OneDrive\画像\カメラ ロール\2021\11
# C:\Users\user\OneDrive\画像\カメラ ロール\2021\12
# C:\Users\user\OneDrive\画像\カメラ ロール\2022\1
# 移す先
# C:\Users\user\OneDrive\画像\スクリーンショット\ピクミン
validation_dir = 'C:\\Users\\user\\OneDrive\\画像\\カメラ ロール\\2021\\'
for i in range(11, 13):
# validation_dir = 'C:\\Users\\user\\OneDrive\\画像\\カメラ ロール\\2022\\'
# for i in range(1, 2):
    files = os.listdir(validation_dir + format(i, '0>2'))
    dpath = os.path.join(validation_dir, format(i, '0>2'))

    for f in files:
        if os.path.isdir(dpath+'\\'+f):
            continue

        if os.path.splitext(f)[1] != '.PNG' and os.path.splitext(f)[1] != '.png':
            continue

        img_path = os.path.join(dpath, f)

        img = img_to_array(load_img(img_path, target_size=(150, 150)))
        img_nad = img_to_array(img)/255
        img_nad = img_nad[None, ...]

        label = ['pic', 'etc']
        pred = model.predict(img_nad, batch_size=1, verbose=0)

        score = np.max(pred)
        pred_label = label[np.argmax(pred[0])]#これでpicかetcになると思ったら違った
        if score > 0.8:
            
            os.rename(
                img_path, "C:\\Users\\user\\OneDrive\\画像\\スクリーンショット\\ピクミン\\" + f)

参考

Tensorflow/Kerasのインストール方法(Windows、Mac編) | 西住工房
Pythonでコンパイルは可能なのか?やり方をまとめてみた | CodeCampus
【完全版】TensorFlowのインストール方法〜コマンド1発 - DeepAge
compileall --- Python ライブラリをバイトコンパイル — Python 3.10.0b2 ドキュメント
【Windows10】tgzファイルを解凍する方法 |Lhaplus (ラプラス) | EGUWEB(エグウェブ)
PythonWindows/3.7.12 at master · adang1345/PythonWindows · GitHub
can't import tensorflow.keras properly · Issue #26813 · tensorflow/tensorflow · GitHub
Keras のモデルと学習結果を保存して利用する - #m0t0k1ch1st0ry
Pythonでパス文字列からファイル名・フォルダ名・拡張子を取得、結合 | note.nkmk.me
自前の保存したモデルを用いて画像を分類してみる。 - Qiita
macOS で「this TensorFlow binary was not compiled to use: AVX2 FMA」エラー - Qiita
Tensowflow "Could not load dynamic libary 'cudart64_110.dll'; dlerror: cudart64_110.dll not found - Qiita
KERASで学習済みのモデルをロードして画像1枚を判別 - Qiita
pipコマンド - Qiita
Kerasに「PILが無い」と怒られた場合の対策 - Qiita
Kerasで「ImportError: Could not import PIL.Image. The use of `array_to_img` requires PIL.」とPILのエラーが出る - 機械音痴な情報系
How to install python on Windows without an MSI installer? - Stack Overflow
Tensorflowインストール時に" Could not find a version..."というエラーが出た時の対処法 - WICの中から
Tensorflowインストール時に" Could not find a version..."というエラーが出た時の対処法 - WICの中から
Python3.9 を 3.8 にダウングレードする | Delft スタック
Python | 数値を文字列に変換して文字列と連結する
Python 3.6.8(旧バージョン)のインストール(Windows 上)
Python 3.7 のインストール(Windows 上)
【Python】WindowsでPythonインストールしてもバージョンが出ない… Output48
Python Release Python 3.7.12 | Python.org
【Python if文の応用編】or・and・not演算子の使い方を理解しよう | 侍エンジニアブログ
【python入門】os.path.join()を活用してパス結合をしてみよう! | 侍エンジニアブログ
【2021年最新版】【Windows】Python3.10+TensorFlow2.6-GPU+CUDA11.4+cuDNN8.2を動かす【3】
pip での TensorFlow のインストール
TensorFlow
Image classification  |  TensorFlow Core

時よとまれ、お前は美しい

引き続き写経して心を落ち着けております。エルベです。

snack.elve.club
www.tensorflow.org

一応動いて、判別もできたんで学習結果だけダウンロードしてローカルで実行しようとしてはまってます。
google Pythonのバージョン3.7.12だったんだもん。
ワイのところはもう3.10~だったからさー(ノД`)ナェルシク もう開発一旦止まって!!(タイトル回収)

とりあえず現在動くコード
fit_generatorは使えなくなる予定らしいからなんとかしないとね(^_^;)

import tensorflow as tf

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Conv2D, Flatten, Dropout, MaxPooling2D
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.preprocessing.image import img_to_array, load_img
import os
import numpy as np
import matplotlib.pyplot as plt
train_dir = os.path.join("./drive/MyDrive/img/", 'train')
validation_dir = os.path.join("./drive/MyDrive/img/", 'validation')

train_pic_dir = os.path.join(train_dir, '学習用ピクミン画像')  # 学習用ピクミン画像
train_etc_dir = os.path.join(train_dir, '学習用その他')  # 学習用
validation_pic_dir = os.path.join(validation_dir, 'ピクミン')  # 検証用のピクミン
validation_etc_dir = os.path.join(validation_dir, 'その他')  # 検証用

num_pic_tr = len(os.listdir(train_pic_dir))
num_etc_tr = len(os.listdir(train_etc_dir))

num_pic_val = len(os.listdir(validation_pic_dir))
num_etc_val = len(os.listdir(validation_etc_dir))

total_train = num_pic_tr + num_etc_tr
total_val = num_pic_val + num_etc_val

print('total training cat images:', num_pic_tr)
print('total training dog images:', num_etc_tr)

print('total validation cat images:', num_pic_val)
print('total validation dog images:', num_etc_val)
print("--")
print("Total training images:", total_train)
print("Total validation images:", total_val)


batch_size = 128
epochs = 15
IMG_HEIGHT = 150
IMG_WIDTH = 150
train_image_generator = ImageDataGenerator(rescale=1./255) # 学習データのジェネレータ
validation_image_generator = ImageDataGenerator(rescale=1./255) # 検証データのジェネレータ

train_data_gen = train_image_generator.flow_from_directory(batch_size=batch_size,
                                                           directory=train_dir,
                                                           shuffle=True,
                                                           target_size=(IMG_HEIGHT, IMG_WIDTH),
                                                           class_mode='binary')
val_data_gen = validation_image_generator.flow_from_directory(batch_size=batch_size,
                                                              directory=validation_dir,
                                                              target_size=(IMG_HEIGHT, IMG_WIDTH),
                                                              class_mode='binary')

sample_training_images, _ = next(train_data_gen)
# この関数は、1行5列のグリッド形式で画像をプロットし、画像は各列に配置されます。
def plotImages(images_arr):
    fig, axes = plt.subplots(1, 5, figsize=(20,20))
    axes = axes.flatten()
    for img, ax in zip( images_arr, axes):
        ax.imshow(img)
        ax.axis('off')
    plt.tight_layout()
    plt.show()
plotImages(sample_training_images[:5])

model = Sequential([
    Conv2D(16, 3, padding='same', activation='relu', input_shape=(IMG_HEIGHT, IMG_WIDTH ,3)),
    MaxPooling2D(),
    Conv2D(32, 3, padding='same', activation='relu'),
    MaxPooling2D(),
    Conv2D(64, 3, padding='same', activation='relu'),
    MaxPooling2D(),
    Flatten(),
    Dense(512, activation='relu'),
    Dense(1, activation='sigmoid')
])
model.compile(optimizer='adam',
              loss='binary_crossentropy',
              metrics=['accuracy'])
model.summary()

history = model.fit_generator(
    train_data_gen,
    steps_per_epoch=total_train // batch_size,
    epochs=epochs,
    validation_data=val_data_gen,
    validation_steps=num_validation // batch_size
)

acc = history.history['accuracy']
val_acc = history.history['val_accuracy']

loss = history.history['loss']
val_loss = history.history['val_loss']

epochs_range = range(epochs)

plt.figure(figsize=(8, 8))
plt.subplot(1, 2, 1)
plt.plot(epochs_range, acc, label='Training Accuracy')
plt.plot(epochs_range, val_acc, label='Validation Accuracy')
plt.legend(loc='lower right')
plt.title('Training and Validation Accuracy')

plt.subplot(1, 2, 2)
plt.plot(epochs_range, loss, label='Training Loss')
plt.plot(epochs_range, val_loss, label='Validation Loss')
plt.legend(loc='upper right')
plt.title('Training and Validation Loss')
plt.show()

ここで
f:id:elve:20220115134321p:plain
こんな感じ。別に調整不要そうだけど写経を続ける(学習に反映させる前にハマった)

#水平反転
image_gen = ImageDataGenerator(rescale=1./255, horizontal_flip=True)

train_data_gen = image_gen.flow_from_directory(batch_size=batch_size,
                                               directory=train_dir,
                                               shuffle=True,
                                               target_size=(IMG_HEIGHT, IMG_WIDTH))
augmented_images = [train_data_gen[0][0][0] for i in range(5)]
# 上で学習用画像の可視化のために定義、使用されたおなじカスタムプロット関数を再利用する
plotImages(augmented_images)

#ランダムに左右45度の範囲で回転
image_gen = ImageDataGenerator(rescale=1./255, rotation_range=45)
train_data_gen = image_gen.flow_from_directory(batch_size=batch_size,
                                               directory=train_dir,
                                               shuffle=True,
                                               target_size=(IMG_HEIGHT, IMG_WIDTH))

augmented_images = [train_data_gen[0][0][0] for i in range(5)]
plotImages(augmented_images)

ここで飽きて、学習結果を保存し、次回は読み込むように仕様、と画策

p='./drive/MyDrive/'
model_json_str = model.to_json()
open(p+'model.json', 'w').write(model_json_str)
model.save_weights(p+'weights.h5');

試しにピクミンの画像を判定

## 次回モデル読み込み
# from tensorflow.keras.models import model_from_json
# from tensorflow.keras.preprocessing.image import img_to_array, load_img
# p = './drive/MyDrive/'
# print(p+'model.json')
## モデルを読み込む
# model = model_from_json(open(p+'model.json').read())
## 学習結果を読み込む
# model.load_weights(p + 'weights.h5')

img_path = os.path.join(validation_dir,  '20220113_115516000_iOS.png')
print(img_path)
img = img_to_array(load_img(img_path, target_size=(150, 150)))
img_nad = img_to_array(img)/255
img_nad = img_nad[None, ...]

label = ['pic', 'etc']
pred = model.predict(img_nad, batch_size=1, verbose=0)
pred_label = label[np.argmax(pred[0])]
if pred_label == 'pic':
  print("pic!!")

無事9割以上の確率でピクミンだと検出。よしっ!

機械学習の時間だよ

ワイのスマホ画像を見ていただきたい
f:id:elve:20220115074516p:plain
条件反射的にスクショしてるピクミンの画像が散見される。コレをどうにかしてまとめたい。


というわけで、機械学習です
結論:まだできてません。
Google Colab
で動かしますよー

ベース

note.com

コレの更にベースが書き直されて新しくなってたのでこっち見ればよかった(ノД`)ナェルシク 色々エラー出て大変だった。
zenn.dev

概要

f:id:elve:20220115080054p:plain
この学習用ファイルにある画像で学習して
テスト画像をピクミンかどうか区別したい

ピクミン学習用
f:id:elve:20220115081302p:plain

その他学習用
f:id:elve:20220115081308p:plain

ソース

一応動く。でも全部その他の画像と判断するorz

import tensorflow.keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Activation, Dense, Dropout
from tensorflow.keras.utils import to_categorical
from tensorflow.keras.optimizers import Adagrad
from tensorflow.keras.optimizers import Adam
from tensorflow import keras

import numpy as np
from PIL import Image
import os


image_list = []
label_list = []
# 学習データ読み込み
for dir in os.listdir("./drive/MyDrive/img/"):

    dir1 = "./drive/MyDrive/img/" + dir
    print(dir1 + ": ")
    print(len([name for name in os.listdir(dir1)
          if os.path.isfile(os.path.join(dir1, name))]))

    if dir == "学習用ピクミン画像":
        label = 0
    elif dir == "学習用その他":
        label = 1
    else:
        # テスト用はなんもしない
        print(dir + ": dir")
        continue

    for file in os.listdir(dir1):
        # 1
        label_list.append(label)
        filepath = dir1 + "/" + file

        # 2
        try:
            # dtypeどうのってエラー出たので適当に追加 RGBじゃない写真とかでコケたので追加
            image = np.array(Image.open(filepath).convert(
                "RGB").resize((25, 25)), dtype='uint32')
        except:
            print(file+":1")
        # 3
        try:
            image = image.transpose(2, 0, 1)
        except:
            print(file+":2")

        # 4
        try:
            image = image.reshape(
                1, image.shape[0] * image.shape[1] * image.shape[2]).astype("float32")[0]
        except:
            print(file+":3")

        # 5
        try:
            image_list.append(image / 255.)
        except:
            print(file+":4")
    image_list = np.array(image_list)
    Y = to_categorical(label_list)

# モデル構築
# 1
model = Sequential()

# 2
model.add(Dense(200, input_dim=1875))
model.add(Activation("relu"))
model.add(Dropout(0.2))

# 3
model.add(Dense(200))
model.add(Activation("relu"))
model.add(Dropout(0.2))

# 4
model.add(Dense(2))
model.add(Activation("softmax"))

opt = Adam()
model.compile(loss="categorical_crossentropy",
              optimizer=opt, metrics=["accuracy"])
# 学習
model.fit(image_list, Y, epochs=1500, batch_size=100, validation_split=0.1)

# 判断
dir1 = "./drive/MyDrive/img/テスト用"
for file in os.listdir(dir1):

    filepath = dir1 + "/" + file

    if os.path.isdir(filepath):
        # ディレクトリは何もしない
        continue

    # ここは怒られなかったのでRGBだけ。謎
    image = np.array(Image.open(filepath).convert("RGB").resize((25, 25)))
    image = image.transpose(2, 0, 1)
    image = image.reshape(
        1, image.shape[0] * image.shape[1] * image.shape[2]).astype("float32")[0]

    # image.reshape が使えなくなってて大騒ぎ
    result = np.argmax(model.predict(np.array([image / 255.])), axis=1)

    if result == 0:
        # ピクミン画像 来なかった・・・
        print('pic!')

        try:
            os.rename(filepath,
                      dir1 + "/ピクミン/"+file)
        except OSError as err:
            print("OS error: {0}".format(err))
        except:
            print(os.error)

    else:
        # その他の画像
        try:
            os.rename(filepath,
                      dir1 + "/その他/"+file)
        except OSError as err:
            print("OS error: {0}".format(err))
        except:
            print(os.error)

今後

25*25で判断できないのであろうが、大きくしたらエラーが出て意味不明だったので別の方法を考えるw

参考

OpenCVとPythonとVisualStudioで顔認識してみる │ Kazuki Room ~ モノづくりブログ ~
【TensorFlow/Keras入門】ディープラーニングを簡単に手を動かして学ぼう | 西住工房
Tensorflow/Kerasのインストール方法(Windows、Mac編) | 西住工房
【Python版OpenCV】Haar Cascadeで顔検出、アニメ顔検出、顔にモザイク処理 | 西住工房
【Python/OpenCV】SVMで画像分類①(手書き数字編) | 西住工房
お手軽Python! Colaboratory よくあるエラーメッセージ|プログランマ|note
python:機械学習で梨と林檎を分類する|tamurasann|note
python:恥ずかしいので機械にエロ画像を仕分けしてもらう(畳み込み処理)|tamurasann|note
NumPyのデータ型dtype一覧とastypeによる変換(キャスト) | note.nkmk.me
Python, NumPyで画像処理(読み込み、演算、保存) | note.nkmk.me
Python - オブジェクトを格納するNumpyのndarrayをインターフェイスする方法は?
Python - Tensor Flow 2.0、KerasのConv2Dレイヤーでinput_shapeを指定する方法
【Python】簡易的な仕分け機能付き画像ビューワー作ってみた - Qiita
PythonとOpenCVを使って物体検出をやってみた - Qiita
OpenCV+pythonで機械学習をやってみた③_実践編 | シンギュラリティ・ラボ
python - mnist CNN ValueError expected min_ndim=4, found ndim=3. Full shape received: [32, 28, 28] - Stack Overflow
Pythonを使用した画像認識方法をわかりやすく解説!API3つも紹介 – IT業界、エンジニア、就活生、第二新卒、転職者、20代向け情報サイト
OpenCV 入門:画像処理・画像認識・機械学習の実装を徹底解説(全実装コード公開)
python : model.predict_classesは推奨されていません -代わりに使用するものは何ですか?
【初心者向け】Pythonのcontinue文について解説!break文との違いは | TechTeacher Blog
python — Google colabファイルのダウンロードでエラーを取得できませんでした

逃げ出した、この夜に、44の夜

耐えかねて家を飛び出て1時間電車に乗った先のホテルに泊まりました。エルベです(爆)

自由とはなんなのでしょうか(笑)

f:id:elve:20220114054406p:image

動きのある絵は難しいですね。もっと体外に開いてるんすけど・・・。

 

さて、私の男、なぁ・・・。

最後に愛は勝つって言うじゃなーい? でも勝敗の定義、ありませんから!! 残念!!

 

iPadが勝手に変換して超打ちづらい(ノД`)ナェルシク

 

先日、私が病院に診断書を取りに行くから帰り遅くなるよって日があったんすよ。んで、カズは仕事が暇だから午後は休んで飲みに行こうかな、と。頼むから上野とか立ち飲みはやめてくれとお願いしててですね、まぁ、止めても無駄なので。

その日、小急ぎでいつもより早い電車に乗れたんすよね。いつも都営新宿線端から端まで乗るんですが、病院行くのでJRに乗り換えなくちゃいけなくて・・・ってちょっと緊張してるところでカズから着信。キャンセルして電車内で出られないとLINEするとすぐ再度着信。キャンセルし「降りた方がいいの?」とLINE。応答なし

え? 何? なんかよくないことでも起きてる?

市ヶ谷で降りて電話をかける。

なかなか出ない。

出たと思ったら酔った声で「メチャクチャ怒ってるかもー」と誰かに話している・・・女か?←負けw

「どこにいるのー?」「市ヶ谷だよ!! せっかく早い電車乗れたのに!!」「あsdfjkl;」酔っていて会話にならない。

「もうかけてこないでよ!」弱おこで電車に再び乗車、馬喰横山で乗り換えなくちゃ・・・

着信アリ

ムシをすることにする。いい加減にしろ、と送ると既読にすらならない。どこで誰と飲んでるんだよ、こいつ・・・。

 

 

みたいなだるい始まりで病院の後電話したら「友達と家にいるからなんか持ってきてー」と言われて菓子折り買っておつまみ買って帰ったら知らない男(サトウ)とカズが汚部屋におり、カズは既に日本語で会話が不可能なほど泥酔。サトウはカズの同僚で15時頃から飲んでいた、と。4時間以上この酔っ払いの相手をしてくれていたらしい。土下座。

散らかってるし下着干してるよぉぉぉ(ノД`)ナェルシク

 

サトウ帰宅後、立ち上がることすらできないカズをあちこちにぶつけながら(本当に頭ガンガンぶつけていたが頑丈であった)寝かせたら、急に押入れに向かうのでどうしたのか聞いたらトイレというので慌てて支えつつよろけつつトイレに行かせ、トイレでも倒れ込んでどうしょうもないのをなんとか布団に90度で寝かせた。限界。ワイ非力だからこれが限界。

f:id:elve:20220114064152p:image

寒さで酔い覚めたら布団に入るじゃろ、とエアコン止めて放置。

 

で、疲れ果てて寝てたら、3時頃にカズが私のベッドに潜り込んでくる。なんか冷たいしなんか湿っぽいしやな感じ。

「布団で寝なさいよ」

「なんか濡れてて冷たい。寒い」

 

\(^^)/<漏らしてました

 

ぎゃー死ねーきたねーしねよもう!! と叫びながら自分のベッドにリセッシュしまくり、バスタオルで応急処置、薄手の敷布団を重ねて敷いて、そこで寝かせる。

まだ酔ってる。ご機嫌とるつもりなのかセックスしようとしてくるから怒って寝かせる。

 

朝具合が悪い、仕事休むと言うカズに、落ち着いたら布団乾燥機を敷き布団中心にかけてくれ、その際、かけ布団もちょっと湿ってるから一緒に乾燥させてくれという話をする。

聞いてるの? 聞いてるよ なんて会話をして職場へ。

敷き布団捨てるための粗大ゴミの手続きをする。

布団パッド(毛足が長い冬用)とかけ布団はコインランドリーで洗って干せるかも? と思い、ついでならシーツも洗って欲しいなぁまとめてLINEする。

まだ具合が悪いという。はいはい寝てろ。

 

帰りになって買い物お願い、とか言い出すようは晩御飯作れ、と。

ほぅ。

 

敷き布団に乾燥機かけたか聞いたら、タグに乾燥機禁止って書いてあるとか言い出す。それはコインランドリーのだろ。ウルセェクセェんだよすぐ乾燥させろ、と思わず感情が文章に出てしまうw

アンサー「これからコインランドリー行って乾燥機かけてくるので買い物よろしく」

そうじゃねーよ、うちにある乾燥機かけろっていってんだよ!!! それも!! 昼のうちに!! 3回くらいかけて!! できれば換気して欲しかった!!!!!(ノД`)ナェルシク

 

で、帰宅したら掛け布団に乾燥機かけて湿った敷布団は押し入れにしまってやんの。やめろ、被害が拡大するじゃないか!!! つかどう言うこと!?

 

 

つまり本人記憶がなく漏らしたことを私に言われても信じておらず、敷き布団は無事でかけ布団がちょっと汚れた程度で私が大げさに騒いでると思ってたようなんだよね。

で、飯は作ってくれ、と。本人テレビ観てるのよ。

 

死ねよ、頼むから。あ、一緒の時に死なれると容疑者になって面倒だから俺がいない時にひっそりと。

一人分晩御飯作って私は「こんなとこで食えるわけないだろ」と外食。

 

洗濯してたので干しに帰ったら流石に干してくれてた。

翌日の出社の準備をまとめて家を出た。「どこ行くの」「職場の近くのホテルで泊まる」特に謝罪も止める気もなさそう。そらそうだよね。自分の懐は痛まないもんね。

 

代官山まで迎えにきてもらった借りがあるけど利息がトイチじゃねーかよ!

もう無理かなー。

 

母が送ってくれた布団に当たり前のようにフルチンで寝るカズにイライラしてたんだよね・・・。シーツ洗ってくれるわけでも干してくれるわけでもないし。

みなさん。全ての性器は汚いです。体液は汚いのです。パンツ履いて寝てください。

 

強く言う人は強く言われる覚悟があるんだと思っていた

f:id:elve:20220111063010p:plain
といいながら他人への強いボールに過剰反応してびっくりされてしまうエルベでございます。
自分が言われたら真摯に考えるようにはしてるのだけどねぇ。

vsお局

snack.elve.club

世間一般で「お局」がものすごい嫌悪されているという現実をみてようやく自分がやったことが酷いことだったんだなぁと思いましたw←まだ
お局って「口うるさいけど仕事には欠かせない年配女性」のことだと思っていて、私だってできればどこかに就職してお局になりたかった人生だった・・・と思ってました。派遣だからなれない。

あなたも私もお局にはなれないのよ!? - スナックelve 本店

などと書いておりましたが、その後私のExcel技術で懐柔に成功。また平和な日々を過ごしていおりました。
お客様向け汎用レターの作成、再び。お局に相談して、このまんまの文章にすればいいよって資料をお局にもらって、コレで承認お願いします、と課長にメール。お局さんにご協力いただきました、とCCにお局。
お局より返信
「やっぱりここの『ご査収』は『ご高覧』のほうがいいと思う。うるさくてゴメンね~」
返信
「ありがとうございます。うるさいとは思いませんが課長に言う前に言って欲しいとは思いました(;´▽`A``」
お局より返信
「もう何も言わない」

またかよ!! 何回目だよ!!!

(ノД`)ナェルシク

また何ヶ月も敬語で探り合うのも面倒なので、詫びを入れに行きました・・・。俺悪くないよ・・・。
「やーなんかすみません。なんですかね? 昔っから私は文章も言動も裏表なく同じトーンでやってるんですが、インターネットの前パソコン通信時代から、会うとそうでもないけど文章はちょっと・・・って言葉を濁されるんですよね。きついんですかね? すみませんねぇ」
俺悪くない。
お局「んも~私、エルちゃんにはいつも傷つけられてるわよ~wwwww」
お前が傷つけてきた者たちは・・・←今は関係ないw
俺悪くないのになぁ・・・(笑)

VSしっかり with せっかち

snack.elve.club

3人で仕事をしていたが、別の部署で手が開いてるということで2人追加で仕事をし始めた。
最年長のせっかちさんが妙に張り切って仕事を教えていて微笑ましい←
せっかちさんが仕事の手順の注意ポイントなどをまとめて我々をCCに入れてメールしていた。
ちょっとまぁ、ずれてるといえばずれてるが、害はない注意喚起であった。
しっかり->せっかち CC:我々
「こちら、当然注意して作業してます。後者についてはエルベさんから何度も注意喚起のメール出されています。その内容とも相違しています。ちゃんと理解されていますか?」

出したな・・・私の名前を・・・。
エルベ->しっかり CC他のメンバー
「こういうのは個人間でやってください。注意喚起であればこちらも作業に慣れていないため、当然のようにいうの辞めてください」
しっかり->全員
「失礼しました。この件はコレで終わりです」
(゚Д゚)ハァ? 俺は全然終わってねーし!!←

しばらくして、しっかりが挙動不審になりやたら咳き込み始める。
偉い人「おいおい、大丈夫? オミクロンとかやめてよ~w」
しっかり「すみません、違うんです。ンンッ ちょっと緊張して気道が塞がっただけで ンンッ」
うぜぇ・・・

無視していると意を決したように寄ってきてコビコビトーンで
し「エルベさん、さっきのごめんねぇ~。冷静に見たら、酷いメールだったぁ~なかったことぉ~(にしてくれ)」
え「あー、私もミスが多いので、思わずきつくなってすみませんが、注意が目的じゃなくてせっかちさんへの攻撃が目的になってたので、それには巻き込まないでください」
し「ぁは~っ。そうだよえねぇ~。ごめんねぇ~。」
うぜぇ・・・


頑張って、バランスとってるんだけど、何様なんだ、俺は・・・。
みなさんも圧かけてくる系の人には同じくらい以上の圧かけると仲良くなれるかもしれませんよ(ノД`)ナェルシク(無責任)