.memo (kikugawa816 blog)

自分用の(WEB につなげれば見れる)と便利なメモして使う

最近観始めた Youtube チャンネル

最近、観ていて(聞き流していて)面白い、
Youtube チャンネルをリストアップしておく。
ブクマでも良いし、もっとあるけども…
とにかくバックアップ大事(自戒)

囲碁の儀式【観ると強くなるチャンネル】

  • 言語化しながら打っているので、素人視点で非常に助かる。
  • ↑将棋と違って、囲碁の方が助かるの、何でだろう
  • (将棋も感覚で処理するけども、囲碁のが役立つ気がする…)

メン獄Channel

  • 面白い(小並感)
  • この中では一番最近見始めたチャンネル。
  • 話しは理解出来る。けども、でも自分はこうなれないよなぁ…となる。めちゃくちゃ仕事出来る人の立場での、ロジカル話多めなので。

脱·税理士スガワラくん

  • 税金に関わる色々やら、中小企業の経営に役立つコンテンツを取り扱っているチャンネル。
  • 手元の現金を厚めに持つ「キャッシュリッチ経営」を主軸に色々解説している。
  • 自分自身はただのダメリーマン、かつ経営童貞だが、↑方針はファイナンス初学者な自分でも分かる、めちゃくちゃ腑に落ちる方針。キャッシュ大事。

政経電論TV

  • 佐藤尊徳さん、井川意高さんのトーク、めちゃくちゃ面白い。
  • 政治やら大企業の政治の話やらを、無料で聴けるのスゴイ
  • 元々、Youtube ショートで切り抜き面白いなぁーと思っていたが、実際に長尺で見ても面白かった。

他に昔から観ていたり、上記と比べると以前より
観ているチャンネルとしては、
東海オンエアや、三橋貴明TV、Leo the football TV
ちるにとら(モンハン)、小桜おぢさんの部屋(モンハン)
とかもあるが、ひとまずこんなもんで。

メモ(はてブでであった、AWSきっかけの話しのヤツ)

これ、しょっちゅう自分のブクマが埋もれてしまい、 とは言え定期的に読みたくなる、 だがしかしタグとかほとんど使いこなしていない、自分なので、

はてブ使い始めてからの好きな出会いの一つのこの増田は、 このブログポストにメモっておこう。

Steve Yegge の Google とプラットフォームに関するぶっちゃけ話を訳した(前編) https://anond.hatelabo.jp/20111018190933

へっぽこエンジニアとして、感動したのは、 これや k8s やら、GitHubかなぁ。 GitHub & はてブは11年前に新人研修の講師から教えてもらったのが、 それはターニングポイントの一つであり、 本当によかったなぁーと、しみじみ思う。

たまには更新

久々にログイン & 投稿。特に意味はないけども。 ブログを始めてから、まじめに投稿しているとかはなく、 今回も数年ぶりのポストだけど、これを書いている現在と、 ブログを始めた当初の違いについては、やはり生成AIかな。

流石にここまで騒がれる、かつ簡単に触れるのはヤバい。 初学者の壁なんて無いのが凄すぎる。

ただし(自分が、とにかく楽観的な性格だからか)、 例えばソフトウェアエンジニアなどの仕事が全部無くなるとかは、 これっぽっちも思わないかな。 良い手段であり、感情もあるのではの疑うぐらい、 とにかく凄いヤツであり、助かっているのだけども、 人間はAIと違いロマンや直感、ユーモアさとか、合理・非合理とか、 とにかく何でもあり、というよりも、 その目に見えるもの、見えないものすべてが、 情報、つまりソフトウェアで定義・構成されている、 この世界だからか、そんな気がしているのだ。

このブログに久々にポストするのも、テキトーだしなぁー

久々に更新。

といっても、書くことが無いのだけど。

とりあえず、やる気、気力が無い毎日が延々と続いているが、生きてはいる。 まあ死ぬのなんて怖いし、まだまだやりたいことは多いってのはあるし、 別に人間関係が悪いとかでも無い。むしろそちらは良好、というより職場や家族は温かいので。

ただ自分自身は納得の行く毎日、人生を送れていないことから、落ち込んでいるだけなので。 ダイエットは流石に頑張って体重落とさなきゃやばいし、仕事もパットしない日々が続いているし、 お金の面も、余裕がない状態が続いている。これが一番原因だとは思うが、

高卒で就職してからずっと実家暮らしではあるが、 いくらかのお金を実家に入れることがほぼ必須であるのと、最近、といっても前からではあるが、 親の経済状況的に厳しい時期ではあるため、給料の手取り半分、ちょい多めぐらいの金額を毎月実家に入れている。 地味ではあるが、ネット回線、サブスク(Youtube ファミリープラン)についても自分が支払ってたりする。 ※とはいえネットについては利用は自分が主なので、そこは別に当たり前だが

ボーナスも貰える立場ではあり、今年の夏もしっかり頂けたので、そこはありがたいとは思うものの、 こちらについても身内の色々で、結局半分近くはそちらに注ぎ込むのが恒例となっている。 本当は自分のローンの返済などに注ぎ込みたいところだけど。

そんな中でも飲みには行くんだよなー。ほぼ毎月、一度は行っている。 自分自身に対する甘えではあるなーとは流石に思うけど、職場の先輩や後輩、飲むの楽しいし、好きだし。 スーパーでお酒や適当な惣菜を買い、晩酌するのも好き。金麦うまい。翠ジンソーダうまい。

お酒を飲まない。特に飲み会に行かなければ、若干ではあるものの、余裕が生まれるはずだし、 何ならそれを支払いや貯金に割り当てれば、好転は間違いなくするのだろうけど、 まあそんな気力があれば苦労はしないよな。

そんな感じで、甘えなのか、普通なのか、やっぱり甘えなのか。 まあ、そんなの他人にどう言われようが、結局は自分自身がどう思っているかだし、 自分自身の行動や毎日、人生の送り方の延長線である現状なので、納得はしているし、責任は無論負う。

とはいえこんな感じの状況。抜け出したいし、そのために頑張れれば良いのだが・・・ それはもうちょいかかるかな。


そういえば2023秋季の情報処理安全確保支援士の試験について、受験申し込みは行った。 合格すると、多少なりとも会社からお金がいただけるし、自分の実力アップも見込めるので。

ただしもともと勉強する習慣は無いし、これを書いている時点で約2ヶ月というところもあって、 業務を通して身につけた、今の実力や知識的にも、このままだと間違いなくダメ。 なので勉強しなきゃなのだが、本当にやる気が出ない。

お金がない → 時間はある →(なら) 勉強をしたら良い → (合格すると) お金は入る → 今の職場での評価や、将来の転職など結果的に収入を上げるのに間違いなく役立つ → 実力を伸ばすきっかけにもなる

という流れは自明だけど、それでも、やる気が湧かないよなー。


そういえば、最近は Notion をメモ帳代わりに使っている。 業務で使うことになったのがきっかけではあるが、割と便利だなと感じている。 使い方の例としては、ギャラリービュー、テンプレートを用意し、勉強、といっても WEB で色々と記事を見ている中で、 「これ、試験に関連する内容じゃね?」的なものを適当にまとめているだけ。

あんまり身になっている気はしない、というかそこまで到達するまでに疲れる、集中が切れるので 勉強としてはダメそうだが、WEB 上に気軽に残せるのは良いなと思って。Notion 、そこそこ気に入って遊んでいる。


うーん。とりあえず、明日(というより今日)は久々に、コードが書けたらなと思う。 簡単なスクリプトで良いので、何ならコードなんか書かなくても良いので、とにかく PC に触れる。

現時点での毎日の習慣が絶望的に終わっているので(夜更かし、長時間のスマホ(Youtube)、勉強全くしない、運動全くしない) それを整理するための、スプレッドシートか何かを作るのも良いかもな。 ※Notion でも良いけど、流石に飽きもあるし、スプレッドシートも便利なので

ちょっとずつ、本当に少しずつ、ブログ投稿なども含めて、アクションを起こせたら良いかな。

最後に、最近懐かしくてよく聴いている曲のフレーズを引用。

明日からでもなく 何かの記念日でもなく

どうしようもなく涙が出てしまった今日から変わって行ければ良い

UVERworld 「7日目の決意」より

まつもとりー(松本 亮介)さんのスライド、いくつか読んだ。 どれも面白かった!!


speakerdeck.com

speakerdeck.com

speakerdeck.com


というわけでめもめも。


"情報のインプットする「感覚野」と動きとしてアウトプットする「運動野」とは、脳の中で直接コミュニケーションすることができない"

(茂木健一郎「プロフェッショナルたちの脳活用法」 より引用)

(「企業に所属するエンジニアとしての社内と社外の実績の重ね方」)

ここらへんを読んだのが一番印象にのこっているので、それにたいする思考メモ

  • 「感覚」によるインプットは自動、ハードに寄せた方が効率良さそうかな
    • 文字 (目)、音 (耳)、動画、文字列、感触、... etc. 自分にあったやつがあれば
  • アウトプットは「能動的」なやつ。
    • 普段やっている「思考」はおそらくこっちに入る。
    • 自分の思考法→頭の中で、会話をするように思考しがち
    • たぶんだけどこちらは「自動化出来ている」。理由としてはあまり負荷を感じないので
    • 詰将棋などは手数にもよるが「負荷を感じる」。
    • これを「負荷を感じなくなるまで」を目標に添えるのが、練習では大事かも
    • 日頃やるインプット、アウトプット (プログラミング、ブログへのメモ、等) もこちらの方向性に
  • 思考によるアウトプット -> 高速
  • プログラミングなどの作業 -> 低速
  • やがて質が高まったり、狙った質を出せるようになると ...
    • プライベートの時間の捻出はキツイ
    • 社内をハックし、社内での仕事での成果を流用できるように
      • Win-Win になるようになれば説得材料にはなりそう (あくまで成果を出せたら)
      • 親会社や、グループ内、地域や、産学連携みたいな
      • 現在所属している会社だと、実力さえついてこれば何とかなりそうな気もする
  • "数ヶ月程度アウトプットしたぐらいで優れた有名エンジニアになれない"
  • アウトプットの意味
    • 思考にあるだけでは、いざ実行しようとしても思ったとおりにできない
    • "思考と実戦のギャップを埋める作業"
    • 再利用可能な方法論へ昇華
  • 学習法だが、勉強と同じでコツコツとやるべき大変なこと
  • 努力によって質を確保 -> 「宣伝」-> 付加価値に
    • インターネットで効率的に
  • まずは量。後に質に転化していく
  • "僕はアスリート的な感覚のプログラマ" (「コードと論文で世界を返る」)
    • 自分も多分そっちよりの思考というか、方向は持っている。間違いなく将棋をやってきた影響で
    • さらに負けず嫌いとも出ている。こちらは家庭環境などの影響で
    • とは言え勝ち負けとかではなく、学問、科学、論文といったサイドの方は大事だとは感じている。自身は無縁であったとしても
    • ↑これは親友の存在高卒で社会人を開始したからと、将棋における棋理を追求するから
  • 我流は難しい。が...
    • "明らかに成果が出ている伝統的な方法論は逃げずにやるべき"
    • コンピュータサイエンスアルゴリズムやデータ構造、OSやエンジニアリング全般。他に英語や応用数学など
    • ジャンルについてはいくつでも、いくらでも出てくるし、あながち間違いは無いであろう
    • 効率の良い方法があるならば、やるべき。だけどそんなの簡単にあれば誰もが成果を出している
    • 「学問に王道なし」
    • なので「集中」し
    • 「負荷を感じなくなる」までの努力を
    • 「やめない」
    • 自分の経験則だと「やめる」は「結局やらなければならない」ものなら、やめると「停滞」を生む
    • つまり「逃げない」のは大事。なので最後は「クソ粘り」みたいな根性的なとこで頑張るしかないのかも。
    • ↑かっこ悪いし、効率悪そうで、辛いのは目に見えているけど「逃げない」。さもなくば「停滞」なので
    • メンターなどが居たら Give & Take であったり、「恩送り」という言葉もあるが...
    • そんな都合よく師が見つかるわけでも無いし、教えてもらえる機会や、一挙手一投足が見れる機会も無い
    • が、OSSであったり、論文であったり、先人たちの物が溢れており、インターネットによってそれらは一歩踏み出せば得られる現代
    • 師が目の前にいないなら、それも良くて「目の前にいない人を師とする」とかで良いかも
    • マンガの主人公とか、別世界のトッププレイヤーなど、本当に尊敬出来る人を心の中に持つ
  • これらの競争心を「行動」「アウトプット」に変えていく
  • 1日における、貴重な持ち時間であることを胸に刻んで
  • OSSはめちゃくちゃ成長できそう
    • これをやるには issue を読んだり、merge された pull requestを読んだり、できたら pull request を出したり
    • でも今の自分は、英語もダメだし、CS などもダメ。
    • ↑が足りていないのは明らかなので、少なくとも「これなら何とかやっていけそう」までは「量」をこなすこと

時間も時間だし、思考は出来たので、とりあえずここまで。

番兵について

番兵について

線形探索の際に、探索する配列の末尾にキー値を含めることで、比較回数を減らすテクニック。

結果

番兵なし

番兵なし

========================================
cost=1: if i == N ... False
cost=2: if xs[i] == key ... False
cost=3: if i == N ... False
cost=4: if xs[i] == key ... False
cost=5: if i == N ... False
cost=6: if xs[i] == key ... False
cost=7: if i == N ... False
cost=8: if xs[i] == key ... False
cost=9: if i == N ... False
cost=10: if xs[i] == key ... False
cost=11: if i == N ... False
cost=12: if xs[i] == key ... False
cost=13: if i == N ... False
cost=14: if xs[i] == key ... False
cost=15: if i == N ... False
cost=16: if xs[i] == key ... False
cost=17: if i == N ... False
cost=18: if xs[i] == key ... False
cost=19: if i == N ... False
cost=20: if xs[i] == key ... False
cost=21: if i == N ... True

not found.
========================================

xs=[7, 8, 1, 5, 3, 4, 2, 0, 9, 6], len=10
key=-99
cost=21

コスト: 21

  • 20
  • 1

番兵あり

番兵あり

========================================
cost=1: if xs[i] == key ... False
cost=2: if xs[i] == key ... False
cost=3: if xs[i] == key ... False
cost=4: if xs[i] == key ... False
cost=5: if xs[i] == key ... False
cost=6: if xs[i] == key ... False
cost=7: if xs[i] == key ... False
cost=8: if xs[i] == key ... False
cost=9: if xs[i] == key ... False
cost=10: if xs[i] == key ... False
cost=11: if xs[i] == key ... True
cost=12: if i == N ... True
cost=13: xs.append(key)
cost=14: xs.pop()

not found.
========================================

xs=[7, 8, 1, 5, 3, 4, 2, 0, 9, 6], len=10
key=-99
cost=12 (cost=14)

コスト 12 (14)

  • 10
  • 2
  • 2 (番兵の設定、解除分)

コード

番兵なし

#!/usr/bin/env python3

import random
random.seed(0)

xs = list(range(10))
random.shuffle(xs)

i = 0
N = len(xs)
# key = 2
key = -99
result = "\nnot found."

cost = 0

print("番兵なし")
print()

print("=" * 40)

while True:
    cost += 1
    print(f"{cost=}: if i == N ... {i == N}")
    if i == N:
        break

    cost += 1
    print(f"{cost=}: if xs[i] == key ... {xs[i] == key}")
    if xs[i] == key:
        result = f"\nfound! index is {i=}"
        break

    i += 1

print(result)
print("=" * 40)
print()

print(f"{xs=}, len={N}")
print(f"{key=}")
print(f"{cost=}")

番兵あり

#!/usr/bin/env python3

import random
random.seed(0)

xs = list(range(10))
random.shuffle(xs)

i = 0
N = len(xs)
# key = 2
key = -99
result = "\nnot found."

cost = 0

print("番兵あり")
print()

print("=" * 40)

# 番兵を設定
xs.append(key)

while True:
    cost += 1
    print(f"{cost=}: if xs[i] == key ... {xs[i] == key}")
    if xs[i] == key:
        break

    i += 1

cost += 1
print(f"{cost=}: if i == N ... {i == N}")
if i == N:
    pass
else:
    result = f"\nfound! index is {i=}"

# 番兵を除外
xs.pop()

cost += 1
print(f"{cost=}: xs.append(key)")
cost += 1
print(f"{cost=}: xs.pop()")

print(result)
print("=" * 40)
print()

print(f"{xs=}, len={N}")
print(f"{key=}")
print(f"cost={cost - 2} ({cost=})")

こちらのエントリを読んだ。

www.amed.go.jp

ギャンブル依存症と、リスクの取り方の関係的な内容。とりあえず自分の思考をメモ。


  1. 状況に応じてリスクを取る・取らないは、健常者でも依存症者でも変わらない
  2. 平常時、リスクの低い方法と、高リスク高リターンの方法、どちらでも勝てる際の判断で
  3. 健常者 -> 低リスクで、コツコツ
  4. 依存症 -> 高リスクで、サクッと終わらせる or 何度かの失敗後の一発で勝つことに快感

  1. については、例えばサッカーで、同点、勝っている状態、負けている状態での、前半、後半 で守備の枚数を減らして攻撃枚数を増やす的なやつ。人間の持つ特性、感覚で、多分だけど大外しはない。

  2. はおそらく「早く楽になりたい」という自堕落的な特性、「開放される瞬間のドーパミン」、「大きく勝てる、勝ちたい」 といった感じで、そういうところに快感を感じているのかも。


大半の努力は、おそらくコツコツが王道。いきなり難しいことは理解できないし、 それが出来るのは「天才」なので、努力不要な人になる。

コツコツを続けてきた人には、時間をしっかりかけ、 積み重ねで「再現性」を確立させることに快感を得るのだろう。

その再現性だが、

  • 可視化できる、自明なもの
  • ふと気づくような、偶発的なもの

に分かれていそう。

前者はテストの点数とか、成績表。競技プログラミングで言えば、AtCoder の色とか、コンテストで獲得できる点数とか。 将棋だと、「有段者」とか「大会優勝」とか。

後者は「俺、いつの間にこんなに出来るようになったんだろう?」と気づくやつ。 競技プログラミングだと、分割統治、典型的なアルゴリズムの理解と適用、STLを使いこなせていることなど。 将棋で言えば「7手詰めハンドブックが楽に解けるようになった」とか 「勉強や感想戦で序盤ばっかし気にしていたけど、どれも一局の考え→ 中、終盤にフォーカスするようになった」とか。

んで、前者を「結果」、後者を「実力」と考えると、「再現性」という意味では

「実力があり、結果が出せる」という方向になる。


積み重ねの経験が少ない、あるいは積み重ねに気づいていない状況が続くと、早く楽になりたいので、 勝負であったり、大きく進歩、逆転できそうなところを見出すのだと思う。 実力不足を「運」でカバーするのだ。

ちなみに実力は完全に満たされることは無いので、 どうしても「運」というものに身を任すのも、一つの手段だとは考える。

とはいえ、納得のいく「妥協」「ゴール」を設定するのが大事だとも考える。

(「運」の頻度や、それからなる「リターン」をハックすることで、 自然と向かうことになる=依存しやすい環境が作れるのかも。

これやれば「コスパが良い!」を見つけたり)


また、考えてみると、環境等からなるストレスは、判断軸、大局観に影響するのだと思う。 環境に恵まれていない状況を、「苦しい」と感じ、 王道は「根本を見直すこと」でも、博打に走ったりと。

この「根本を見直す」も物凄く時間やコストがかかるように見えるし。 なので「問題を小さくする」みたいなハックであったり、 そもそも「プロブレムではなく、イシューを考える」といった方向転換的なハックが大事かもしれない。


んで、勉強、努力の習慣化についてだが、

  1. 書籍を開く
  2. 勉強する
  3. 覚えたことを問題に適用してみる

は何となくやりがちで、良く採用しているパターンだけど、多分挫折が多そうな方法だと思える。 というのも「3. 覚えたことを問題に適用してみる」で、上手く適用できる問題が探せないと 身につけるまえに忘却してしまったり、「やっぱ約立たない」みたいに興味が失せたりしそうなので。


勉強だが、詰将棋の場合、自分は普段

  • 7手詰めハンドブックは
    • 余裕持って解ける
    • ただし疲れはする
    • 着手すると、100問とかは全然解く
  • 11、13、15手詰め本は
    • 1周していない
    • 1問解くだけでもヘトヘト
    • そもそも解けずにあきらめることもある

といった感じ。これを応用すると、

  • 簡単な問題、解ける問題でウォーミングアップ
  • ギリ解けそうな、問題

の順でやると良さそう。特に後者は更に

  1. ギリ解けそうな、問題を選択
  2. 解説から解法の方向性を先に読む
  3. 書籍でそこを検索

ただし後者を取り組んでいる時は、テンポ良くなさそうだし、つらそう。 「疲れる〜休憩〜離れる」のパターンで結局やらないパターンは良くありがち。

この辺は「勉強に慣れる」ことが究極の解決策だとは思うが、 「理解モード」から「探索モード」の思考に切り替えるなどで、気分転換する みたいな、勉強の中でできると良さそう。

さらに逆転要素があれば良い (ランダムで今日の勉強を強制的に「終えて」、代わりに娯楽をするとか) のかも。