フヨダ

自分の勉強と記憶力改善のために、興味あることを書いていきます なるべく分かりやすく

solearn で機械学習を勉強した

sololearnっていうアプリがあって、プログラミングの基礎無料で学べて

しかもバトルできるアプリがある。最高だ。

 

最近、マシンラーニングの項目が追加されてたから勉強してみた。10日間くらいかかった。

結論からいうと、なんか頭が良くなった気がする。すごいね。

 

結局どうつかうかは分からないけど。

手書きの文字学習して、じゃあこりゃなんだって予想したり、なんか単純な散布図をクラス分けしたりできる。でもサンプルでは0-9の文字しか学習してないけどね。

タイタニックの乗客が生き残る確率とか、乳ガンが陽性か陰性かどうか、っていう問題をサンプルによく使ってた。

 

基本、pythonのscikit-learnメインで使う感じだった。pandas, numpy, matplotlib.pyplotも使った。

ロジスティック回帰モデルから始まり、モデルを評価するためのK-Fold評価、

決定木モデルに、決定木を複数適当にしたのを集めるランダムフォレストモデル、神経っぽいニューラルネットMLP(マルチレイヤーパーセプトロン)モデル。これはたぶんディープラーニングの基本的な一種だろうな。

っていうのを学んだ。全部教師アリ学習で、トレーニングデータがあると、結果を出せるみたいな。

 

これつかって何が良いかっていうと、何が良いんだろうね。これを発展させてくとすごい良いって事だけは分かる。だってデータを入力すれば、なんか簡単に計算できないようなデータがポンと出てくるんだからね。

 

画像解析とか音声解析でMLPは強いらしい。

 

最近はやりのディープラーニングも、たくさん種類あって、畳み込み何とか法のCNNとか、DQNとか、なんか色々ある。ちらっと検索した限りではそんな感じだ。

 

数式的に理解しようとすると結構骨だけど、ソロラーンならなんかめっちゃ簡単に説明してくれるから良い。全文英語だけど、google翻訳でだいたいわかる。バックプロパーの説明で偏微分は難しいので説明省略します、って来て、ちょっと、ってなった。

実際実務で使うとなれば、数式的な素養がいるけど、趣味で使うならいいかも。

 

なんか自動化したいな。なんか。

 

次は何を学ぼう。

西洋ミツバチのダニ対策

西洋ミツバチのダニ駆除薬剤は

 

アピバール、アピスタン

 

これを秋と春、年2回つかったげるのが良い。

交互に使うのは、ダニが薬剤抵抗を獲得しちゃうからだ。ダニはヴァロアという対西洋ミツバチ最強生物だ。

最近はチモバールっというタイムって言う植物由来の成分を抽出したやつの薬が認可されたみたいだ。

オーガニックな薬。ただ気温が高すぎると、みつばちに害があって危険だし、低すぎると蒸発しないから効果がないみたい。

ネット情報には他にも蟻酸やシュウ酸を使った方法とか、エッセンシャルオイル使った方法やら、キノコの抽出液がいいとか、色々な方法があって、迷って、おろおろして、半日ネットサーフィンし続ける羽目になる。

俺は認可された方法でいこう。もう、迷わない。国を信じる。

 

ただ薬でミツバチを保護し続けると,大自然さまの厳しい選別を受けられなくなる。淘汰がおきないから、本来ダニにたいして強いミツバチが生まれる可能性を奪ってしまっている。

でも自然選択に任せたら、養蜂家は破産しないといけない。淘汰で生き残れるのは数%かもっと低い確率の群で、全滅も余裕であり得るから。

淘汰で生き残って進化したミツバチがどんなデメリットを持ってるのかもわからないし。

 

その点、日本ミツバチはいいよね。野生化してるから適度に淘汰で進化して、そいつらをつかまえて家で飼えば、最新のダニに強いミツバチにアップデートされてるわけだから。

集蜜力とかは、負けてるかもしれないけど、コスパはとてもいいよね。ダニ薬剤高いし。

 

このままダニが薬剤抵抗を獲得し続けたら、日本みつばちの天下になるんかな。

でも有機酸系は効くから、ダニも無敵になることはないのかな。

 

やっぱニホンミツバチにシフトしとくのがいいのかな。ただ今いる西洋を全滅はさせたくないな。やっぱ売るか?でもせっかくフローハイブとか買ったしな。どうしようかな。

業でやるなら西洋なんだよな。

迷いがふえる。


f:id:gajumaru7:20200816014446j:image

巣落ちしてしばらく放置してるニホンミツバチ

 

 

松井証券のCSVファイルをまとめてくれるプログラム python

こんにちは。松井証券の取引履歴のcsvをダウンロードしたら、適当にまとめてくれるプログラムを作りました。

csvファイルをこう、売り買いをひとまとめにして欲しかったので。

Pythonの練習にやりました。現物取引しか対応してないです。

出力されたファイル

f:id:gajumaru7:20200421004449p:plain

 

f:id:gajumaru7:20200421003538p:plain

こんなふうにディレクトリつくって、csvのフォルダに取引履歴のデータをダウンロードして入れます。

CSVは勝手に古いcsvとまとめてくれます。

 

それで

matuiAggregator.pyを起動すると、csv_uniter.pyが呼び出されて、

このディレクトリに売り買いを1セットとした、売買データが出力されます

csv_uniter.py のコード

#! Python3
# -*- coding: utf-8 -*-
csv_uniter.py - 松井証券の取引履歴のcsvを統合する

import csv, os, sys, datetime, shutil
import logging
#logging.disable(logging.CRITICAL)
logging.basicConfig(level=logging.DEBUG, format="%(asctime)s - %(levelname)s - %(message)s")

logging.debug("csvファイルを探索中...")
f_list = 

for filename in os.listdir(".\\csv"):
    if filename.lower().endswith(".csv"):
        f_list.append(filename)

def cPath(filename):
    dirname = os.path.join(".\\csv", filename)
    return dirname


# {日付: ファイルネーム}の用にデータをリストに突っ込んでいく
csv_data = 



if len(f_list) <= 1:
    logging.debug("ファイルが1つ以下でした。終了します")
else:
        

    new_f = open(cPath("matsui_united_{}.csv".format(datetime.datetime.now().strftime("%Y%m%d%H%M%S"))), "w"newline="")
    new_f_writer = csv.writer(new_f)

    for f in f_list:
        f = open(cPath(f), "r")
        f_reader = csv.reader(f)
        f_data = list(f_reader)
        for i in range(1len(f_data)):
            if f_data[i] in csv_data:
                continue
            csv_data.append(f_data[i])

    csv_dataをすべて、sort可能なdatetimeオブジェクトにする
    for i in range(len(csv_data)):
        csv_data[i][0] = datetime.datetime.strptime(csv_data[i][0], "%Y/%m/%d")
    # 時間を元にソートする、新しい日付が上になるように、reverseで降順にする
    csv_data.sort(key=lambda x: x[0], reverse=True)
    # 元のフォーマットに戻す
    for i in range(len(csv_data)):
        csv_data[i][0] = csv_data[i][0].strftime("%Y/%m/%d")

    # データを貼り付ける
    new_f_writer.writerow(f_data[0])
    new_f_writer.writerows(csv_data)


    f.close()
    new_f.close()
    # 最後に参照ファイルをpastフォルダに入れる
    for file in f_list:
        shutil.move(cPath(file), ".\\csv\\past")

logging.debug("csv処理完了")

 

matuiAgrregater.pyのコード

#! Python3
# -*- coding: utf-8 -*-
# matuiAggregater.py - 松井証券の取引履歴のcsvを読み込んで集計してくれるプログラム

import csv, os, shutil
from openpyxl.utils import get_column_letter, column_index_from_string

import logging, openpyxl, datetime
#logging.disable(logging.CRITICAL)
logging.basicConfig(level=logging.DEBUG, format="%(asctime)s - %(levelname)s - %(message)s")

import csv_uniter

logging.debug("xlsxファイルを生成します")

# 古いxlsxデータは.\\past_xlsxにいれる
for xlsxfile in os.listdir("."):
    if xlsxfile.lower().endswith(".xlsx"):
        logging.debug("同フォルダ内の古いxlsxファイルをpast_xlsxに移動します")
        shutil.move(xlsxfile, ".\\past_xlsx")


for filename in os.listdir(".\\csv"):
    if filename.lower().endswith(".csv"):
        csvfilename = filename
def cPath(file):
    return os.path.join(".\\csv"file)

savename = "matui_matome_{}.xlsx".format(datetime.datetime.now().strftime("%Y%m%d%H%M%S"))
f = open(cPath(csvfilename))
f_reader = csv.reader(f)
f_data = list(f_reader)

# 2つの視点、セッターとチェッカーとする。セッターは主観。チェッカーはペアを探す視点。チェッカーにマッチしたらchecked_row_listにいれて、その行をセッターはスキップする
checked_row_list = 
only_buy_list = 

# 貼り付け先はxlsxファイルにする
wb = openpyxl.Workbook()
sheet = wb.active
# データの型は{取引区分0, 銘柄1, コード2, 買付日3, 買値4, 売却日5, 売値6, 保有日数7, 損益率8, 損益額9}
data_type_order = ["取引区分""銘柄""コード""買付日""売却日""保有日数","買数量""売数量""買値""売値""損益率","損益額""コメント"]



# エクセルシートを新規作成したので、data_type_orderリストに従って1列目を埋める
for Col in range(1len(data_type_order)+ 1):
    sheet.cell(1, Col).value = data_type_order[Col - 1]
# 一列目はウィンドウ固定する
sheet.freeze_panes = "A2"

# 受け渡し日ごとにまとまった列のブロックとして、それを古い日から順番にサーチしていく。 {受渡日: row}
day_row_dict = {}
for row in range(1len(f_data)):
    day_row_dict.setdefault(datetime.datetime.strptime(f_data[row][0], "%Y/%m/%d"), )
    day_row_dict[datetime.datetime.strptime(f_data[row][0], "%Y/%m/%d")].append(row)
# 念のため日付をソートする. 古い日が先頭に来る reverse=False
day_row_key = sorted(day_row_dict, reverse=False)


def pasteExcel(data):
    """辞書データを受け取って、excelの先頭行に貼り付ける"""
    # エクセルシートに貼り付ける
    sheet.insert_rows(2)
    # エクセルの第一列目を参照して、貼り付ける
    for Col in range(1, sheet.max_column + 1):
        try:
            sheet.cell(2, Col).value = data[sheet.cell(1, Col).value]
        # dataにないキーがでたらスキップする
        except KeyError:
            continue

def pareset(ROW1ROW2):
    """データを並びかえて作る ROW1が買い、ROW2が売却。売りだけの場合も、買いだけの場合もこれを呼び出すこと"""
    data = {}
    data["コメント"] = ""

    if ROW1 ==  and ROW2:
        #売りでだけの時
        data["取引区分"] = f_data[ROW2[0]][9]
        data["コード"] = f_data[ROW2[0]][2]
        data["銘柄"] = f_data[ROW2[0]][3]
        data["売却日"] = f_data[ROW2[-1]][1]
        sell_sum = 0
        sell_num = 0
        for i in range(len(ROW2)):
            sell_sum += int(f_data[ROW2[i]][14])
            sell_num += int(f_data[ROW2[i]][10])
        data["売値"] = sell_sum
        data["売数量"] = sell_num
        data["損益額"] = sell_sum
        data["コメント"] += "買いデータが足りません"
    
    elif ROW1 and ROW2 == :
        #買いだけの時
        data["取引区分"] = f_data[ROW1[0]][9]
        data["コード"] = f_data[ROW1[0]][2]
        data["銘柄"] = f_data[ROW1[0]][3]
        data["買付日"] = f_data[ROW1[0]][1]
        buy_sum = 0
        buy_num = 0
        for i in range(len(ROW1)):
            buy_sum += int(f_data[ROW1[i]][14])
            buy_num += int(f_data[ROW1[i]][10])        
        data["買値"] = buy_sum
        data["買数量"] = buy_num
        data["損益額"] = buy_sum

    # 売り買いペアであるとき
    elif ROW1 and ROW2:

    
        data["取引区分"] = f_data[ROW2[0]][9]
        data["コード"] = f_data[ROW2[0]][2]
        data["銘柄"] = f_data[ROW2[0]][3]
        # 複数の場合は最後に売却した日が売り
        data["売却日"] = f_data[ROW2[-1]][1]
        #売値, 買値、株数はリストの受け渡し金額を合算する
        sell_sum = 0
        sell_num = 0
        buy_sum = 0
        buy_num = 0
        for i in range(len(ROW2)):
            sell_sum += int(f_data[ROW2[i]][14])
            sell_num += int(f_data[ROW2[i]][10])
        data["売値"] = sell_sum
        data["売数量"] = sell_num
        data["買付日"] = f_data[ROW1[0]][1]    
        for i in range(len(ROW1)):
            buy_sum += int(f_data[ROW1[i]][14])
            buy_num += int(f_data[ROW1[i]][10])
        data["買値"] = buy_sum
        data["買数量"] = buy_num
        保有日数はdatetimeを使って計算する.datetimeを引き算するとtimedeltaオブジェクトができる
        date1 = datetime.datetime.strptime(f_data[ROW1[0]][1], "%Y/%m/%d")
        date2 = datetime.datetime.strptime(f_data[ROW2[-1]][1], "%Y/%m/%d")
        data["保有日数"] = int((date2 - date1).days)
        # +-がすでに付加されているので注意
        data["損益額"] = int(data["買値"]) + int(data["売値"])
        # 損益率は 損益額/ 買値(絶対値) * 100 単位は%
        data["損益率"] = round(int(data["損益額"]) / abs(int(data["買値"])) * 1001)
        if len(ROW2) > 1:
            data["コメント"] += "分割売り. "
        if len(ROW1) > 1:
            data["コメント"] += "買い増し. " 
        if sell_num > buy_num:
            data["コメント"] += "買いデータが足りません"
    else:
        raise Exception("pareset()に例外があります")
    pasteExcel(data)

def notPhyTrans(ROW1):
    """現物取引以外の項目をxlデータに貼り付ける"""
    data = {}
    data["取引区分"] = f_data[ROW1][9]
    data["買付日"] = f_data[ROW1][0]
    data["コード"] = f_data[ROW1][2]
    data["銘柄"] = f_data[ROW1][3]
    data["損益額"] = int(f_data[ROW1][14])

    pasteExcel(data)

for date in day_row_key:
    for Row in day_row_dict[date]:


    # メインの視点Row: CSVデータの一番下から上に向かって、スキャンする
        
        #後述のペア探しチェッカーがチェック済みならスキップする
        if Row in checked_row_list:
            continue
        # 取引区分が現物以外の配当金等ならペアを探さない個別で表示する
        elif f_data[Row][9] != "現物":
            #単体で新しいワークブックの列の一番上に挿入
            notPhyTrans(Row)
            continue
        # 現物かつ、売りで始まっていたら、買いが空白のデータとしてエクセルの一番上に挿入。このCSVの期間には、買いのデータが乗っていないのだ。
        elif f_data[Row][7] == "売":
            # 買いが空白のデータを一番上に送る
            pareset(ROW1=ROW2=[Row])
            continue
        elif f_data[Row][9] == "現物" and f_data[Row][7] == "買":
            checked_row_list.append(Row)
            # 現物かつ買いなので、チェッカーが売りのペアを探す。チェッカーの売りの数量を設定しておく
            # 残株数
            num_stocks_remaining = int(f_data[Row][10])

            # チェッカーで探した同一株を探し続ける。買った株数に追いつくまで。また買った株数が0になる前に買えば残株数に加算され、さらに売りを探す。
            # 最後まで売り切っていなければ一番最後にエクセルの上に挿入しないといけない
            multiple_checker_sell_rows = []
            multiple_checker_buy_rows = [Row]

            # チェッカー: checker_row がペアを探す。ペアのRowはチェック済みにする
            for checker_date in day_row_key[day_row_key.index(date):]:
                for checker_row in day_row_dict[checker_date]:
                # ペアもしくはxl反映済みの列はスキップする
                    if checker_row in checked_row_list:
                        continue
                    # 条件に合うペアを探す
                    if (f_data[Row][2] == f_data[checker_row][2]) and f_data[checker_row][7] == "売":            
                        # マッチしたものは、メインのRowやチェッカーのchecker_rowでスキップできるようにする
                        checked_row_list.append(checker_row)
                        multiple_checker_sell_rows.append(checker_row)
                        num_stocks_remaining -= int(f_data[checker_row][10])
                        if num_stocks_remaining == 0:
                            # ペアとみなして、エクセルデータにペアのデータを渡して、チェック済みにする            
                            pareset(ROW1=multiple_checker_buy_rows, ROW2=multiple_checker_sell_rows)
                            break
                        elif num_stocks_remaining > 0:
                            continue
                        else:
                            # なぜか売りの方が多い、CSVデータに買いがない
                            pareset(ROW1=multiple_checker_buy_rows, ROW2=multiple_checker_sell_rows)
                            

                    elif (f_data[Row][2] == f_data[checker_row][2]) and f_data[checker_row][7] == "買":
                        checked_row_list.append(checker_row)
                        multiple_checker_buy_rows.append(checker_row)
                        # 残株数が0になる前にまた買いがあれば、残株数を増やす。
                        num_stocks_remaining += int(f_data[checker_row][10])
                        continue
                    else:
                        # この列はチェッカーに引っ掛からなかった
                        continue
                
                else:
                    #1つのdate内でがブレイクなしに終わった
                    continue
                # チェッカーがブレイクして終わったらチェッカーのループを抜ける
                break
            
            else:
                #チェッカーがすべての列を見終わったのに、残株数がある場合
                if num_stocks_remaining > 0:
                    #TODO: 一番最後に一番上に持っていく, 残株数を表示したい
                    only_buy_list.append*1
        else:
            raise Exception("メイン視点で例外が存在しました")


# まだ売却していないものは上に持っていく
for row1, row2 in only_buy_list:
    pareset(ROW1=row1, ROW2=row2)
              

wb.save(savename)
f.close()


logging.debug("xlsx処理完了")

    
    

 



*1:multiple_checker_buy_rows, multiple_checker_sell_rows

エクセルファイルのすべてのシートを一個ずつCSVファイルに変換してくれるプログラム

退屈な事はpythonにやらせようの14章の演習問題

 

こんな感じです。本が3年前のなので、本書に書かれてるopenpyxlの関数がちょっと古かったりして、注意が必要。

 

なんか、自動で膨大なデータをちゃかちゃか処理してくれるって、すごい良い。

python知らない人でも、anaconda3インストールして、このプログラムを

.pyつけて保存して、処理したいエクセルファイルがあるフォルダに突っ込んで起動すれば使えると思います。

 

#! Python3
# -*- coding: utf-8 -*-
# xlsxToCsv.py - exelデータを読み込んで、すべてのシートをCSVにする

import openpyxl, csv, os

foldername = "xlsxToCsv"
os.makedirs(foldername, exist_ok=True)

for xlsx_file in os.listdir("."):
    # .xlsxでなければスキップ
    if not xlsx_file.lower().endswith(".xlsx"):
        continue
    # ワークブック内をシートごとに全コピーしてCSVを作る
    print("ファイルが見つかりました {}を処理します...".format(xlsx_file))
    
    wb = openpyxl.load_workbook(xlsx_file)

    for sheetname in wb.sheetnames:
        sheet = wb[sheetname]
        excelファイル名とシート名からCSV名を作ってファイルを作る
        csv_name = xlsx_file[:-5] + "_" + sheetname + ".csv"
        csv_file = open(os.path.join(foldername, csv_name),"w", newline="")
        csv_writer = csv.writer(csv_file)
        
        csvライターには["文字", "文字"]とリスト型で一行ずつデータを渡したいのでデータを作る
        for Row in range(1, sheet.max_row + 1):
            # 毎行ごとにrow_listは初期化される
            row_list = []
            for Col in range(1, sheet.max_column + 1):
                row_list.append(str(sheet.cell(Row, Col).value))
            csv_writer.writerow(row_list)
        # 書き込みが終了したらファイルを保存するコマンドは必要ないのでファイルを閉じとく
        csv_file.close()
print("完了")

最近pythonを学びだしたのでモンティホール問題を

プログラミングできたらカッコいいなと思って、敷居が低くて人気のpythonを勉強?しながら遊んでます。

 

参考本はオライリーの退屈な事はpythonにやらせよう、とか、アプリのsololearnとかで見てます。あと一年位前にprogateってアプリでpythonとか学んだ程度です。

 

スクレイピングとかエクセル操作、ファイル操作とか一通りやって、しょぼいプログラムなら組めるようになってきて、楽しい。

単純な問題なら、コード書いてループしてもらえば、何百回でも計算を繰り返してくれて凄い。コンピュータを褒めたい。そんな気持ちになる。

 

例えばここに有名な

モンティホール問題というのがある。

 

3つの扉があって、正解は一つ。自分が適当にどれか一つ選ぶと、司会者は残り二つから、間違った扉を一つ教えてくれる。

次に自分は最初に選んだ扉を変えるか変えないか選べる。

変えるのが良いか変えないのが良いか、どっちでしょう。

 

という問題だ。

 

いっぱんの直感的には、変えても変えなくても同じだろ。と考えてしまうが、

正解は変えたほうが、正解率はぐっと上がる。

 

pythonでコード書いて、変える場合と、変えない場合1万回やってもらって試してみた。

結果は

>>>

変えない場合3323回正解、6677回失敗
変える場合6667回正解、3333回失敗

だった。コードは以下

 

#! Python3
# -*- coding: utf-8 -*-

# 0, 1, 2 三つの扉があり、司会者は1つ正解を知っている。
# 私は1つ扉を選ぶと、司会者はそれ以外の間違った扉を教えてくれる。
# 次に私は今いる扉を変更するか、しないか選ぶことができる。確立に違いはあるか

import random

correct_count = 0
miss_count = 0
# 変えないとき
for i in range(10000):        
    answer = random.randint(0,2)
    select = random.randint(0,2)
    select_list = [012]
    select_list.remove(answer)
    if answer == select:
        sikaisha = select_list[random.randint(0,1)]
    else:
        select_list.remove(select)
        sikaish = select_list[0]
    if select == answer:
        correct_count +=1
    else:
        miss_count += 1
print("変えない場合{}回正解、{}回失敗".format(correct_count, miss_count))

# 変える場合
correct_count = 0
miss_count = 0
for i in range(10000):        
    answer = random.randint(0,2)
    select = random.randint(0,2)
    select_list = [012]
    select_list.remove(answer)
    if answer == select:
        sikaisha = random.choice(select_list)
    else:
        select_list.remove(select)
        sikaisha = select_list[0]
    # 変える
    re_select_list = [012]
    re_select_list.remove(select)
    re_select_list.remove(sikaisha)
    select = re_select_list[0]
    
    if select == answer:
        correct_count +=1
    else:
        miss_count += 1
print("変える場合{}回正解、{}回失敗".format(correct_count, miss_count))


 

変えない場合3323回正解、6677回失敗
変える場合6667回正解、3333回失敗

 

おー。って感じです。なんか収束してる。

 

数学の素養があれば、確率の考え方でぱっと分かるんだろうけど、

こういった力技の計算だともっとなんか納得がいきます。

 

ありがとうpython

友人がN国にはまってる

 nhkから国民を守る党という、youtubeで人気を集めて参議院議席を獲得した党の事を、俺の仲の良い友達が好きみたいだ。

 俺はNHKがんばってるな、と日頃思っていて、進撃の巨人おもしろいな、とか、地震や台風、洪水とか自然災害に関して情報の質高いし、動物番組すきだとか、語学ラジオいいな、とかの理由でNHKには肯定的だ。合原アナウンサーの見た目がとても好きだったし。

 それをぶっ壊すと言っているN国党にはあんまりいい感想を持てなかったし、やばそうなやつらが演説してるな。とも思った。

 集金人の質の悪さや、効率的な集金システムや料金体制を指摘されてるので、そこんとこを直せばいいのに。彼らはNHKぶっこわすと言っている。nhkで働いてる中の人は一生懸命やってるんだから、破壊は勘弁してやれよ。だれが公共放送やるんだ?

 

 去年実家に帰ってきて、大学の友人とまた連絡を取るようになった。友人は厳しい仕事に疲れていた。色々話を聞いてるうちに、N国の話が上がって、その影響を受けて、彼は勤めている会社や、なぜかNHKの会社も爆破したいとも言っていた。もちろん冗談ではあるのだろうが。ただ確かにNHKを悪者として見るようになっていた。

 N国党の影響とはこんな身近にあるのだと危機感を感じた。ショックだった。しかも俺がN国に良い印象を持ってないことを伝えると、彼は驚いて、俺は少数派だといってきた。まじか。

 たしかにネット上はN国批判すると、逆に炎上するという空気が作られていた。党首が目的のためなら、犯罪行為も黙認するというようなラジカルな事を言っているようだ。

 

まあNHKみないひとにとって受信料は無駄遣いでしかないのかな。

ただ俺達の払ってる所得税や消費税、などの税金だってどこか知らない道路とか、自衛隊の装備とか、国立競技場とか、自分とは関係ないものに充てられてる。

 税として徴収してしまうと国との癒着になるので、公共性が失われる。NHKが個別にとるしかないのだ。

 

 でも最近えらいてんちょうが戦ってくれている。

はじめはN国の何年にもわたった動向分析を行い動画で批判を始めた。本まで執筆したようだ。

先日の立花党首と直接対決?奇襲をかけ、ネットで注目を集めている。

 双極性障害の躁のコンディション、やからの様なテンションで、危険な剣幕で立花党首を捲し立てる様子は、いつものえらてんではなく、立花党首を論破するための訓練をした戦士だった。これがゲリラ戦術なのかな。

 それぐらい強いNoを突き付けてあげれて、逃げ出させる力があるのはこの人しかいない。

ただ反対する著名人もだまらせる立花党首の手腕もおそろしい。直接やると負けるとわかっているので間接的な手段に走るとおもう。

 どうか勝ってほしい。党の解散が勝利だとおもうけど、ゲリラ作戦は大成功してるから、いまはクールタイムでいいと思う。その間、こんな間接的な攻撃をされている、ということを発信すれば、N国にとっては大ダメージだ。

 

俺の友人もちゃんとした企業で働いてるし、NHKの集金額なんて、国に吸いとられてるより微々たるもんなんだし、NHK語学ラジオつかってるし。N国に刷り込まれた憎悪をさっさと忘れてほしい。

 

なにを書いているんだろう。

俺は無職だ。

雑記


f:id:gajumaru7:20181220144323j:image

先日天井みえる化をしたニホンミツバチが全滅した。盗蜜は恐ろしい。

液糖を与えたのがまずかったかもしれない。

からっからの巣を残しもぬけの殻になっていた。

 

台風でやられた岐阜産のみつばちも死にそうだ。反して北海道産は異常なほど元気。

 

秋に分蜂したニホンミツバチは、コヂンマリしてるが元気


f:id:gajumaru7:20181220144731j:image

 

この冬は、運が悪ければ北海道の一群しか残らないかもしれない。良くてニホンミツバチも生き残れて2群。

めちゃくちゃ運が良くて3群。

 

英語の勉強し始めました。なんかやってないと人間がダメになる。

 

ホモデウスのやさしいマンガ本を読んだ。なんかニートの女の子がボルタリングする話だった。

人間と他の動物との違いはフィクションを信じることができるって考えが面白いな、と思った。まだ本物のホモデウスは読んでないけど。

宗教やお金、国っていう実体をもたない、実体があるみたいに作られたもの、色々あるよね。それを大多数が信じることで、強力な

実態をもつね。すごい能力だ。

 

最近ポルノ依存の記事を見た。

ポルノ依存はadhdに似た症状を引き起こすらしい。あと睡眠不足。 やばい。

俺はポルノを見るのをやめた。