久々に更新。
といっても、書くことが無いのだけど。
とりあえず、やる気、気力が無い毎日が延々と続いているが、生きてはいる。 まあ死ぬのなんて怖いし、まだまだやりたいことは多いってのはあるし、 別に人間関係が悪いとかでも無い。むしろそちらは良好、というより職場や家族は温かいので。
ただ自分自身は納得の行く毎日、人生を送れていないことから、落ち込んでいるだけなので。 ダイエットは流石に頑張って体重落とさなきゃやばいし、仕事もパットしない日々が続いているし、 お金の面も、余裕がない状態が続いている。これが一番原因だとは思うが、
高卒で就職してからずっと実家暮らしではあるが、 いくらかのお金を実家に入れることがほぼ必須であるのと、最近、といっても前からではあるが、 親の経済状況的に厳しい時期ではあるため、給料の手取り半分、ちょい多めぐらいの金額を毎月実家に入れている。 地味ではあるが、ネット回線、サブスク(Youtube ファミリープラン)についても自分が支払ってたりする。 ※とはいえネットについては利用は自分が主なので、そこは別に当たり前だが
ボーナスも貰える立場ではあり、今年の夏もしっかり頂けたので、そこはありがたいとは思うものの、 こちらについても身内の色々で、結局半分近くはそちらに注ぎ込むのが恒例となっている。 本当は自分のローンの返済などに注ぎ込みたいところだけど。
そんな中でも飲みには行くんだよなー。ほぼ毎月、一度は行っている。 自分自身に対する甘えではあるなーとは流石に思うけど、職場の先輩や後輩、飲むの楽しいし、好きだし。 スーパーでお酒や適当な惣菜を買い、晩酌するのも好き。金麦うまい。翠ジンソーダうまい。
お酒を飲まない。特に飲み会に行かなければ、若干ではあるものの、余裕が生まれるはずだし、 何ならそれを支払いや貯金に割り当てれば、好転は間違いなくするのだろうけど、 まあそんな気力があれば苦労はしないよな。
そんな感じで、甘えなのか、普通なのか、やっぱり甘えなのか。 まあ、そんなの他人にどう言われようが、結局は自分自身がどう思っているかだし、 自分自身の行動や毎日、人生の送り方の延長線である現状なので、納得はしているし、責任は無論負う。
とはいえこんな感じの状況。抜け出したいし、そのために頑張れれば良いのだが・・・ それはもうちょいかかるかな。
そういえば2023秋季の情報処理安全確保支援士の試験について、受験申し込みは行った。 合格すると、多少なりとも会社からお金がいただけるし、自分の実力アップも見込めるので。
ただしもともと勉強する習慣は無いし、これを書いている時点で約2ヶ月というところもあって、 業務を通して身につけた、今の実力や知識的にも、このままだと間違いなくダメ。 なので勉強しなきゃなのだが、本当にやる気が出ない。
お金がない → 時間はある →(なら) 勉強をしたら良い → (合格すると) お金は入る → 今の職場での評価や、将来の転職など結果的に収入を上げるのに間違いなく役立つ → 実力を伸ばすきっかけにもなる
という流れは自明だけど、それでも、やる気が湧かないよなー。
そういえば、最近は Notion をメモ帳代わりに使っている。 業務で使うことになったのがきっかけではあるが、割と便利だなと感じている。 使い方の例としては、ギャラリービュー、テンプレートを用意し、勉強、といっても WEB で色々と記事を見ている中で、 「これ、試験に関連する内容じゃね?」的なものを適当にまとめているだけ。
あんまり身になっている気はしない、というかそこまで到達するまでに疲れる、集中が切れるので 勉強としてはダメそうだが、WEB 上に気軽に残せるのは良いなと思って。Notion 、そこそこ気に入って遊んでいる。
うーん。とりあえず、明日(というより今日)は久々に、コードが書けたらなと思う。 簡単なスクリプトで良いので、何ならコードなんか書かなくても良いので、とにかく PC に触れる。
現時点での毎日の習慣が絶望的に終わっているので(夜更かし、長時間のスマホ(Youtube)、勉強全くしない、運動全くしない) それを整理するための、スプレッドシートか何かを作るのも良いかもな。 ※Notion でも良いけど、流石に飽きもあるし、スプレッドシートも便利なので
ちょっとずつ、本当に少しずつ、ブログ投稿なども含めて、アクションを起こせたら良いかな。
最後に、最近懐かしくてよく聴いている曲のフレーズを引用。
明日からでもなく 何かの記念日でもなく
どうしようもなく涙が出てしまった今日から変わって行ければ良い
UVERworld 「7日目の決意」より
■
まつもとりー(松本 亮介)さんのスライド、いくつか読んだ。 どれも面白かった!!
というわけでめもめも。
"情報のインプットする「感覚野」と動きとしてアウトプットする「運動野」とは、脳の中で直接コミュニケーションすることができない"
(茂木健一郎「プロフェッショナルたちの脳活用法」 より引用)
(「企業に所属するエンジニアとしての社内と社外の実績の重ね方」)
ここらへんを読んだのが一番印象にのこっているので、それにたいする思考メモ
- 「感覚」によるインプットは自動、ハードに寄せた方が効率良さそうかな
- 文字 (目)、音 (耳)、動画、文字列、感触、... 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=})")
■
こちらのエントリを読んだ。
ギャンブル依存症と、リスクの取り方の関係的な内容。とりあえず自分の思考をメモ。
- 状況に応じてリスクを取る・取らないは、健常者でも依存症者でも変わらない
- 平常時、リスクの低い方法と、高リスク高リターンの方法、どちらでも勝てる際の判断で
- 健常者 -> 低リスクで、コツコツ
- 依存症 -> 高リスクで、サクッと終わらせる or 何度かの失敗後の一発で勝つことに快感
については、例えばサッカーで、同点、勝っている状態、負けている状態での、前半、後半 で守備の枚数を減らして攻撃枚数を増やす的なやつ。人間の持つ特性、感覚で、多分だけど大外しはない。
はおそらく「早く楽になりたい」という自堕落的な特性、「開放される瞬間のドーパミン」、「大きく勝てる、勝ちたい」 といった感じで、そういうところに快感を感じているのかも。
大半の努力は、おそらくコツコツが王道。いきなり難しいことは理解できないし、 それが出来るのは「天才」なので、努力不要な人になる。
コツコツを続けてきた人には、時間をしっかりかけ、 積み重ねで「再現性」を確立させることに快感を得るのだろう。
その再現性だが、
- 可視化できる、自明なもの
- ふと気づくような、偶発的なもの
に分かれていそう。
前者はテストの点数とか、成績表。競技プログラミングで言えば、AtCoder の色とか、コンテストで獲得できる点数とか。 将棋だと、「有段者」とか「大会優勝」とか。
後者は「俺、いつの間にこんなに出来るようになったんだろう?」と気づくやつ。 競技プログラミングだと、分割統治、典型的なアルゴリズムの理解と適用、STLを使いこなせていることなど。 将棋で言えば「7手詰めハンドブックが楽に解けるようになった」とか 「勉強や感想戦で序盤ばっかし気にしていたけど、どれも一局の考え→ 中、終盤にフォーカスするようになった」とか。
んで、前者を「結果」、後者を「実力」と考えると、「再現性」という意味では
「実力があり、結果が出せる」という方向になる。
積み重ねの経験が少ない、あるいは積み重ねに気づいていない状況が続くと、早く楽になりたいので、 勝負であったり、大きく進歩、逆転できそうなところを見出すのだと思う。 実力不足を「運」でカバーするのだ。
ちなみに実力は完全に満たされることは無いので、 どうしても「運」というものに身を任すのも、一つの手段だとは考える。
とはいえ、納得のいく「妥協」「ゴール」を設定するのが大事だとも考える。
(「運」の頻度や、それからなる「リターン」をハックすることで、 自然と向かうことになる=依存しやすい環境が作れるのかも。
これやれば「コスパが良い!」を見つけたり)
また、考えてみると、環境等からなるストレスは、判断軸、大局観に影響するのだと思う。 環境に恵まれていない状況を、「苦しい」と感じ、 王道は「根本を見直すこと」でも、博打に走ったりと。
この「根本を見直す」も物凄く時間やコストがかかるように見えるし。 なので「問題を小さくする」みたいなハックであったり、 そもそも「プロブレムではなく、イシューを考える」といった方向転換的なハックが大事かもしれない。
んで、勉強、努力の習慣化についてだが、
- 書籍を開く
- 勉強する
- 覚えたことを問題に適用してみる
は何となくやりがちで、良く採用しているパターンだけど、多分挫折が多そうな方法だと思える。 というのも「3. 覚えたことを問題に適用してみる」で、上手く適用できる問題が探せないと 身につけるまえに忘却してしまったり、「やっぱ約立たない」みたいに興味が失せたりしそうなので。
勉強だが、詰将棋の場合、自分は普段
- 7手詰めハンドブックは
- 余裕持って解ける
- ただし疲れはする
- 着手すると、100問とかは全然解く
- 11、13、15手詰め本は
- 1周していない
- 1問解くだけでもヘトヘト
- そもそも解けずにあきらめることもある
といった感じ。これを応用すると、
- 簡単な問題、解ける問題でウォーミングアップ
- ギリ解けそうな、問題
の順でやると良さそう。特に後者は更に
- ギリ解けそうな、問題を選択
- 解説から解法の方向性を先に読む
- 書籍でそこを検索
ただし後者を取り組んでいる時は、テンポ良くなさそうだし、つらそう。 「疲れる〜休憩〜離れる」のパターンで結局やらないパターンは良くありがち。
この辺は「勉強に慣れる」ことが究極の解決策だとは思うが、 「理解モード」から「探索モード」の思考に切り替えるなどで、気分転換する みたいな、勉強の中でできると良さそう。
さらに逆転要素があれば良い (ランダムで今日の勉強を強制的に「終えて」、代わりに娯楽をするとか) のかも。
「未踏ジュニア、伝わる提案書を作る 5 つのコツ」を読んで
ホットエントリに上がっていた 『競技プログラミングの鉄則』書評 から著者のブログにたどり着き、 そこで 未踏ジュニア、伝わる提案書を作る 5 つのコツ というエントリが勉強になったので、さっそく個人用メモ。
ちなみに読んだ感想としては
- 「未踏ジュニアって凄いな。(個人の見解)メンターにこのレベルでの提案を期待されているのか。」
- 「自分は20代後半なおっさんなのに、普段からこのレベルでの思考して仕事できているかは否なので、精進しなくては」
って感じですね。はい。。。
自身を無くしても仕方ないので、個人メモ!
1. 自分(自分たち)が主体となって進められることを示そう
2. 提案タイトルで「領域」「目的」「手段」を説明しよう
タイトルはつけないけど、やりたいことはある。自身のコンプレックスの解消ですね(笑)
- 領域
- 目的
- 手段
領域
- 独学継続支援アプリ (仮)
- スマホやPCから、日々の努力の状態を可視化したりできたらと
そもそもアプリを一気通貫で作れる自信も経験も無い、ヘボエンジニアだけど...
目的
- 個人でも努力(学習)が継続できる
- 効率が自然と高まる仕組み
- 人生の時間って、有限なので
- しっかりとスキルとして身につけたいし、それを武器に人生をより良くしたい
手段
- 自分が持つ性格、特性、傾向やバックグラウンド等を活かし、自分の努力継続させる
- この際、別の人を対象にしたアプリでなくて良い。むしろ自分に特化してても良い。
- 性格的なところのキーワード集
- 負けず嫌い
- 投資とサンクコスト
- 学歴にコンプレックスを感じる
- 大学に受験し、合格できる「実力が無いこと」にコンプレックス
- 大学の名前等は気にはなるが、あくまで〇〇卒にはこだわりは無し
- エンジニアとしての実力にコンプレックスを感じる
- 数学
- 英語
- 工学(情報)
- 計算機科学
- その他 (物理、化学)
- すぐにダラける
- 悲観的
- 臆病
- ひとりが好き
- 完璧主義
- バックグラウンド
- 将棋
- あまり努力をして、何かを成し遂げた、と言える経験が無い
- 「目標を持ち、学習、資格を取得した」は無し。
- 小中高は日々の勉強や、テスト勉強等も行っていない
- 受験勉強〜大学受験
- 将棋も自然と続けている勉強法(実戦) x ニッチな領域 x 参入障壁が高い で結果を出せている(と思っている)
3. 提案と同じような目的で作られたものを調べよう
調べていないけど、パッと思いついたプロダクトや、キーワードは以下
- みんチャレ
- パチンコ (1)
- 独学大全
- 好きこそものの上手なれ (2)
(1) パチンコ自体はやったこと無いけど、依存へのメカニズムが科学されたプロダクトであり、 その他ゲームや、ギャンブル全般も 実際に宝くじや、スクラッチくじとか買ってしまう自分もいるので。
(2) 以前読んだ本では
「トッププレイヤーでも練習が好きという人が大半を締めているわけではないが、 努力の継続などは、大切だと思って、めげずに頑張ってやっている」
という見解は得たものの、やはり好きな人には敵わないと思っているので。
それに
「トッププレイヤーは、結果を出すことや、自身の成長を感じることに喜びを感じて、 結果的に努力を継続している」
ということも見解として得ているので、
- めげずに頑張り続けることができる
- 手応えを感じる瞬間
まで繋げれたらというのが理想かと。やっぱり難しいことを理解したり、
「あっ、俺、出来るようになっている!」って瞬間は嬉しい。 7手詰めハンドブックを1周し、2周し、...と続けるうちに問題を覚えているような気になるレベルで 解けるようになっていたのはすごく嬉しかったので。
4. 想定される問題を洗い出して対策を書こう
非効率について
- *ちょっと違うかもだけど) そもそも「みんチャレ」やれば良くない?
- (Answer) プライド。
- 他人と関わることに不安もあるし、他人に依存してしまうのが嫌なので
- 不安について(x は違う、それが不安の種ではない。○はそう、その不安やね!)
- (x) こなせずに、他人に迷惑をかけてしまわないか
- (o) この仕組みに依存した努力しかできなくなるのでは (とは言え、やってから悩めばとは思うけども)
- (o) 他人と関わること
- そもそも「自走」したい
- 他人を頼るのがニガテな性格
- 最終的には「独学」が最も効率の良い努力法の解だと思う
「集中」して「勉強」することについて。
自分自身のクセというかそういうものが少し見えたので、とりあえずメモ。
--
結論から言えば「勉強する」が自身に合っていないかもしれない。なぜならば「思考停止」のエイリアスになっているから。
とにかく思考停止を避けること。なのでどちらかといえば「考える」にマインドを切り替えること。それだけだ。
--
具体的な話だと、これを書いている昨日、今日(2022/10/24, 25) は「デザインパターン」に興味が移っていて、前日はそれの「勉強」をしようと書籍を開いたところ、あまり集中できていなかったからだ。
「勉強」なので、まずは PC を立ち上げる。次にエディタを開く。ブラウザを開く。で書籍を開き、頭から読み始める…。
で、結果といえば「あまり集中できず、終わった」のだ。
(もっと集中できる…)
という悔いを残しながら。
--
一応、書籍には載っていない「Null Object パターン」について気になりだし、というかこのリンクについて思い出し、気になったので、はてブのブックマーク検索さら記事を引っ張り出して読んで、「Null Object パターン」で検索して、数ページ開いて見てみて、実際にコードを書いてみて…
といった感じで、一応「何となく理解した」「自分なりに解釈できるとこまでは行けた」ので、「勉強する」の当初の目標はクリアできていることは出来ている。
ただ「あまり集中できなかった」ので、
「時間がかかり過ぎてしまった」ということが言える。これが悔いの原因だ。
--
元々、受験勉強など、ひたすらストイックに勉強する習慣は無いし、一度で物凄く理解できるような才能もない。そのため「思考停止」した状態で勉強に望むと、結果「集中できない」に辿り着くのだと思う。
というか「勉強」という単語が「思考停止」というエイリアスになっているっぽいな。自分の場合は。
なので「考える」だ。
ちなみに、考える内容についてや、思考中に利用する道具(効率だの、公式だの、デザインパターンだの)はこの際「どうでも良い」。とにかく頭を使っている状態。これをキープする。(3月のライオンの、対局前に思考を繰り返してる、あづにゃんみたいな。またはパーティション分けされていない描写の、桐山くんみたいな)
よくよく考えると、将棋ウォーズでも勝っている時は「たぶんこの形ならこの駒で…」「この条件を相手に強いよう」「こっちが指しにくいけど、これだけは死守だな」みたいな、「言葉での思考」をやっている。
おそらく効率にも理論値があって、それを考えると、おそらく「何でも良いから」「とにかく考える」はかなり悪いんだろうけど、とにかく集中しなければ「時間が持ってかれる」。なので「頭をどんどん使う」。
その中で一個でもヒットしたら、その分だけ進捗するのかもしれないし、他にダラけるのを避ける策は現状無いので、とにかくこれでやってみるかなー、ということ。
メモ終わり!
■
起床は「07:05」。
前日に深酒した影響で、睡眠時間自体は短く、睡眠が浅くなっているものと思われる。 また前日は休みであったものの、全く勉強できていない。やれる時間はあったのだが、ダラけてしまった。
とりあえずシャワーで目を覚まし、先週きちんと部屋も掃除したのできれいな状態だ。 コンディションも問題ない。
これからプログラミング、頑張って勉強しよう。
「集中力」
を意識していきたい!
※あとで振り返りのエントリも書く
(2022/10/16 07:33)