<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>About on It's okay to be weird</title><link>https://okweird.net/ja/</link><description>Recent content in About on It's okay to be weird</description><generator>Hugo</generator><language>ja</language><lastBuildDate>Sat, 17 Jan 2026 04:20:00 +0900</lastBuildDate><atom:link href="https://okweird.net/ja/index.xml" rel="self" type="application/rss+xml"/><item><title>開発環境現状確認 2026</title><link>https://okweird.net/ja/posts/2026/01/my-dev-environment-2026/</link><pubDate>Sat, 17 Jan 2026 04:20:00 +0900</pubDate><guid>https://okweird.net/ja/posts/2026/01/my-dev-environment-2026/</guid><description>&lt;p&gt;なんか流行ってるっぽいので、開発環境を整えるのがそれなりに好きな僕も乗っかってみます。&lt;/p&gt;
&lt;h2 id="マシンos"&gt;マシン・OS&lt;/h2&gt;
&lt;p&gt;しばらくmacOSのみを使い続けています。いつからかは忘れてしまうぐらい使ってますが多分10年ぐらい？&lt;br&gt;
Linuxも興味があって、古いThinkPadを買ってUbuntuを入れてみたりもしたのですが、会社で支給されるマシンがMacBookなので、子育てで忙しい今、両方を使いこなすのは学習コストをかけられないということでMacBookを使っています。特に不満はありません。&lt;br&gt;
最近プライベートでM5 MacBook Proを買いました（M1 MacBook Airから買い替え）。スペースブラックかっこいい。&lt;/p&gt;
&lt;h2 id="エディタ"&gt;エディタ&lt;/h2&gt;
&lt;p&gt;機能の充実具合から、勝手にJetBrainsアンバサダーを自称するほどJetBrains IDEsが好きで使っていましたが、AIコーディングの波が来た時にVS Code系に乗り換えました。&lt;br&gt;
ただJetBrains IDEsに比べて不満は多い（特にRubyだとRubyMineは強力）ので、Claude CodeやCodexなどのCLIツールが全盛の今、補助ツールとしてJetBrains IDEsをまた使ってみてもいいんじゃないかと思い始めています。とはいえVS Codeは無料なのがでかい…。&lt;br&gt;
キーボードショートカットの使い分けをしたくないので、何かしらに統一したいとは思っています。&lt;/p&gt;
&lt;h2 id="コーディングエージェント"&gt;コーディングエージェント&lt;/h2&gt;
&lt;p&gt;レビュー・デバッグなどはCodex、実装はClaude Codeと使い分けてます。&lt;br&gt;
プランはCodexでやることが多かったのですが、&lt;a href="https://x.com/trq212/status/2005315275026260309"&gt;Thariq式&lt;/a&gt;をやってみて、Claude Codeにやらせてみるのも良さそうとなっています。&lt;br&gt;
それぞれ得意・不得意がある感覚がするので、何か一つにこだわるということはやらないようにしています。&lt;br&gt;
Cursorも使っていますが、色々契約してて出費がすごいことになるので、プライベートではいったん契約を打ち切っています。&lt;/p&gt;
&lt;h2 id="ターミナルエミュレータ"&gt;ターミナルエミュレータ&lt;/h2&gt;
&lt;p&gt;Ghosttyがメインです。Ghosttyはひょんなことから日本語翻訳チームに入れてもらったりしています。&lt;br&gt;
ネイティブUIが美しいし、サクサク動くので良いですね。開発も活発です。僕はコンフィグ3行で済んでます。&lt;/p&gt;
&lt;p&gt;あとは&lt;a href="https://sizu.me/laiso/posts/3ssbv27ca1o0"&gt;laisoさん&lt;/a&gt;と同じようにエージェントCLIツール専用に別アプリでWezTermを入れています。それを縦置き外部ディスプレイ1台に専用で割り当てています（もう1台の横置きディスプレイ、MacBookと合わせてトリプルモニタ）。&lt;br&gt;
チャットが長くなりがちなので、縦に置いています。4並列以上とかするなら横置きの方が良いのかもしれません。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://okweird.net/ja/posts/2026/01/my-dev-environment-2026/desktop.jpg" alt="デスク環境。中央にMacBook 1台の上に横置きモニター、右に立て置きモニターが並んでいる。"&gt;&lt;/p&gt;
&lt;h2 id="ターミナルマルチプレクサ"&gt;ターミナルマルチプレクサ&lt;/h2&gt;
&lt;p&gt;tmuxをずっと使っています。Zellijも使ってみたのですが、tmuxの方がミニマルな感じがあって、ウィンドウを数字キーで選べたり、キーボードでテキストをコピーしやすいのがあって戻ってきました（その辺はアップデートやプラグインなりでもう出来たりしそうですが）。&lt;br&gt;
プロジェクトごとにGhosttyのタブを切り、backend、frontendみたいな括りでウィンドウを分けて使ってる感じです。&lt;br&gt;
エージェントCLIツールのオーケストレーションみたいなところでの使いこなしが足りないので、その辺をもっと使いこなしていきたいと思っています。&lt;/p&gt;
&lt;h2 id="シェル"&gt;シェル&lt;/h2&gt;
&lt;p&gt;zshです。fishを使っていた時期もありましたが、bashとの互換性があるのがやっぱ良くて戻ってきました。プロンプトはStarshipを使っています。&lt;/p&gt;
&lt;h2 id="cliツール"&gt;CLIツール&lt;/h2&gt;
&lt;p&gt;この辺りを愛用しています:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;gh&lt;/li&gt;
&lt;li&gt;ghq&lt;/li&gt;
&lt;li&gt;git-wt&lt;/li&gt;
&lt;li&gt;fzf&lt;/li&gt;
&lt;li&gt;mise&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="ランチャー"&gt;ランチャー&lt;/h2&gt;
&lt;p&gt;Raycastを使っています。Karabiner-Elementsで右commandキーにハイパーキーを設定して、右commandキー + アルファベットでアプリがシュッと起動するような設定をしています。
あとはクリップボード履歴、スニペット、ウィンドウマネジメントあたりをよく使います。絵文字検索も何気に便利 😄&lt;/p&gt;
&lt;h2 id="フォント"&gt;フォント&lt;/h2&gt;
&lt;p&gt;UDEV Gothic 35NFを使っています。フォントに強いこだわりは特にないので満足しています。&lt;/p&gt;
&lt;h2 id="ブラウザ"&gt;ブラウザ&lt;/h2&gt;
&lt;p&gt;Firefoxがメインです。最近のAI機能の件とか色々ありますが、総合的に満足度が高いです。Orionを試したりしましたが、自分には機能的に不足していました。Kagiとか頑張って欲しいですけどね。Ladybirdが気になってます。&lt;/p&gt;
&lt;h2 id="ノートテイキング"&gt;ノートテイキング&lt;/h2&gt;
&lt;p&gt;Obsidianを使っています。ローカルファーストなアプリなのでClaude Codeなりと相性がいいのが今は本当に強いです。&lt;br&gt;
Notionをデータベース用途で併用していたのですが、Basesの登場とともにClaude Codeの力も借りてObsidianに統合してしまいました。移行もClaude Codeで楽ちんでした。&lt;/p&gt;
&lt;h2 id="キーボードポインティングデバイス"&gt;キーボード・ポインティングデバイス&lt;/h2&gt;
&lt;p&gt;MacBookのものを使っています。ミニマルなのがいいのと、プログラミングのうちタイピングする時間が占める割合は意外と少ないからという理屈であまりこだわりがなかったのですが、チャットする機会が増えたのでそうも言ってられなくなってきました。&lt;/p&gt;
&lt;h2 id="最後に"&gt;最後に&lt;/h2&gt;
&lt;p&gt;僕の開発環境はこんなとこでした（久々にブログを書いた…）。
あと言えることとして、どれもそんなにカスタマイズはせず、なるべくデフォルトに寄せるような設計で環境構築をしています。
M5 MacBook Proを買った時も一から構築したのですが、そんなに苦労せず移行できました。&lt;/p&gt;</description></item><item><title>Claude Codeで生成した「動く」OSSのフレームワークを公開せずに捨てた話</title><link>https://okweird.net/ja/posts/2025/08/how-i-abandoned-claude-code-generated-oss/</link><pubDate>Sun, 03 Aug 2025 16:15:00 +0900</pubDate><guid>https://okweird.net/ja/posts/2025/08/how-i-abandoned-claude-code-generated-oss/</guid><description>&lt;p&gt;Agentic coding全盛のいま、それを無視するにはいけないご時世ですが、僕はそれに関して作る人間として好きな部分と好きじゃない部分があり、モヤっとした感覚があります。&lt;br&gt;
そういった感覚を示す一例をこれからお話します。&lt;/p&gt;
&lt;h2 id="作ろうと思ったフレームワーク"&gt;作ろうと思ったフレームワーク&lt;/h2&gt;
&lt;p&gt;Goには&lt;a href="https://github.com/charmbracelet/bubbletea"&gt;Bubble Tea&lt;/a&gt;という大変使いやすいTUIフレームワークがあるのですが、Rubyには僕が知る限りそれに相当するものがありません。作りたいRubyのTUIツールがあったのにさっと作れずにいました。&lt;/p&gt;
&lt;p&gt;そこで、そもそもないなら作ればいいじゃない、そして、自分だけの力じゃ無理そうだけど、Claude Codeの力を借りればもしかしたら作れたりするんじゃないかと思いました。&lt;/p&gt;
&lt;h2 id="プロジェクトの構成"&gt;プロジェクトの構成&lt;/h2&gt;
&lt;p&gt;そうして実際に作り始めました。&lt;br&gt;
プロジェクトの構成はVS Codeでプロジェクトのルートに、bubbleteaのリポジトリをクローンしたものと、今回作るフレームワークのリポジトリをぶら下げるというものです。&lt;/p&gt;
&lt;p&gt;この構成で、Claude Codeと僕にまずbubbleteaのソースを学ばせて作っていくことにしました。&lt;br&gt;
ここでモヤっとポイントその1なのですが、Claude Codeはソースをさらっとだいたい分かった気になったようですが、僕は吐き出された解説を読んでも半分ぐらいの理解でした。まぁここで全ての詳細を理解してもしょうがないと進むことにしました。&lt;/p&gt;
&lt;h2 id="作っていく"&gt;作っていく&lt;/h2&gt;
&lt;p&gt;まずはプランモードでbubbleteaを真似してミニマムなものから徐々に重ねていくように作ってくれと伝えて計画してもらいます。
なかなか良さそうな計画ができたので進めていきます。&lt;/p&gt;
&lt;p&gt;Claude Codeはテストプログラムやテストを書きながらガンガン機能を追加してくれます。たまに詰まりますが、お手本があると賢くなるという評判通り、「bubbleteaではどうなってるか参考にして」と言うと軌道修正できます。&lt;/p&gt;
&lt;p&gt;そんなこんなで「動く」TUIフレームワークができあがってきたので、ターミナルのエキスパート、Rubyのエキスパート&lt;a href="https://docs.anthropic.com/en/docs/claude-code/sub-agents"&gt;subagents&lt;/a&gt;にレビューしてもらいます。様々な問題が指摘され、本体の手を動かすくんによって修正されました。モヤッとポイントその2です: 完全に僕は蚊帳の外じゃん。&lt;/p&gt;
&lt;p&gt;最終的には自分の作りたかったRuby TUIツールを実現できるまでになりました。自分では実現できなかったことが1〜2週間という短期間で実現できました。&lt;/p&gt;
&lt;p&gt;めでたしめでたし…？&lt;/p&gt;
&lt;h2 id="公開しないという選択"&gt;公開しないという選択&lt;/h2&gt;
&lt;p&gt;さて、どこまで作り込んでこのプロジェクトをOSSとして公開するかなぁと考えた時にふと立ち止まりました。&lt;/p&gt;
&lt;p&gt;湧き上がるモヤり…。&lt;/p&gt;
&lt;p&gt;…そして、いきなりですがプロジェクトを捨てることにしました。&lt;/p&gt;
&lt;h2 id="オーナーシップの意識が欠けるという問題"&gt;オーナーシップの意識が欠けるという問題&lt;/h2&gt;
&lt;p&gt;何がこのプロジェクトを捨てる決定をさせたか。一番はオーナーシップの意識が欠けてしまうという問題です。&lt;/p&gt;
&lt;p&gt;このプロジェクトをOSSとして公開する以上、何かしらのPRが飛んでくる可能性もあるわけです。しかし、Claude Codeに任せきりで作ったコードへの提案にオーナーであるはずの僕は答えることができません。そのレビューすらもClaudeに任せるのでしょうか？そんなのOSSと呼んでいいのか僕には判断がつきません。&lt;/p&gt;
&lt;p&gt;では生成されたコードを1から10まで全部理解できてればいいじゃないかとも言えると思います。&lt;br&gt;
しかし、自分で書いたコードなら当たり前のはずなのに、agent任せに生成されたコードは全て理解する気はなんとなく起きないのです。&lt;/p&gt;
&lt;p&gt;また、うまく指示した結果として成果物が出来上がったのだからそれでいいじゃないかと言えるかもしれませんが、それもなんだかなぁという感覚です。&lt;/p&gt;
&lt;h2 id="まとめ"&gt;まとめ&lt;/h2&gt;
&lt;p&gt;以上、agentic codingをやっていてのモヤりを紹介しました。&lt;/p&gt;
&lt;p&gt;特に今回は僕が明るくないターミナルという題材でagent任せな部分が大きかったというのはあると思います。&lt;/p&gt;
&lt;p&gt;皆さんはこのようなモヤりに遭遇したことはあるでしょうか？&lt;br&gt;
もし克服できているという人がいたらぜひ克服方法を教えてほしいです。&lt;/p&gt;</description></item><item><title>Ruby on RailsとParklifeで静的サイトを構築する</title><link>https://okweird.net/ja/posts/2025/07/static-build-rails-app-with-parklife/</link><pubDate>Mon, 28 Jul 2025 16:50:00 +0900</pubDate><guid>https://okweird.net/ja/posts/2025/07/static-build-rails-app-with-parklife/</guid><description>&lt;p&gt;この記事ではRuby on Railsで静的サイトを構築する方法を紹介します。Parklifeというツールの力を借ります。&lt;/p&gt;
&lt;h2 id="parklifeとは"&gt;Parklifeとは&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://parklife.dev/"&gt;Parklife&lt;/a&gt; とは、公式サイトの言葉を借りると下記のようなツールです:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Parklife is a Ruby library to render a Rack app (Rails/Sinatra/etc) to a static build ready to be served by GitHub Pages, Netlify, S3, Vercel, or any other server.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;要するにRailsなどのRackアプリを静的ビルドできますよーというものです。&lt;/p&gt;
&lt;p&gt;僕はBen Sheldonさんの&lt;a href="https://island94.org/2025/01/living-parklife-with-rails-coming-from-jekyll"&gt;Living Parklife with Rails, coming from Jekyll | Island94.org&lt;/a&gt;という記事を読んでこのツールの存在を知りました。&lt;br&gt;
仕事でもRails書いてるし、個人サイトもRailsで書けるなら書いてみるかーとなったところ、Hugoで書いていたサイトをうまくすんなり移行させることができました。&lt;/p&gt;
&lt;h2 id="やること"&gt;やること&lt;/h2&gt;
&lt;p&gt;やることは単純で、普通にRailsアプリを書いて、コントローラーとビューに吐き出させたものをParklifeにコマンドでクロールさせてビルドするだけです。&lt;br&gt;
ParklifeにはGitHub Pages用のGitHub Actionsのワークフローの生成機能もついているので楽ちんです。&lt;/p&gt;
&lt;p&gt;書くのはRailsアプリそのものなので、モデルやヘルパーは思いのままです。また、テストもいつもと同じ感覚で書けます。&lt;br&gt;
僕の場合は主にMarkdownのポストをHTML出力するブログ用のMVCをkramdown-parser-gfmやfront_matter_parserなどを使って書きました。&lt;br&gt;
今は主にブログぐらいしかないですが、もっと色んなページで充実させてみたいと思わせてくれています。&lt;/p&gt;
&lt;h2 id="参考になる記事とリポジトリ"&gt;参考になる記事とリポジトリ&lt;/h2&gt;
&lt;p&gt;サイトを構築するにあたって、Ben Sheldonさんの先ほどのブログ記事と&lt;a href="https://github.com/bensheldon/island94.org"&gt;彼のサイトのリポジトリ&lt;/a&gt;が超参考になりました。&lt;br&gt;
下手にサンプルコードを用意するより、このリポジトリを見て自分なりにアレンジしてみるとうまくいくと思います。&lt;/p&gt;
&lt;h2 id="まとめ"&gt;まとめ&lt;/h2&gt;
&lt;p&gt;皆さんもこの記事を読んで興味を持っていただけたら、Railsで静的サイトを作ってみてはいかがでしょうか。
Happy railing!&lt;/p&gt;</description></item><item><title>Rubyプログラムの対話型デバッグのこれまでとこれから</title><link>https://okweird.net/ja/posts/2024/12/interactive-debug-in-ruby/</link><pubDate>Fri, 13 Dec 2024 05:30:00 +0900</pubDate><guid>https://okweird.net/ja/posts/2024/12/interactive-debug-in-ruby/</guid><description>&lt;h2 id="はじめに"&gt;はじめに&lt;/h2&gt;
&lt;p&gt;この記事は&lt;a href="https://qiita.com/advent-calendar/2024/smarthr"&gt;SmartHR Advent Calendar 2024&lt;/a&gt; シリーズ1の13日目です。『Rubyプログラムの対話型デバッグのこれまでとこれから』と題して書きます。&lt;/p&gt;
&lt;p&gt;この話を書こうと思ったのにはきっかけがあります。&lt;a href="https://tech.smarthr.jp/entry/2024/10/31/145021"&gt;プロダクト開発中に見つけた問題を修正して初めてRuby on Railsにコントリビュートしました！ 〜「OSSやっていきの集い」活動報告〜 - SmartHR Tech Blog&lt;/a&gt;という会社のテックブログを執筆中に、「binding.pryを使ってブレークポイントを設定しました」と書いていたところ、レビューで同僚に「binding.pryは使っていなくて使ったのはbinding.irbですよ」と指摘されました。&lt;/p&gt;
&lt;p&gt;そういやこの辺りのRubyプログラムの対話型デバッグに使えるツール群についてよく分かっていないなということに気づいたので、調べるついでにまとめてみようというのが発端になって書いた記事です。&lt;/p&gt;
&lt;p&gt;注意として、Web上の情報を元に書いたもので、僕自身の経験に基づいて書いた記事ではないですし、書いていることに間違いがあるかもしれません。その場合は指摘していただけると嬉しいです。&lt;/p&gt;
&lt;h2 id="rubyプログラムの対話型デバッグに関わるツール郡"&gt;Rubyプログラムの対話型デバッグに関わるツール郡&lt;/h2&gt;
&lt;p&gt;まずはRubyプログラムの対話型デバッグに関わるツールにどのようなものがあって、どのように使われているのか調べてみることにしました。&lt;/p&gt;
&lt;p&gt;どのようなものがあるかとしては、このような形にまとめられそうです:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;対話型コンソールとして、主に2つがある
&lt;ul&gt;
&lt;li&gt;Ruby標準の&lt;a href="https://github.com/ruby/irb"&gt;IRB&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;サードパーティの&lt;a href="https://github.com/pry/pry"&gt;Pry&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;デバッガーとして、主に3つある
&lt;ul&gt;
&lt;li&gt;Ruby標準の&lt;a href="https://github.com/ruby/debug"&gt;debug.gem&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;サードパーティの&lt;a href="https://github.com/deivid-rodriguez/byebug"&gt;Byebug&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;サードパーティの&lt;a href="https://github.com/ruby-debug/debase"&gt;debase&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;そして、&lt;code&gt;binding.irb&lt;/code&gt; や &lt;code&gt;binding.pry&lt;/code&gt; などの行をプログラム中に挟んで、その行でデバッグコンソールを開くやり方が広く行われています。&lt;/p&gt;
&lt;h2 id="rubyプログラムの対話型デバッグのこれまでとこれから"&gt;Rubyプログラムの対話型デバッグのこれまでとこれから&lt;/h2&gt;
&lt;p&gt;では現状はどうなっているかというと、古くからサードパーティのPry + Byebug（&lt;a href="https://github.com/deivid-rodriguez/pry-byebug"&gt;pry-byebug&lt;/a&gt;）を組み合わせた対話型デバッグが主流でしたが、Ruby 3.1ぐらいにかけてIRBに不足していたPryの機能がIRBに取り込まれ、更にdebug.gemの登場により、両方ともRuby標準であるIRBとdebug.gemを組み合わせるやり方が勢いを見せているようです。&lt;br&gt;
なお、ここまで名前が登場しなかったdebaseはRubyMineで使われています。&lt;/p&gt;
&lt;p&gt;このIRBとdebug.gemと現状については、それぞれのコントリビューターの記事を読んでみると理解が進むと思います。&lt;/p&gt;
&lt;p&gt;IRBについては実際にPryのヘビーユーザーでもありIRBへ機能を持ち込んだ本人でもあるk0kubunさんがその進化を語っています:&lt;br&gt;
&lt;a href="https://k0kubun.hatenablog.com/entry/2021/04/02/211455"&gt;Pryはもう古い、時代はIRB - k0kubun&amp;rsquo;s blog&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;この記事から、Pryだけにあった機能がIRBに取り込まれていった様子が分かるかと思います。&lt;/p&gt;
&lt;p&gt;debug.gemについてはRuby 3.1での導入時に笹田さんが書かれたブログがあります:&lt;br&gt;
&lt;a href="https://techlife.cookpad.com/entry/2021/12/27/202133"&gt;Ruby 3.1 の debug.gem を自慢したい - クックパッド開発者ブログ&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Stan LoさんによるByebugとの比較記事もあります:&lt;br&gt;
&lt;a href="https://techracho.bpsinc.jp/hachi8833/2022_09_01/121134"&gt;Ruby: byebugからruby/debugへの移行ガイド（翻訳）｜TechRacho by BPS株式会社&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;この2つの記事から、Byebugの開発が鈍る一方で、debug.gemがとても充実していっている様子が分かるかと思います。&lt;/p&gt;
&lt;p&gt;また、Ruby on Railsだとどうかというと、debug.gemはRails 7からデフォルトのデバッガーになっており、Rails Guidesでも&lt;a href="https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem"&gt;Debugging with the debug Gem&lt;/a&gt;というセクションがあり、debug.gemの &lt;code&gt;binding.break&lt;/code&gt; を使う方法が紹介されています。&lt;/p&gt;
&lt;p&gt;このように見てみると、IRBとdebug.gemが本当の意味でも標準になっていっているように見えます。&lt;/p&gt;
&lt;p&gt;余談として、個人的なところだと、この組み合わせで、&lt;code&gt;bidning.irb&lt;/code&gt; と &lt;code&gt;binding.break&lt;/code&gt; という2つのブレークポイント、&lt;code&gt;irb&lt;/code&gt; と &lt;code&gt;rdbg&lt;/code&gt; という2つのモードを、どのように使い分ければ良いのかまだあまり分かっていません。お互いにコマンドを通じて行き来できるような作りになっていて、相互に持っていない機能を持っているというところまでは理解できています。この辺は実際に使いながら身につけていきたいなと思いました。&lt;/p&gt;</description></item><item><title>Kaigi on Rails 2024に参加した</title><link>https://okweird.net/ja/posts/2024/10/kaigi-on-rails-2024/</link><pubDate>Tue, 29 Oct 2024 13:35:00 +0900</pubDate><guid>https://okweird.net/ja/posts/2024/10/kaigi-on-rails-2024/</guid><description>&lt;p&gt;2024/10/25(金)、10/26(土)の2日間に渡って東京の有明で行われた&lt;a href="https://kaigionrails.org/2024/"&gt;Kaigi on Rails 2024&lt;/a&gt;に参加した。&lt;/p&gt;
&lt;p&gt;去年はオンラインでの視聴だったので、今回が福岡からの初めてのオフライン参加だった。講演も交流もとても充実していて、自分にとって総合的に学びと楽しみがとても満足度高く得られたカンファレンスとなった。&lt;br&gt;
スタッフの皆様、登壇者の皆様、交流してくださった皆様に感謝。&lt;/p&gt;
&lt;p&gt;どれも素晴らしい体験だったけど、その中から抜粋して振り返っていきたい。&lt;/p&gt;
&lt;h2 id="palkanさん"&gt;Palkanさん&lt;/h2&gt;
&lt;p&gt;まずはPalkan（&lt;a href="https://x.com/palkan_tula"&gt;@palkan_tula&lt;/a&gt;）さんの基調講演「Rails Way, or the highway」、いやー本当に良かった。&lt;/p&gt;
&lt;p&gt;というのも、僕の所属するSmartHRでは、彼の&lt;a href="https://www.packtpub.com/en-jp/product/layered-design-for-ruby-on-rails-applications-9781801813785"&gt;『Layered Design for Ruby on Rails Application』&lt;/a&gt;の読書会をイベントの直前にやるというのを僕が企画して、参加者5人で読み上げてきたところだった。&lt;br&gt;
参加した皆が良い本と言っていて、今回の基調講演も期待が高まっていたのだけど、直近ではWASM関連のお話をされていたので、今回もそのお話になるかなと思っていたら、がっつりと本でもテーマのRails Wayとその拡張のお話だったので、「あ〜読書会やって良かった」となった。&lt;/p&gt;
&lt;p&gt;Rails Wayという哲学を解釈し、どう拡張していくかというRailsに10年以上向き合ってきた彼だからこそできる講演になっていて、感激するとともに、改めて奥の深いフレームワークだなと思った。&lt;/p&gt;
&lt;p&gt;そしてPalkanさんにはイベントの1週間前に「会社で読書会をやりました！本はとても良かったです！時間があるならイベントでお話させてください！」とDMしたら「親切な言葉をありがとう！話しましょう！」と言ってくれていた。&lt;br&gt;
いつ声をかけようとドキドキしながらイベントに参加していたところ、懇親会で声をかけようとなり、同僚の英語話者の&lt;a href="https://x.com/NivekReets"&gt;@NivekReets&lt;/a&gt;の助けを借りて少しの間お話することができた。とてもフレンドリーに言葉に耳を傾けてくれて嬉しかった。「講演中の介入より抽出という言葉が特に印象に残しました」というのを伝えたかったんだけど、「介入」の英訳が出てこなかったりしてうまく伝えられず、TOEIC 960なんてこんなものだよというのを痛く味わった。英語をfluentに喋れるようになりて〜。&lt;/p&gt;
&lt;p&gt;というわけでPalkanさんの講演と彼との交流が僕のKaigi on Rails 2024ではハイライトだったように思う。&lt;/p&gt;
&lt;p&gt;講演のスライド: &lt;a href="https://speakerdeck.com/palkan/kaigi-on-rails-2024-rails-way-or-the-highway"&gt;[Kaigi on Rails 2024] Rails Way, or the highway - Speaker Deck&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="ワークショップ-rackを理解しrailsアプリケーション開発の足腰を鍛えよう"&gt;ワークショップ: Rackを理解しRailsアプリケーション開発の足腰を鍛えよう&lt;/h2&gt;
&lt;p&gt;お昼休みは2日に渡ってRackを学ぶ「ワークショップ: Rackを理解しRailsアプリケーション開発の足腰を鍛えよう」 by &lt;a href="https://x.com/hogelog"&gt;@hogelog&lt;/a&gt;さんに参加。&lt;/p&gt;
&lt;p&gt;ちょうどPalkanさんの本でRackの話が出ていて、会社の人に「Rackを学ぶのに良いリソースってありますかねぇ」などと聞いていたのでタイムリーだった。&lt;/p&gt;
&lt;p&gt;短い時間の中、お弁当をかきこんでの参加だったのだけど、RackアプリケーションからRackサーバーの作り方まで短い時間で学べ、Rackと少し仲良くなれたワークショップだった。&lt;br&gt;
Railsアプリケーションの裏でこんなものが動いているのだし、その上で成り立ってるんだなぁという気持ちになれた。&lt;/p&gt;
&lt;p&gt;hogelogさんやTAの方々、ありがとうございました！&lt;/p&gt;
&lt;p&gt;ワークショップの資料: &lt;a href="https://github.com/hogelog/kaigionrails-2024-rack-workshop"&gt;hogelog/kaigionrails-2024-rack-workshop: Rack workshop at Kaigi on Rails 2024&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="railsのpull-requestsのレビューの時に私が考えていること"&gt;RailsのPull requestsのレビューの時に私が考えていること&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://x.com/yahonda"&gt;@yahonda&lt;/a&gt;さんの講演「RailsのPull requestsのレビューの時に私が考えていること」、これも良かった。&lt;/p&gt;
&lt;p&gt;最近、同僚と共に初めてrails/railsにコントリビュートしたりしたこともあって興味をもって聞いた。Railsの話ではあるものの、タイトルが大事であったり、そこにユーザーストーリーはあるかといった話は、社内外含めて他のリポジトリのPull requestにも、果てはプロダクト開発全般にも応用できるものだと思った。&lt;/p&gt;
&lt;p&gt;講演のスライド: &lt;a href="https://speakerdeck.com/yahonda/railsnopull-requestsnorebiyunoshi-nisi-gakao-eteirukoto"&gt;RailsのPull requestsのレビューの時に私が考えていること - Speaker Deck&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Rubyで型を扱うためのRBSの概要とRailsプロジェクトへの痛みのない導入方法</title><link>https://okweird.net/ja/posts/2023/12/introduction-to-rbs/</link><pubDate>Fri, 08 Dec 2023 08:48:00 +0900</pubDate><guid>https://okweird.net/ja/posts/2023/12/introduction-to-rbs/</guid><description>&lt;h2 id="この記事の概要"&gt;この記事の概要&lt;/h2&gt;
&lt;p&gt;これは&lt;a href="https://qiita.com/advent-calendar/2023/smarthr"&gt;SmartHR Advent Calendar 2023&lt;/a&gt;シリーズ 1の8日目の記事です。&lt;/p&gt;
&lt;p&gt;この記事では、Rubyで型を扱うための基盤である&lt;a href="https://github.com/ruby/rbs"&gt;RBS&lt;/a&gt;について、いくつかのリソースを参照しながら、説明および、既存のRuby on Railsプロジェクトに恩恵だけに預かる形での導入方法を紹介します。&lt;/p&gt;
&lt;p&gt;sinsokuさんの&lt;a href="https://speakerdeck.com/sinsoku/rails-app-and-type-checking"&gt;Railsアプリと型検査&lt;/a&gt;というスライドを見て、そんな形で型定義の導入ができるのか、となったことがきっかけで試してみたことです。ありがとうございます。&lt;/p&gt;
&lt;h2 id="rbsとは"&gt;RBSとは&lt;/h2&gt;
&lt;p&gt;RBSを含めたRubyの静的解析機能周りについては&lt;a href="https://techlife.cookpad.com/entry/2020/12/09/120454"&gt;Ruby 3の静的解析機能のRBS、TypeProf、Steep、Sorbetの関係についてのノート - クックパッド開発者ブログ&lt;/a&gt;に短くまとまっています。&lt;br&gt;
これによると、RBSはその言語を主体とした4種類からなる「型を扱うための基盤」と言えるようです。&lt;/p&gt;
&lt;p&gt;また、RBS単体については、RBSのコミッターである&lt;a href="https://me.pocke.me/"&gt;Pocke&lt;/a&gt;さんが&lt;a href="https://2023.rubyworld-conf.org/ja/"&gt;RubyWorld Conference 2023&lt;/a&gt;で講演した&lt;a href="https://www.youtube.com/watch?v=TKg2UzNwdgw&amp;amp;t=21077s"&gt;RBS Tutorial&lt;/a&gt;に15分でよくまとまっています。&lt;/p&gt;
&lt;p&gt;かいつまんでまとめると、以下のような感じです:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;RBSのファイル（.rbs）はRubyのファイル（.rb）からは完全に分離されている
&lt;ul&gt;
&lt;li&gt;TypeScriptの.jsと.d.tsと似た感じ&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Rubyと構文が違う
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/sorbet/sorbet"&gt;Sorbet&lt;/a&gt;はRubyのコードで型を書くのでそこは違う&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;RBSの環境は.rbsファイルしか参照しない&lt;/li&gt;
&lt;li&gt;構文はこちら: &lt;a href="https://github.com/ruby/rbs/blob/master/docs/syntax.md"&gt;https://github.com/ruby/rbs/blob/master/docs/syntax.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この講演では後半でRBSの小さな始め方についても触れられているので、興味のある方はぜひ動画を観てみてください。&lt;/p&gt;
&lt;h2 id="実際に既存のruby-on-railsプロジェクトに導入する"&gt;実際に既存のRuby on Railsプロジェクトに導入する&lt;/h2&gt;
&lt;p&gt;RBSが何なのかぼんやり分かったところで、さっそく既存のRuby on Railsプロジェクトに導入してみましょう。&lt;/p&gt;
&lt;p&gt;ここではRBSに対応した静的型検査ツールである&lt;a href="https://github.com/soutaro/steep"&gt;Steep&lt;/a&gt;を利用して、Visual Studio Codeでの主に補完機能の強化を行うことを目標にします。&lt;br&gt;
Steepは型違反のチェック機能なども持っていますが、ここでは無視します。また、自作コードに型定義を追加することはせず、既存のgem周りの型の定義だけ取得することにします。これらは対応するのにそれなりの工数がかかるであろうためです。&lt;/p&gt;
&lt;p&gt;冒頭で挙げた&lt;a href="https://speakerdeck.com/sinsoku/rails-app-and-type-checking"&gt;sinsokuさんのスライド&lt;/a&gt;と、そちらで紹介されていた&lt;a href="https://tech.medpeer.co.jp/entry/2023-small-rbs-introduce"&gt;Railsプロジェクトへの「頑張らない型導入」のすすめ - メドピア開発者ブログ&lt;/a&gt;を存分に参考にします。&lt;/p&gt;
&lt;h3 id="steepをセットアップ"&gt;Steepをセットアップ&lt;/h3&gt;
&lt;p&gt;まずはSteepをセットアップします。&lt;/p&gt;
&lt;p&gt;Steepはこのようなものです（引用）:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Steep は、Ruby の静的型検査器です。RBS を使って、伝統的な漸進的型付けによる型検査を行うことができます。 単に型エラーを検出できるだけではなく、LSP を実装しているので、エディタ上での型エラー表示、補完、ドキュメント表示なども実装されています。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="https://techlife.cookpad.com/entry/2020/12/09/120454"&gt;Ruby 3の静的解析機能のRBS、TypeProf、Steep、Sorbetの関係についてのノート - クックパッド開発者ブログ&lt;/a&gt; より。&lt;/p&gt;
&lt;p&gt;Gemfileに以下のように &lt;code&gt;:development&lt;/code&gt; グループに追記します:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;group &lt;span style="color:#e6db74"&gt;:development&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; gem &lt;span style="color:#e6db74"&gt;&amp;#34;steep&amp;#34;&lt;/span&gt;, require: &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;end&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;bundle install&lt;/code&gt; を実行します。&lt;br&gt;
&lt;code&gt;bundle exec steep init&lt;/code&gt; を実行します。&lt;br&gt;
&lt;code&gt;Steepfile&lt;/code&gt; がプロジェクトトップディレクトリに出来るので、以下のように書き換えます:&lt;/p&gt;</description></item><item><title>サイトをHugoで作り直しました</title><link>https://okweird.net/ja/posts/2023/12/migrated-to-hugo/</link><pubDate>Sat, 02 Dec 2023 08:25:00 +0900</pubDate><guid>https://okweird.net/ja/posts/2023/12/migrated-to-hugo/</guid><description>&lt;p&gt;Astroで作っていたこのサイトを、HTML/CSSだけで書いてブログははてなブログにリンクする形にしたのですが、期待していたアクセス数の伸びはそんなになく、「やっぱ自分のローカルにデータが残るのいいよなぁ、記事も見る人が見てくれればいいや」ということで、またSSGに戻すことを検討しました。&lt;/p&gt;
&lt;p&gt;Astroを使っていたときは、バージョンアップの頻度が高くてDependabotで更新する作業が面倒だったのですが、Hugoならそんなにバージョンアップ頻度も高くなさそうということで（Go好きだし）思い切って移行しました。&lt;/p&gt;
&lt;p&gt;テーマを使ったら使ったでそれがまたメンテの対象になりそうなので、レイアウトなどは自前で作りました。&lt;/p&gt;
&lt;p&gt;あっちにいったりこっちにいったりしてますが、今回はしばらくいじらなくて済むことを期待しています。&lt;/p&gt;</description></item><item><title>『Eloquent Ruby』でRubyistになるための文化を吸収できた気がする</title><link>https://okweird.net/ja/posts/2023/09/eloquent-ruby/</link><pubDate>Sat, 23 Sep 2023 11:10:09 +0900</pubDate><guid>https://okweird.net/ja/posts/2023/09/eloquent-ruby/</guid><description>&lt;p&gt;『Eloquent Ruby』という&lt;a href="http://russolsen.com/"&gt;Russ Olsen&lt;/a&gt;によるRubyについての本を読みました。&lt;br&gt;
&lt;a href="https://www.amazon.co.jp/dp/0321584104"&gt;https://www.amazon.co.jp/dp/0321584104&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;僕の所属するSmartHRではRubyをメインのバックエンド言語としており、もっとRubyについて知りたかったのと、redditなどでおすすめの本としてよく挙がっていたというのが読むに至った動機です。&lt;br&gt;
2011年出版の本であり、ターゲットRubyバージョンは1.9と古いですが、今でも十分に役立つことが多く書いてありました。&lt;/p&gt;
&lt;p&gt;著者のRuss Olsenは他にDesign Patterns in Rubyなども書いています。&lt;br&gt;
&lt;a href="https://www.amazon.co.jp/dp/0321490452"&gt;https://www.amazon.co.jp/dp/0321490452&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="本の構成"&gt;本の構成&lt;/h2&gt;
&lt;p&gt;構成としては、以下の通りです:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PART I: The Basics&lt;/li&gt;
&lt;li&gt;PART II: Classes, Modules, and Blocks&lt;/li&gt;
&lt;li&gt;PART III: Metaprogramming&lt;/li&gt;
&lt;li&gt;PART IV: Pulling It All Together&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;PART Iでは、Rubyの基本的な書き方や、制御構造、コレクション、文字列、正規表現、シンボル、オブジェクト、ダック・タイピング、テストについて書かれています。&lt;/p&gt;
&lt;p&gt;PART IIでは、クラスについて、演算子のオーバーライドや特異メソッドの使い方。また、モジュールについて、名前空間としての使い方と、ミックスインとしての使い方。そして、ブロックについて、イテレートでの使い方と、「execute around」での使い方と、あとで実行するための使い方について書かれています。&lt;/p&gt;
&lt;p&gt;PART IIIでは、メタプログラミング的なところで、フックについて。また、method_missingについて、柔軟なエラーハンドリングに使う場合と、委譲に使う場合と、柔軟なAPIを作る場合について。そして、モンキーパッチや、自身やサブクラスを変更するクラスの作成方法について書かれています。&lt;/p&gt;
&lt;p&gt;PART IVでは、内部DSLや外部DSLの作り方、Gemの作り方、Ruby実装について書かれています。&lt;/p&gt;
&lt;p&gt;各章は、それぞれのトピックについて、全体を通してドキュメントを扱うプログラムをメインにコードも交えて説明し、In the Wildというコーナーで、RailsなどのgemやRubyビルトインコードでその章で紹介したトピックが実際にどのように使われているかを書き、Staying Out of Troubleというコーナーでトラブルを避けるためのtipsを紹介し、最後にWrapping Upというコーナーでまとめるという構成になっています。&lt;/p&gt;
&lt;h2 id="感想"&gt;感想&lt;/h2&gt;
&lt;p&gt;良いRubyプログラムを書くにはどうすればいいかということから始まり、privateなメソッドも &lt;code&gt;send&lt;/code&gt; を使えば呼ぶことができたり、クラスがオープンであることなど、プログラマーが責任を負うことを重視しているといった、Rubyの哲学まで知れた気がしてとても良い本でした。&lt;br&gt;
前書きで、Rubyを使いこなすには言語の構文といった基礎だけでなく、文化を吸収することが大事ということが書かれていました。この本を読むことで、Rubyの文化を知り、Rubyを使いこなすにあたってどのような姿勢で取り組めばいいかが少しつかめたような気がします。&lt;br&gt;
あとは、In the Wildというコーナーが特に面白かったです。魔法のように使わせてもらっているgemやRuby自体も、当たり前だけど1つ1つあの手この手を使って人の手で書かれているのだなぁと再認識しました。&lt;/p&gt;
&lt;p&gt;今後も必要な時に参照して、良いRubyのコードを書く一助になってくれる気がしています。良い本でした。&lt;/p&gt;</description></item><item><title>子育てをしながらのスキルアップに対する焦りと向き合うために決めたこと</title><link>https://okweird.net/ja/posts/2023/09/skill-up-along-with-childcare/</link><pubDate>Sat, 23 Sep 2023 11:10:09 +0900</pubDate><guid>https://okweird.net/ja/posts/2023/09/skill-up-along-with-childcare/</guid><description>&lt;p&gt;僕は昨年1月に結婚した妻と、昨年7月に生まれた子どもの3人で暮らしている。&lt;/p&gt;
&lt;p&gt;子育てが始まると時間が無くなるとはよく言うものの、本当にそうだというのを、子が1歳を過ぎた今も痛いほど実感している。&lt;br&gt;
平日は仕事と家事をこなしたあとは疲れで何もやる気が起こらないし、休日は買い物やら子どもの世話やらであっという間に終わっていく。&lt;/p&gt;
&lt;p&gt;時間が無くなることで、自分の中で特に問題になったのが、スキルアップを満足にできていないという焦りが生まれてくることだ。&lt;br&gt;
休日に家族の相手をしていても、「あ〜あれもこれもまだまだ覚えることがたくさんあるのにやばいなぁ」とかそんな考えが頭を支配したまま過ごしてしまったりする。&lt;/p&gt;
&lt;p&gt;しかし、これって学習ができていないことを家族のせいにしていないかということに気がついた。&lt;br&gt;
そもそも独身時代に学習に打ち込めていたかというと怪しい気がする。&lt;br&gt;
こんな心理状態になっているのは自分にとっても家族にとっても何も良くないと思った。&lt;/p&gt;
&lt;p&gt;そこで、家族と過ごす時間は目の前の家族と全力で向き合う時間にし、学習は独りになれる時間だけに集中して行うことにしようと決めた。&lt;br&gt;
平日朝、妻子を送り出してからリモートワークの始業時間まで1時間ある。そこを学習時間にする。&lt;br&gt;
今は疲れで始業まで二度寝してしまったりしているので、まずは運動などで体力をつけて疲れに打ち勝てるようにし、その時間を学習に充てる。&lt;br&gt;
スキルアップに天井はないのだから、無限に時間があったとて、それでも足りないと思うのが心情だろう。継続すれば毎日1時間でも、やがては積み上がっていく。それで十分じゃないか。&lt;/p&gt;
&lt;p&gt;子育てというたいへんな幸せを過ごす中で、スキルアップとどう向き合うかは難しいところだけど、僕はこのように、学習する時間はここだけというのを決めて、それだけできれば十分というように、考えることを減らすことにした。&lt;br&gt;
子育てもスキルアップも丁度良く楽しく頑張っていけたらと思う。&lt;/p&gt;</description></item><item><title>『Atomic Habits』を読んで運動の習慣を身につけられそうな気分になった</title><link>https://okweird.net/ja/posts/2023/08/atomic-habits/</link><pubDate>Sun, 13 Aug 2023 11:33:51 +0900</pubDate><guid>https://okweird.net/ja/posts/2023/08/atomic-habits/</guid><description>&lt;p&gt;僕は妻と1歳の子と3人で暮らしています。&lt;br&gt;
子育てをしながら毎日を生きていると、疲れて機嫌が良くない状態になってしまったり、仕事以外のことをやる余裕がなくなったりということが続いてしまいます。&lt;br&gt;
これは体力が無いことも一つの要因ではないかと、体力をつけるために運動をしなければと思いつつ、運動をするための体力がなくて、いつまでも体力がつかないという悪循環に陥ってしまっています。&lt;/p&gt;
&lt;p&gt;そんな自分を変えたくて、運動習慣をどうにかして身につけたいと、習慣に関する本として度々名前が挙がっていた『Atomic Habits』（邦題: 『ジェームズ・クリアー式 複利で伸びる1つの習慣』）を読んでみたのでした。&lt;br&gt;
&lt;a href="https://www.amazon.co.jp/dp/4775942158"&gt;https://www.amazon.co.jp/dp/4775942158&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="本の紹介"&gt;本の紹介&lt;/h2&gt;
&lt;p&gt;この本では、まずどんな人になろうとするのかが大事と語られています。例えば、読書をすることではなく、読書家になることが目標、マラソンを走ることではなく、ランナーになることが目標といった具合です。&lt;br&gt;
そして、習慣によってあなたは習慣そのものになるのだと言っています。&lt;/p&gt;
&lt;p&gt;また、習慣には4つのステップがあると言っています。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;きっかけ (Cue)&lt;/li&gt;
&lt;li&gt;欲求 (Craving)&lt;/li&gt;
&lt;li&gt;反応 (Response)&lt;/li&gt;
&lt;li&gt;報酬 (Reward)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;なんかよく似たものを見たことがあるなぁと思ったら、Courseraの『Learning How to Learn』で知った習慣の4つの要素でした。こちらはCue（きっかけ）、Routine（決まりごと）、Reward（報酬）、Belief（確信）とされていてちょっと違いますね。&lt;br&gt;
&lt;a href="https://tkykhk.hatenablog.com/entry/2016/07/03/175252"&gt;https://tkykhk.hatenablog.com/entry/2016/07/03/175252&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;それはさておき、さらに、良い習慣を作るための4つの法則を紹介しています。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;分かりやすくする (Make It Obvious)&lt;/li&gt;
&lt;li&gt;魅力的にする (Make It Attractive)&lt;/li&gt;
&lt;li&gt;簡単にする (Make It Easy)&lt;/li&gt;
&lt;li&gt;満足感のあるものにする (Make It Satisfying)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;具体的な適用方法の例を順に紹介します。&lt;/p&gt;
&lt;p&gt;分かりやすくするための1例として、「いつ、どこで、〜をする」といったように決めておくことがあります。&lt;br&gt;
魅力的にするための1例として、やりたい（want to）行動を、しなければならない（need to）、つまり習慣化したい行動に結びつけることがあります。&lt;br&gt;
簡単にするための1例として、2分ルールという、とりあえず2分だけやるといったルールに従うことがあります。&lt;br&gt;
満足感のあるものにするための1例として、即時の報酬を自分に与えるようにすることがあります。&lt;/p&gt;
&lt;p&gt;基本的には、この習慣の4ステップと、4つの法則について、様々な実験のデータなどを根拠として説明していく本です。&lt;br&gt;
どこかで聞いたことのある話も多分にありつつ、習慣を身につけられそうな気分にはさせてくれました。&lt;/p&gt;
&lt;h2 id="本を読んで実践していく"&gt;本を読んで実践していく&lt;/h2&gt;
&lt;p&gt;ただ、頭で理解しただけじゃだめだと思い、じゃぁ運動習慣を身につけるためにどうやっていく？というのを考えてみました。&lt;/p&gt;
&lt;p&gt;まず、何を習慣化させるかというところですが、&lt;a href="https://fitboxing.net/2/"&gt;Fit Boxing 2&lt;/a&gt;をやっていこうと思います。酷暑の中、室外で運動するのは厳しく、家の中でなら費用もかからず、すぐ習慣化を始められそうな気がするからです。&lt;/p&gt;
&lt;p&gt;次に、4つの法則に基づいて行動設定をしてみます。&lt;/p&gt;
&lt;p&gt;「分かりやすくする」ために、朝、妻子を見送ったら、帰ってきてすぐ始めることにします。&lt;br&gt;
「魅力的にする」ために、運動をして初めて、学習をしていいことにします（学習がwant toって自分ながら偉いなと思いつつ）。&lt;br&gt;
「簡単にする」ために、ゲームのおすすめ1セッション時間である38分より短く、28分から始めます。また、毎日とは言わず、まずは週3日からスタートします。&lt;br&gt;
「満足感のあるものにする」ために、エクササイズが終わったら、報酬としてお気に入りの味のプロテインをゴクッと飲むことにします。そのあとのシャワーも報酬に入れてしまいます。&lt;/p&gt;
&lt;p&gt;ここまで書いて、最初から目標を高く持ちがちだったので、特に「簡単にする」ことで、なんだか続けていけるような気がしてきました。&lt;/p&gt;
&lt;h2 id="まとめ"&gt;まとめ&lt;/h2&gt;
&lt;p&gt;この本では冒頭で、重要なのはゴールの設定ではなくシステムであると言っています。&lt;br&gt;
システムは設定したつもりになれたので、家族の幸せのためにも、あとは朝に拳を振っている姿を続けていこうと思います。&lt;/p&gt;</description></item><item><title>近況 - SmartHR入社とか</title><link>https://okweird.net/ja/posts/2023/06/recent-state-2023-june/</link><pubDate>Sat, 03 Jun 2023 14:20:00 +0900</pubDate><guid>https://okweird.net/ja/posts/2023/06/recent-state-2023-june/</guid><description>&lt;p&gt;ここのところブログをあまり書けてなかったので近況でも書いてみる。&lt;/p&gt;
&lt;h2 id="gmoペパボ退社"&gt;GMOペパボ退社&lt;/h2&gt;
&lt;p&gt;2019年9月から約3年半所属したGMOペパボを退社した。&lt;/p&gt;
&lt;p&gt;30代半ばにして正社員経験がなく技術的な経験も浅かった僕を雇ってくれた、とても懐の深い会社だと思う。&lt;br&gt;
ホスティングという広く深い世界で、様々な技術や知識を得ることができた。&lt;br&gt;
&lt;a href="https://recruit.pepabo.com/info/important/"&gt;ペパボで大切にしている3つのこと&lt;/a&gt;のうち、特に「みんなと仲良くすること」という点について実践できたように思う。なぜか鹿児島のメンバーと特に仲良くさせてもらったりもした。&lt;br&gt;
ペパボのエンジニアは皆レベルが高く、エンジニアとしても人としてもロールモデルと言えるような人に出会えたのもとても大きかった。&lt;/p&gt;
&lt;p&gt;3年半、本当に充実していた。ペパボが今後の自分の中での基準になっていくことだろうと思う。&lt;/p&gt;
&lt;h2 id="smarthr入社"&gt;SmartHR入社&lt;/h2&gt;
&lt;p&gt;色々と考えた上で転職活動した結果、縁があって2023年4月にSmartHRに入社した。&lt;/p&gt;
&lt;p&gt;オリエンテーションがとても充実していて、色んなグループの色んな背景や活動を頭にインプットすることができ、会社がどうやって動いているのかを初めから知ることができた。&lt;br&gt;
開発面ではスクラムが取り入れらており、僕はアジャイルから未経験なので、色々と本を読んだりして、そのキャッチアップを行っている。&lt;br&gt;
クロスファンクショナルが推進されていることもあり（クロスファンクショナルという言葉の定義が今も自分の中でフワッとしてはいるものの）、フロントエンドを触ってみたりもしている。&lt;/p&gt;
&lt;p&gt;40歳も遠くない今、これから数年のがんばりが今後のキャリアに大きく影響するだろうと思うところもあり、しっかりやっていこうと考えている。&lt;/p&gt;
&lt;h2 id="妻が復職子が保育園入園"&gt;妻が復職、子が保育園入園&lt;/h2&gt;
&lt;p&gt;SmartHR入社と同じ4月から妻が復職し、子が保育園に入園した。&lt;/p&gt;
&lt;p&gt;妻の出社が早いため、夫婦とも6時に起きて、妻が準備をする間、朝ご飯を作ったりといった朝の生活に変わった。&lt;br&gt;
子は早速、保育園で風邪をもらってきて家族みんなに感染ったり、突発性発疹が出て治ったかと思いきやまた別の発疹が出たりと洗礼を浴びた。&lt;/p&gt;
&lt;p&gt;なかなか学習の時間が取れない生活なので、工夫していく必要がありそうというのを感じている。&lt;/p&gt;
&lt;h2 id="これから"&gt;これから&lt;/h2&gt;
&lt;p&gt;今後はひとまず、仕事で使っているRuby、Ruby on Rails、React、Next.jsといった技術に熟達したい。
チュートリアルを読みつつ、サンドボックス的なWebアプリケーションを自作して、手を動かしながら覚えていきたいと思っている。&lt;/p&gt;
&lt;p&gt;一方で、&lt;a href="https://okweird.net/blog/resolution-2023"&gt;今年の抱負&lt;/a&gt;などでもずっとやりたいと言っている数学は、残念ではあるがしばらくやれなさそう。&lt;br&gt;
単純に時間がない。色々やりたいけど子育てしている以上、選択の必要がある。&lt;/p&gt;
&lt;p&gt;というわけで、家族との時間を大事にしつつ、研鑽を小さくコツコツ重ねていきたい。&lt;/p&gt;</description></item><item><title>単一NotionページをScrapboxページ用テキストに変換するNode.jsツール、notion2sbを作った</title><link>https://okweird.net/ja/posts/2023/01/notion-2-sb/</link><pubDate>Tue, 10 Jan 2023 21:00:00 +0900</pubDate><guid>https://okweird.net/ja/posts/2023/01/notion-2-sb/</guid><description>&lt;p&gt;最近はGoのCLIツールを&lt;a href="https://okweird.net/blog/first-go-oss-product"&gt;作ったり&lt;/a&gt;、&lt;a href="https://okweird.net/blog/powerful-go-cli-app"&gt;学んだり&lt;/a&gt;するのが一番楽しいと思う今日この頃なのですが、ふとNode.jsとTypeScriptでもCLIツールを作れないかと思い立ちました。&lt;/p&gt;
&lt;p&gt;何かネタはないかな〜と思っているうち、そういえばScrapboxもNotionもよく使うのだけど、Scrapbox→Notionの記事などはあっても、逆のNotion→Scrapboxのものはあまり無いなぁと気づいたのでした。&lt;/p&gt;
&lt;p&gt;そこで出来たのがnpmパッケージとして公開した、&lt;a href="https://www.npmjs.com/package/@tommy6073/notion2sb"&gt;notion2sb&lt;/a&gt;というツールです。&lt;/p&gt;
&lt;h2 id="何をするツール"&gt;何をするツール？&lt;/h2&gt;
&lt;p&gt;名前は&lt;a href="https://github.com/pastak"&gt;pastak&lt;/a&gt;さんの&lt;a href="https://github.com/pastak/scrapbox-converter/tree/master/packages/md2sb"&gt;md2sb&lt;/a&gt;にならっています。&lt;br&gt;
md2sbはMarkdownをScrapboxテキストにエンコードするツールですが、md2sbがMarkdown→Scrapboxなら、notion2sbはNotion→Scrapboxというわけです。&lt;/p&gt;
&lt;p&gt;そして、実際のところ、名前だけでなく、ほとんどの処理をmd2sbに委譲しています。&lt;br&gt;
どういうことかというと、READMEにも書いていますが、notion2sbがやっているのは、NotionからMarkdownとしてエクスポートされた単一ファイルを、md2sb互換のものに変換し、md2sbにそれを渡しているというものです。&lt;br&gt;
具体的には、Notionの数式記法などは、そのままmd2sbに渡すとエンコードされないため、notion2sbにて事前変換を行っています。&lt;/p&gt;
&lt;p&gt;それに加えて、ページ中の画像を抽出し、&lt;a href="https://github.com/shokai"&gt;shokai&lt;/a&gt;さんの&lt;a href="https://www.npmjs.com/package/gyazo-api"&gt;gyazo-api&lt;/a&gt;を利用してGyazoにアップロードし、画像リンクをGyazoのURLに置換するということも行っています。&lt;br&gt;
そのおかげで、Notionのページに貼ってあった画像を、そのまま変換されたScrapboxのページでも表示することが可能となります。&lt;/p&gt;
&lt;p&gt;この通り、やっていることとしてはそんなに大きくないツールです。実際、行数としても100行程度です。&lt;/p&gt;
&lt;h2 id="何を学べたか"&gt;何を学べたか&lt;/h2&gt;
&lt;p&gt;このツールの作成を通じて、何を学べたか書いてみます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;慣れないTypeScriptを、WebStormに怒られつつ、型を付けながら書いて学ぶことが出来た。&lt;/li&gt;
&lt;li&gt;Node.jsでのCLIツールの作り方の初歩を覚えた。&lt;/li&gt;
&lt;li&gt;tsconfig.jsonなどを調整し、モジュールを、古いものも含めて、互換性を保ちながらインポートする方法を学んだ。&lt;/li&gt;
&lt;li&gt;npmパッケージの公開の仕方が分かった（やってみるとめちゃ簡単！）。&lt;/li&gt;
&lt;li&gt;NotionやScrapboxのテキスト形式をより知ることが出来た。&lt;/li&gt;
&lt;li&gt;Gyazo APIの挙動を知ることが出来た。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;けっこう学べましたね。こんな小さなツールでも、実際に手を動かすと色々なことが学べるという良い例かもしれません。&lt;/p&gt;
&lt;h2 id="今後どうしたいか"&gt;今後どうしたいか&lt;/h2&gt;
&lt;p&gt;さて、この小さなツールですが、まだまだ未完成なので、次のようなことをやっていきたいです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;md2sb互換のMarkdownに変換しきれていない部分も多い（リストなどのブロックが空ブロックを挟まずに連続していると乱れる、など）ため、改善したい。&lt;/li&gt;
&lt;li&gt;複数ページ変換機能
&lt;ul&gt;
&lt;li&gt;単一ページにしか対応していないため、ゴソッと複数ページをバルクで変換する機能も追加したい。具体的には、インポートしやすいようにScrapbox用のJSONファイルに変換することになりそう。&lt;/li&gt;
&lt;li&gt;変換したページへのリンクを維持したまま繋げられるようにする。&lt;/li&gt;
&lt;li&gt;複数ページを変換する際に、ページ名が被った時の処理を考える。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="まとめ"&gt;まとめ&lt;/h2&gt;
&lt;p&gt;というわけで、&lt;a href="https://www.npmjs.com/package/@tommy6073/notion2sb"&gt;notion2sb&lt;/a&gt;の紹介と、その作成を通じて思ったことを書いてみました。&lt;/p&gt;
&lt;p&gt;アイデアを形にするまで、それほど時間はかかりませんでしたが、洗練度を上げることにこそプログラミングの本質があるのかもしれないという意味で言えば、まだまだ未完成なものだと思います。&lt;/p&gt;
&lt;p&gt;機会があれば、改善を重ねていきたいです。&lt;/p&gt;</description></item><item><title>2023年抱負 - 家族第一に、数学と機械学習をやる</title><link>https://okweird.net/ja/posts/2023/01/resolution-2023/</link><pubDate>Tue, 03 Jan 2023 11:51:00 +0900</pubDate><guid>https://okweird.net/ja/posts/2023/01/resolution-2023/</guid><description>&lt;p&gt;子と過ごす初正月、家族に囲まれてとても幸せに満ちていたなーと思いつつ、恒例の年初抱負を書いてみる。&lt;/p&gt;
&lt;h2 id="技術"&gt;技術&lt;/h2&gt;
&lt;h3 id="機械学習"&gt;機械学習&lt;/h3&gt;
&lt;p&gt;昨年はMidjourneyやChatGPTが世に出たりすることで、AIが飛躍的な進歩を遂げた年だったように思う。&lt;br&gt;
流れに置いていかれて、その辺りの領域をブラックボックスにしたままでは、自身のキャリアとしても、技術の利用者としても危険だと思い、今年は機械学習を真剣にやっていくことにした。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://okweird.net/blog/resolution-2022"&gt;去年の抱負&lt;/a&gt;から言い続けていることではあるが、今年は本気度を上げて取り組んでいきたい。&lt;/p&gt;
&lt;h3 id="数学"&gt;数学&lt;/h3&gt;
&lt;p&gt;そのためにも、まずは数学をやる。&lt;/p&gt;
&lt;p&gt;僕は高校を1年で中退していて、20代半ばで受けた高等学校卒業程度認定試験も英語だけ受験して取得した。そのため、まずは高校数学からと思っている。Long long journeyではあるがやっていきたい。&lt;/p&gt;
&lt;p&gt;手始めに&lt;a href="https://www.obunsha.co.jp/service/nagaoka/other.html"&gt;長岡の教科書&lt;/a&gt;をやり終えるところから（今は数学IIの途中）。&lt;br&gt;
AIの第一人者である&lt;a href="https://en.wikipedia.org/wiki/Andrew_Ng"&gt;Andrew Ng&lt;/a&gt;先生が関わる&lt;a href="https://www.deeplearning.ai/courses/mathematics-for-machine-learning-and-data-science-specialization/"&gt;Mathematics for Machine Learning and Data Science Specialization&lt;/a&gt;という、まさに自分のためのようなコースが1月にリリースされるようなので、それもやっていきたい。&lt;/p&gt;
&lt;h2 id="家族"&gt;家族&lt;/h2&gt;
&lt;p&gt;今は何よりも家族の幸せを優先にしたいと思っている。去年、子が生まれたことで、ますますその思いが強くなった。&lt;br&gt;
今年の4月には妻が仕事に復帰し、子が保育園に入る予定なので、できる限り家事を協力的にやっていく。&lt;br&gt;
学習にかけられる時間は少なくなるだろうから、技術は流行りのあれこれに手を出すのではなく、ファンダメンタルなものをやっていくことになるかもしれない。&lt;/p&gt;
&lt;h2 id="まとめ"&gt;まとめ&lt;/h2&gt;
&lt;p&gt;今年はこんな感じになりそうだろうか。やる事としては、かなり絞った形となる。&lt;/p&gt;
&lt;p&gt;去年もやる事は最小限にと書いていたが、その方針は変わらないだろう。&lt;br&gt;
家族の幸せを第一に、毎日の小さな喜びを大事にしながら、楽しく過ごせていけたらいいなと思っている。&lt;/p&gt;</description></item><item><title>2022年振り返り</title><link>https://okweird.net/ja/posts/2022/12/year-in-review-2022/</link><pubDate>Thu, 29 Dec 2022 14:33:00 +0900</pubDate><guid>https://okweird.net/ja/posts/2022/12/year-in-review-2022/</guid><description>&lt;p&gt;今年も恒例の年の振り返りをする。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://okweird.net/blog/resolution-2022"&gt;2022年抱負 - 数学と機械学習、楽器をやっていく&lt;/a&gt;に書いたことを中心に振り返っていく。&lt;/p&gt;
&lt;h2 id="技術"&gt;技術&lt;/h2&gt;
&lt;h3 id="数学"&gt;数学&lt;/h3&gt;
&lt;p&gt;やろうと思ったものの、&lt;a href="https://www.amazon.co.jp/dp/B071YHC1KN/"&gt;長岡先生の授業が聞ける高校数学の教科書&lt;/a&gt;の数学I+Aを終えて、少し数学IIを進めるに留まった。&lt;br&gt;
時間が取れなかったり、他に優先したことがあったりで、なかなか時間が取れなかった。&lt;/p&gt;
&lt;h3 id="機械学習"&gt;機械学習&lt;/h3&gt;
&lt;p&gt;全くやれていない。まぁ、そもそも前段として数学をやる必要があるので当然ではある。今年はAIが飛躍的な進歩を遂げたと言っても良い年だったので来年こそはやる。&lt;/p&gt;
&lt;h3 id="go"&gt;Go&lt;/h3&gt;
&lt;p&gt;本を『The Go Programming Language』、『エキスパートたちのGo言語』、『実用 Go言語』、『Powerful Command-Line Applications in Go』と読んだりと、結果的に昨年に続き一番力を入れた技術となった。&lt;br&gt;
ただ、目立ったアウトプットを残せていないのは課題。もっと課題を発見し、形にする力をつけていきたい。&lt;/p&gt;
&lt;h2 id="趣味"&gt;趣味&lt;/h2&gt;
&lt;h3 id="楽器"&gt;楽器&lt;/h3&gt;
&lt;p&gt;全くもってやれていない。まぁ、結婚したり子どもが生まれたりで、今は厳しい感じではある。でも、いつかは教室に通ったりバンドを組んだりということをやりたい。&lt;/p&gt;
&lt;h3 id="xr"&gt;XR&lt;/h3&gt;
&lt;p&gt;持っていたMeta Quest 2は売り払ってしまった。こちらについても、結婚して子どもが生まれて、家でヘッドセットをつけるのがこっ恥ずかしいというのがあった。よっぽど今後流れが来ない限り、おそらくもう手を出すことはないかなぁという感じ。&lt;br&gt;
メタバース的なものだと、タッチポイントがXRである必要もあんま無いのかなぁとか思ったりしている。そもそも既存のMMORPGなんかだって立派なメタバースなんじゃないかとか。&lt;/p&gt;
&lt;h2 id="まとめ"&gt;まとめ&lt;/h2&gt;
&lt;p&gt;今年の抱負では、まとめとして、&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;やることは最小限に、あまり根を詰めずに余裕のある豊かな日々を送れたらと思っている。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;と書いていたが、結婚と、子どもが生まれたことにより、やることを最小限にするのは必然の結果となり、根を詰めないというところは重要になってきたと思う。&lt;br&gt;
豊かな日々は送れたので、そういう意味では達成出来たのかなという感じ。&lt;/p&gt;
&lt;p&gt;まぁ、とにもかくにも子どもができたというのはとてつもなく大きなイベントであったし、それに尽きた年だったと思う。&lt;br&gt;
大きな苦労もあったが、大きな幸せもあった。改めて妻や支えてくれる方々に感謝。&lt;/p&gt;
&lt;p&gt;その子育てもだいぶ慣れてきたので、来年はもっと余裕のある年になるかもしれないと思っている。&lt;/p&gt;
&lt;h2 id="ではでは"&gt;ではでは&lt;/h2&gt;
&lt;p&gt;それでは、今年もお世話になりました。来年もどうぞよろしくお願いいたします。&lt;br&gt;
みなさま良いお年を！&lt;/p&gt;</description></item><item><title>ブログをAstroに移行した</title><link>https://okweird.net/ja/posts/2022/12/migrated-to-astro/</link><pubDate>Wed, 21 Dec 2022 19:45:00 +0900</pubDate><guid>https://okweird.net/ja/posts/2022/12/migrated-to-astro/</guid><description>&lt;p&gt;個人的に尊敬しているRyosuke IWANAGAさんによるブログ記事、&lt;a href="https://blog.riywo.com/2022/10/founded-my-company-in-canada/"&gt;カナダで自分の会社を作ってみた - As a Futurist&amp;hellip;&lt;/a&gt;で見かけたAstro（公式サイトによるとall-in-one web framework）が気になったので、Gatsbyからガッと移行してみたら簡単に移行できました。&lt;/p&gt;
&lt;p&gt;記述も楽だし、サイトは速いし、Vercelでのデプロイも一瞬だし、いい感じです。&lt;br&gt;
Gatsbyは自分のブログには少しオーバースペックな感じでした。&lt;/p&gt;
&lt;p&gt;デザインは公式の&lt;a href="https://astro.build/themes/details/blog/"&gt;Blog | Astro&lt;/a&gt;テーマほぼそのままですが、読むのにフォーカスできていい感じになったかなと思ってます。&lt;/p&gt;
&lt;p&gt;ではでは、これからもこのブログをどうぞよろしくお願いします。&lt;/p&gt;</description></item><item><title>書籍『Powerful Command-Line Applications in Go』でGoによるCLIツール作成のための「パワー！」をもらった</title><link>https://okweird.net/ja/posts/2022/12/powerful-go-cli-app/</link><pubDate>Wed, 21 Dec 2022 15:57:00 +0900</pubDate><guid>https://okweird.net/ja/posts/2022/12/powerful-go-cli-app/</guid><description>&lt;p&gt;この記事は&lt;a href="https://adventar.org/calendars/7722"&gt;🎅GMOペパボエンジニア Advent Calendar 2022&lt;/a&gt;の21日目の記事です。&lt;/p&gt;
&lt;h2 id="まず始めに-goとcliツールの相性の良さ"&gt;まず始めに: GoとCLIツールの相性の良さ&lt;/h2&gt;
&lt;p&gt;Goの主な用途にCLIツールを書くというのがあると思います。&lt;/p&gt;
&lt;p&gt;シングルバイナリにコンパイルされることや、クロスコンパイルが容易なことから、&lt;a href="https://github.com/kubernetes/kubectl"&gt;kubernetes/kubectl&lt;/a&gt;や&lt;a href="https://github.com/hashicorp/terraform"&gt;hashicorp/terraform&lt;/a&gt;といった広く使われているCLIツールもGoで作成されています。&lt;/p&gt;
&lt;p&gt;私も、&lt;a href="https://github.com/tommy6073/takolabel"&gt;tommy6073/takolabel&lt;/a&gt;という、GitHubのlabelsを複数のリポジトリに跨って操作できるツールを作成したりしました（このツールが生まれた経緯についてはこちら: &lt;a href="https://okweird.net/blog/first-go-oss-product"&gt;初めてのGo製CLIツール作成、初めてのOSS公開に込められた物語&lt;/a&gt;）。&lt;/p&gt;
&lt;p&gt;特に、Goで作成されたCLIツールのユーザーとして思うのは、依存関係を気にすることなく、バイナリ1発で実行できるというのが本当に強力だということです。&lt;/p&gt;
&lt;h2 id="そしてpowerful-command-line-applications-in-goと出会った"&gt;そして『Powerful Command-Line Applications in Go』と出会った&lt;/h2&gt;
&lt;p&gt;さて、そんなこんなで、GoでのCLIツール作成技術を上げたいなと思っていたところ、redditの&lt;a href="https://www.reddit.com/r/golang/"&gt;r/golang&lt;/a&gt;でこんなポストを発見しました:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.reddit.com/r/golang/comments/ycjdt1/is_there_a_practical_golang_entry_point_for/"&gt;Is there a practical Golang entry point for experienced programmers? : golang&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Pythonによる&lt;a href="https://automatetheboringstuff.com/"&gt;Automate the Boring Stuff with Python&lt;/a&gt;に相当するGoの本はないかとの質問ポストでしたが、それに対するコメントの中に&lt;a href="https://pragprog.com/titles/rggo/powerful-command-line-applications-in-go/"&gt;Powerful Command-Line Applications in Go: Build Fast and Maintainable Tools&lt;/a&gt;が紹介されていたのです。&lt;/p&gt;
&lt;p&gt;発売時点ではRed HatでAutomation Consultantとして働いているRicardo Gerardiによる本とのことで良さそうと思い、早速買ってみて読んだところ、これが実際にとてもとても良い本だったのでした。&lt;/p&gt;
&lt;p&gt;この本では、実際に動くCLIツールを、サンプルコードと共にテストを書きながら学びます。&lt;br&gt;
そのトピックは、ファイル、プロセス、REST API、インタラクティブなターミナルツール、SQLデータベースと広範囲です。そのことから、CLIツールに留まらず、Goでテスタブルな良いコードを書く方法を学ぶのにもうってつけです。&lt;/p&gt;
&lt;p&gt;この記事では、その中から特に役に立つと思ったtipsを何個かご紹介します。気になった方は是非本を買ってみてください。&lt;/p&gt;
&lt;h2 id="標準出力のテストにはiowriterを使う"&gt;標準出力のテストにはio.Writerを使う&lt;/h2&gt;
&lt;p&gt;標準出力のテストってしづらいですよね。そこがio.Writerの出番です。&lt;br&gt;
テストしたい関数の引数に、io.Writerを指定し、実際の実行ではos.Stdoutを使い、テストではbytes.Bufferなどにキャプチャさせて比較させるのです。&lt;/p&gt;
&lt;p&gt;ずいぶんと既知の方法ではありますが、実際に動くCLIツールの例をもって教えてくれるので、頭にスッと入ってきます。&lt;/p&gt;
&lt;p&gt;余談ですが、こういう時にGoの美しいインターフェイスの設計を思い知らされます。&lt;/p&gt;
&lt;h2 id="パッケージを適切に分ける"&gt;パッケージを適切に分ける&lt;/h2&gt;
&lt;p&gt;なんでもかんでもmainパッケージに突っ込む、というのは避け、外部から利用できるような形でパッケージを分けます。&lt;br&gt;
そうすることで、ローカルで使っていたものをWeb APIのモデルとしても再利用させるといったことができます。&lt;/p&gt;
&lt;p&gt;自分自身がユーザーだとしても、責務の境界線を敷いたりといったことに役に立つはずです。&lt;/p&gt;
&lt;h2 id="repositoryパターンを使う"&gt;Repositoryパターンを使う&lt;/h2&gt;
&lt;p&gt;Repositoryパターンにより、データソースを簡単に切り替えられるようにします。&lt;/p&gt;
&lt;p&gt;操作系を、インタフェースのメソッドとして定義し、実際の操作はインメモリやSQLのものとして実装させるのです。これにより、テストもしやすくなります。&lt;/p&gt;
&lt;p&gt;これもずいぶんと既知の方法ですが、繰り返しになるものの、実際に動くCLIツールで示してくれるので、とても解りやすいです。&lt;/p&gt;
&lt;h2 id="統合テストは実apiなりを叩く方法もある"&gt;統合テストは実APIなりを叩く方法もある&lt;/h2&gt;
&lt;p&gt;結合テストをどう書くか、というところはけっこうな悩みどころだと思います。&lt;br&gt;
モックを使うと実際のAPIに追従できなかったりという問題が起こる可能性がありますし、実際のAPIを叩くと実環境に影響がでる可能性があります。&lt;/p&gt;
&lt;p&gt;そこで、この本では、build constraintsを使い、統合テストファイルにtagを付与した上で、通常のテストでは実行されないようにし、-tagsオプションを使って散発的に実行するようにしています。&lt;/p&gt;</description></item><item><title>ゲームのタイムアタック、シューティングゲーム、プログラミングにおける最適化の共通点</title><link>https://okweird.net/ja/posts/2022/11/speedrun-shootemup-programming/</link><pubDate>Sun, 13 Nov 2022 15:41:00 +0900</pubDate><guid>https://okweird.net/ja/posts/2022/11/speedrun-shootemup-programming/</guid><description>&lt;p&gt;僕は現在はソフトウェアエンジニアとして働いていますが、定職に就く前は働かずにゲームをとことん遊んでいました。&lt;/p&gt;
&lt;p&gt;その中でも特に遊んだのが海外ゲーム、そしてシューティングゲーム（海外では「Shoot &amp;rsquo;em up」と呼ばれます）です。&lt;br&gt;
海外ゲームについては普通に遊ぶのはもちろんですが、いかに早くクリアするかということをしていました。いわゆるタイムアタック（海外では「Speedrun」と呼ばれます）というものです。&lt;/p&gt;
&lt;p&gt;これらのこととプログラミングは全く関係ないようですが、プログラミングをしている中で、時々、これらのことでやってたことじゃないか、と思う場面があります。&lt;/p&gt;
&lt;p&gt;抽象化できる共通点があるのではないかと思い、この記事で言語化を試みてみます。&lt;/p&gt;
&lt;h2 id="遊んでいたゲームの種類"&gt;遊んでいたゲームの種類&lt;/h2&gt;
&lt;p&gt;どういうゲームを遊んでいたかという文脈が大事になってくると思うので、説明をします。&lt;/p&gt;
&lt;h3 id="海外ゲーム"&gt;海外ゲーム&lt;/h3&gt;
&lt;p&gt;海外ゲームについては、特にFPSやRPGを遊んでいました。それぞれの代表作のうち、シングルプレイヤーのもので僕が遊んでいた頃で言うと、Half-Lifeシリーズ、Diabloシリーズといったところでしょうか。
タイムアタックがどのようなものかというのは動画を見ていただくと分かると思います。 &lt;strong&gt;※3D酔いというものがあるので、苦手な方は注意をお願いします。&lt;/strong&gt;&lt;br&gt;
今はVRに注力するJohn Carmackも主要な開発者であるQuakeというゲームのものです。&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=hcareEsIXHM"&gt;https://www.youtube.com/watch?v=hcareEsIXHM&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;どうでしょう。極めて無駄のない動きじゃないでしょうか。&lt;/p&gt;
&lt;h3 id="シューティングゲーム"&gt;シューティングゲーム&lt;/h3&gt;
&lt;p&gt;シューティングゲームとなると、どういうゲームか馴染みのない方もいると思うので、ご紹介します。
先祖はインベーダーゲームとかになるのでしょうか。どういった様子かは動画を見ていただいたほうが早いと思います。&lt;br&gt;
僕も大好きだった、難易度が最高級に高いと言われている怒首領蜂大往生の動画をご紹介します。&lt;br&gt;
下記リンクは「2周目」という、同じステージを難易度を大幅に上げて臨む場面からスタートします。&lt;br&gt;
&lt;a href="https://youtu.be/VIELWhnLicY?t=1201"&gt;https://youtu.be/VIELWhnLicY?t=1201&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;どうでしょう。鬼のような難易度じゃないでしょうか。&lt;/p&gt;
&lt;h2 id="共通点"&gt;共通点&lt;/h2&gt;
&lt;p&gt;では、タイムアタック、シューティングゲーム、プログラミングにおける最適化の3つに共通するものとは何でしょうか。&lt;br&gt;
それらについて、1つずつ見ていきたいと思います。&lt;/p&gt;
&lt;h3 id="1つ目の共通点観察"&gt;1つ目の共通点「観察」&lt;/h3&gt;
&lt;p&gt;まず、1つ目は「観察」です。&lt;/p&gt;
&lt;p&gt;タイムアタックでは、ステージがどのような構成になっているか、敵キャラクターがどのような動きをし、どのような攻撃をしてくるか、どこにアイテムがあるか、などを観察します。&lt;br&gt;
シューティングゲームも同様です。敵キャラクターがどのような動きをし、どのような弾を撃ってくるか、などを何回も何回も何回もプレイすることで観察します。&lt;/p&gt;
&lt;p&gt;では、プログラミングにおける最適化はどうでしょうか。こちらも、どのような処理が行われていて、どこにボトルネックがあるかを観察します。「観測」という言葉のほうがこの世界では一般的ですかね。&lt;/p&gt;
&lt;p&gt;プログラミングではリバースエンジニアリングという言葉がありますが、タイムアタックやシューティングゲームにおいても、ただ観察するだけではなく、時にはゲームの実装まで予想しながら分析をすることもあります。&lt;/p&gt;
&lt;h3 id="2つ目の共通点試行"&gt;2つ目の共通点「試行」&lt;/h3&gt;
&lt;p&gt;2つ目は「試行」です。&lt;/p&gt;
&lt;p&gt;タイムアタックでは、このジャンプやアクションでショートカットが可能か、このアイテムは取らずとも十分に進行させることが可能か、といったことを試します。&lt;br&gt;
シューティングゲームでは、どの順番で敵を倒すのが安全か、どのようにコンボを繋げば点数が高くなるか、といったことを試します。&lt;br&gt;
どちらも、何百、何千、何万、いや何百万といった試行になるかもしれません。&lt;/p&gt;
&lt;p&gt;プログラミングでは、仮説や実証に基づき小さな単位で変更を行います。小さな単位で行うのは差分を細かくチェックするためで、タイムアタックでもシューティングゲームでも同じですね。&lt;/p&gt;
&lt;h3 id="3つ目の共通点評価"&gt;3つ目の共通点「評価」&lt;/h3&gt;
&lt;p&gt;3つ目は「評価」です。&lt;/p&gt;
&lt;p&gt;タイムアタックでは、試行した結果、それによりどれだけのタイムが削られたか、Aを選んでBを捨てた結果、それ以降の流れはどうなるかといったことを評価します。&lt;br&gt;
シューティングゲームでは、動きのパターンを決めたことでどれだけ楽になったか、点数が実際に上がったか、といったことを評価します。&lt;/p&gt;
&lt;p&gt;プログラミングでは、実行速度やリソースの消費が改善されたかどうかを評価します。&lt;/p&gt;
&lt;p&gt;この観察→試行→評価という流れは、ゲームかプログラミングかでサイクルは違えど、改善のためにひたすらループを回すものとなります。&lt;/p&gt;
&lt;h3 id="4つ目の共通点結合"&gt;4つ目の共通点「結合」&lt;/h3&gt;
&lt;p&gt;最後が「結合」です。このフェーズで、これまでの3つが実際に機能するかどうかチェックすることになります。&lt;/p&gt;
&lt;p&gt;タイムアタックでは、それぞれのステージで決めた動きが全体としてのタイムの削減に繋がるかを、通してチェックします。&lt;br&gt;
シューティングゲームでは、1ステージ目では低スコアに終わる動きでも、2ステージ以降ではトータルで高くならないか、といったことをチェックします。&lt;/p&gt;
&lt;p&gt;プログラミングでは、結合テストなどを行い、1つのコンポーネントの変更が他に影響を与えていないか、トータルではパフォーマンスが下がっていないかといったことをチェックします。&lt;/p&gt;
&lt;h2 id="最後に"&gt;最後に&lt;/h2&gt;
&lt;p&gt;ここまで、ゲームのタイムアタック、シューティングゲーム、プログラミングの最適化における共通点を書いてみました。&lt;/p&gt;
&lt;p&gt;勢いで雑に書いてみた文章ですが、他にこれらのことを経験した方なら、もしかしたら「うんうん」と頷いていただけるかもしれないですね。&lt;br&gt;
共通しているのは根気いるよね〜というところでしょうか。&lt;br&gt;
書いていて思ったのですが、もっと広く一般化できるものなのかもしれませんね。&lt;/p&gt;
&lt;p&gt;最後に一言、「最適化 is fun」&lt;/p&gt;</description></item><item><title>数学を一生の趣味にしてみる</title><link>https://okweird.net/ja/posts/2022/09/math-as-lifetime-hobby/</link><pubDate>Mon, 05 Sep 2022 08:25:00 +0900</pubDate><guid>https://okweird.net/ja/posts/2022/09/math-as-lifetime-hobby/</guid><description>&lt;p&gt;子どもが生まれて勉強に取れる時間も必然と少なくなったので、勉強することを絞る必要があるのだが、何をやろうかと思った時に数学をやっていこうとなった。&lt;/p&gt;
&lt;p&gt;きっかけとしては、アルゴリズムとデータ構造みたいな基礎的な技術を身に着けるのが長期的に見て役に立つのではないかと思い、&lt;a href="https://www.kspub.co.jp/book/detail/5128442.html"&gt;問題解決力を鍛える！アルゴリズムとデータ構造&lt;/a&gt;を読み始めたところ、序盤に極限の式が出てきて読み取れず、やっぱ数学やった方がいいなとなったことがある。&lt;/p&gt;
&lt;p&gt;前から、競プロや機械学習をやりたいが、数学力不足を感じていたというのも大きい。&lt;br&gt;
2016年の&lt;a href="https://tkykhk.hatenablog.com/entry/2016/05/15/215923"&gt;プログラマーとして社会人になったけど高校数学を1から独学している&lt;/a&gt;という記事にも書いたが、高校を1年で中退しているので、単純に数学コンプレックスみたいなものを持っているというのもある。&lt;/p&gt;
&lt;p&gt;そこで考えたのが、数学を一生の趣味にするのもいいんじゃないかと。&lt;br&gt;
詰将棋を解くような感覚で数学の問題を解いていく。&lt;br&gt;
『虚数の情緒』や『オイラーの贈物』といった読み物の楽しみにも事欠かない。&lt;/p&gt;
&lt;p&gt;業務力向上には直接的にはほとんど結びつかないとは思うのだが、業務に関することは業務中に覚えてしまえばいいし、長期的に見れば数学の応用が必要になる場面が来て、やがて実を結ぶかもしれない。&lt;/p&gt;
&lt;p&gt;そんなわけで、まずは高校数学の勉強を進めており、&lt;a href="https://www.amazon.co.jp/dp/4010527129"&gt;長岡の教科書&lt;/a&gt;の数学I・Aを終えた。&lt;br&gt;
教科書を読んだだけでは身についた気がしないので、問題集をやろうと&lt;a href="https://www.obunsha.co.jp/product/detail/034915"&gt;数学I・A 入門問題精講&lt;/a&gt;を始めた。
定番のチャート式はボリュームが大きすぎる感があるのでこちらを選んだ。 &lt;a href="https://twitter.com/ikeikey/status/1546041749164150784"&gt;著者のツイート&lt;/a&gt;で社会人にも勧められていたのがけっこう決め手になった。「はじめに」の中で、公式や定理を丸暗記するのではなく、その過程で身につける「考え方」が大事であり、魚を与えるのではなく、釣りの仕方を教えるという話をしているのも良い。&lt;br&gt;
これと並行して&lt;a href="https://www.obunsha.co.jp/product/detail/034918"&gt;基礎問題精講&lt;/a&gt;もやっていく予定。&lt;/p&gt;
&lt;p&gt;今は妻子が起きる前の朝6時に起きて、1時間を勉強に充てている。&lt;br&gt;
これから続く数学の旅でどこまで行けてどんな景色が見れるのか、楽しみだ。&lt;/p&gt;</description></item><item><title>お子がもうすぐ生まれる予定なのでルーチンを見直した</title><link>https://okweird.net/ja/posts/2022/04/reconsider-routines/</link><pubDate>Sat, 23 Apr 2022 09:40:00 +0900</pubDate><guid>https://okweird.net/ja/posts/2022/04/reconsider-routines/</guid><description>&lt;p&gt;あと数ヶ月で初めての子どもが生まれる予定だ。自分の過去を振り返ると奇跡に近いことだなぁと思う。ここまで繋いでくれた色んな人に感謝。&lt;/p&gt;
&lt;p&gt;さて、そうなると使える時間がかなり変わってくるだろうから、それに備えてルーチンを見直した。&lt;/p&gt;
&lt;p&gt;まず、体力と精神面での健康が大事になってくるだろうから、運動をしっかりやっていく。&lt;br&gt;
朝の出勤前の30分程度の散歩は継続できているので、あとはそれにプラスしてSwitchでのエクササイズをやる。&lt;br&gt;
リングフィット アドベンチャーとFit Boxing 2の両方をやってみたけど、短時間で済むし、クリアという目標があるリングフィット アドベンチャーを中心にひとまずやっていこうと思う。&lt;/p&gt;
&lt;p&gt;夜に風呂をわかすタイミングをキューにしてやろうとしていたのだけど、夕食を食べた後は1日の疲れでどうしてもダラダラしてしまい、気力がわかず習慣化できなかったので、朝やることにする。&lt;br&gt;
ただ、朝は出勤前の勉強時間に充てているのでどうしようかと考えていたところ、妻に日ごとに勉強と運動を交互にすればいいんじゃないとアドバイスをいただけた。&lt;/p&gt;
&lt;p&gt;というわけで、朝のルーチンとして、月・水・金は勉強、火・木は運動って感じにしようと思う。土日は朝たっぷり時間があるので、両方やる感じ。&lt;/p&gt;
&lt;p&gt;勉強の内訳としては、平日は数学、土日は技術という感じ。数学は1年ぐらいで高校3年の範囲を終わらせようかとも思っていたけど、焦らずのんびりやっていこうと思う。&lt;/p&gt;
&lt;p&gt;こんな感じで設定してみたが、思った通りにいかないことが多くなるとは思う。&lt;br&gt;
そんな時でも、1度きりの生活をどうせなら楽しんで過ごしていきたい。&lt;/p&gt;</description></item><item><title>『Clean Coder』を読んだ ― ボブおじさんに学ぶプロの職業倫理</title><link>https://okweird.net/ja/posts/2022/04/clean-coder/</link><pubDate>Sun, 03 Apr 2022 11:03:00 +0900</pubDate><guid>https://okweird.net/ja/posts/2022/04/clean-coder/</guid><description>&lt;p&gt;ソフトウェア・エキスパートであるRobert C. Martinことボブおじさんによる『Clean Coder』を読みました。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.kadokawa.co.jp/product/301806000677/"&gt;「Clean Coder プロフェッショナルプログラマへの道」&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;この本の原著がリリースされたのは2011年と結構前なのですが、具体的なプログラミング手法などではなく、プログラマーの働き方について書かれた本なので、今でも十分に読む価値はあると思いました。&lt;/p&gt;
&lt;p&gt;序章で以下のように書いてある通り、本書は各章でボブおじさんの失敗談が書かれたあと、それを受けてプロはどうあるべきかが書かれているという構成をとっています。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;本書は、私の間違いの一覧であり、これまでの悪事の記録であり、私と同じ道を歩まないための指針であると考えていただきたい&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;プロ意識とは自分で責任を取ることに他ならず、コミットメントを安易にしないことや、言う必要がある場面ではノーと言うことなどの重要性が説かれています。&lt;/p&gt;
&lt;p&gt;特に印象的だったのがプロの労働倫理として、雇用主のために働く週40時間とは別に、自分のキャリアを強化する週20時間を作ろうと書いてあることです。会社で働く時間とは別に学習する時間をそれだけ用意するということです。&lt;br&gt;
これは賛否両論ある意見だと思いますが、本当のプロになるにはそれだけの覚悟が必要なのだということなのだと思います。&lt;br&gt;
ここのところ向上心がそれほど持てず、ぬるま湯に浸かりつつあった自分にはハッとさせられる考え方でした。&lt;/p&gt;
&lt;p&gt;他にも目次にある通り、コーディング、テスト駆動開発、練習といったコーディングについての話や、受け入れテスト、テスト戦略といったテストについての話、時間管理、見積もり、プレッシャー、協力、指導・徒弟制度・職人気質といった仕事全般の話について広範囲に書かれています。特にPERTといった見積もりについての話は失敗しがちなので参考になりました。&lt;/p&gt;
&lt;p&gt;ボブおじさんの半世紀近い経験を元にしたプログラマーとして働くことのエッセンスが込められた本でした。&lt;br&gt;
僕も一人のプロであるということを忘れず、日々の行動を見直していこうと思いました。&lt;/p&gt;</description></item><item><title>2022-02 振り返り</title><link>https://okweird.net/ja/posts/2022/03/2022-02/</link><pubDate>Sun, 06 Mar 2022 13:39:00 +0900</pubDate><guid>https://okweird.net/ja/posts/2022/03/2022-02/</guid><description>&lt;p&gt;2022年2月の振り返り。まだフォーマットが定まってないので適当に。&lt;/p&gt;
&lt;h2 id="技術"&gt;技術&lt;/h2&gt;
&lt;h3 id="go-周り"&gt;Go 周り&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Effective Go&lt;/li&gt;
&lt;li&gt;Go Code Review Comments&lt;/li&gt;
&lt;li&gt;Go Test Comments&lt;/li&gt;
&lt;li&gt;Practical Go: Real world advice for writing maintainable Go programs&lt;/li&gt;
&lt;li&gt;エキスパートたちのGo言語&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この辺りを読んだ。&lt;/p&gt;
&lt;p&gt;Go はシンプルな言語とはいえ、やはり良いコードを書くには色々と覚えることがあるなと思った。&lt;br&gt;
Effective Go みたいに公式のプラクティス集がまとまっているのは有難い。&lt;/p&gt;
&lt;h3 id="機械学習"&gt;機械学習&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Kaggle Learn - Intro to Machine Learning&lt;/li&gt;
&lt;li&gt;Kaggle Learn - Intermediate Machine Learning&lt;/li&gt;
&lt;li&gt;Coursera - Machine Learning&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Kaggle の &lt;a href="https://www.kaggle.com/thirty-days-of-ml-assignments"&gt;30 Days of ML&lt;/a&gt; というチュートリアル集をやって、Coursera の Andrew Ng 先生の Machine Learning を少し進めたが、機械学習に行くまでに最低限の数学をちゃんとやっておきたいなとなってストップした。&lt;/p&gt;
&lt;p&gt;しばらくは機械学習には触れずに数学をやっていこうと思う。&lt;/p&gt;
&lt;h3 id="数学"&gt;数学&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;長岡先生の授業が聞ける高校数学の教科書&lt;/li&gt;
&lt;li&gt;Khan Academy&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;高校数学レベルの数学を学ぶにはどれが良いのかなぁと色々探った結果 Khan Academy をやっていたのだけど、同じことを違う動画で何度も説明したり、途中の計算が丁寧すぎたりとちょっと退屈だったので、 reddit などで評判の良かった Serge Lang の &lt;a href="https://www.amazon.co.jp/dp/0387967877"&gt;Basic Mathematics&lt;/a&gt; という本で学んでいくことにした。&lt;/p&gt;</description></item><item><title>2022-01 振り返り</title><link>https://okweird.net/ja/posts/2022/02/2022-01/</link><pubDate>Sat, 05 Feb 2022 13:38:00 +0900</pubDate><guid>https://okweird.net/ja/posts/2022/02/2022-01/</guid><description>&lt;p&gt;振り返りは大切ということで、今月から月単位での振り返りをやってみる。日記を書くのは続けるのが難しそうだが、月ペースなら楽そうってのがある。&lt;br&gt;
学生時代はブログで勉強の振り返りをやっていたのだが、これからは勉強以外も含めた総合的な振り返りをやっていこうと思う。&lt;/p&gt;
&lt;p&gt;というわけで振り返る。&lt;/p&gt;
&lt;h2 id="読んだ本"&gt;読んだ本&lt;/h2&gt;
&lt;h3 id="the-go-programming-language"&gt;The Go Programming Language&lt;/h3&gt;
&lt;p&gt;去年6月に読み始めて、&amp;ldquo;8. Goroutines and Channels&amp;rdquo; まで読んでいたのだが、長いこと積まれていて気持ち悪かったので、エイヤとそこから最後まで読み通した。&lt;/p&gt;
&lt;p&gt;この本はCSチックで骨太な本で、全部理解しようとするとかなり腰を据えて取り組む必要があるので、8章からは、後で「あそこに書いてあったな」ぐらいのインデックスを貼る意味でほとんど見出しだけ追うみたいな読み方をした。
こういう読み方はあまりしてこなかったのだが、じっくり読んでも結局内容を忘れることが多いので、このような必要ドリブンな読み方もしていきたいと思う。&lt;/p&gt;
&lt;p&gt;インターフェイスについての詳細など、Goを真に理解する上で大事なことが書かれている本ではありそうなので、腕を上げた後でまた読み返したいと思う。&lt;/p&gt;
&lt;h3 id="長岡先生の授業が聞ける高校数学の教科書"&gt;長岡先生の授業が聞ける高校数学の教科書&lt;/h3&gt;
&lt;p&gt;今年は数学をやっていくぞということで開始。数学1 第1章 数と式を終えたところまで40ページ進めた。&lt;/p&gt;
&lt;p&gt;このペースだと数学Cまで全て終えるまでに2年ぐらいかかってしまうので、もっとペースを上げていこうと思う。&lt;br&gt;
この教材は音声講義が入っている本で、とても興味深い話が聞けるのだが、全部聴いていると時間がかかるし、既に一度4年ほど前に数Cの途中まで進めてはいるので、音声講義は本を読んだだけで理解できなかったところだけ聴くようにする。&lt;/p&gt;
&lt;p&gt;早く高校数学を終わらせて最終目標の機械学習に進みたいと思っている。が、積み上げる学問なので、慌てずじっくり理解していく。&lt;/p&gt;
&lt;h2 id="趣味娯楽"&gt;趣味・娯楽&lt;/h2&gt;
&lt;h3 id="映画"&gt;映画&lt;/h3&gt;
&lt;p&gt;『レディ・バード』、『サイダーのように言葉が湧き上がる』、『浅草キッド』、『朝が来る』を観た。&lt;/p&gt;
&lt;p&gt;『レディ・バード』は難しい時期の女子高生の成長物語。前々から観たかったのだけど、母との絆などとても良かった。女性視点だとまた違って見えるのだろうなぁ。&lt;/p&gt;
&lt;p&gt;『浅草キッド』も人情溢れる良い映画だった。あまり昔は良かったというのは好きではないのだけど、その時代を一生懸命に生きた人たちがいたのだなぁと心揺さぶられた。&lt;/p&gt;
&lt;h3 id="ベース"&gt;ベース&lt;/h3&gt;
&lt;p&gt;楽器をやるとなったら毎日練習したりしていたのだが、色々やることがある中でなかなか厳しいので、楽器は緩く週末だけやる感じにすることにした。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.bassbuzz.com/"&gt;BassBuzz&lt;/a&gt;というサイトの&lt;a href="https://www.bassbuzz.com/lessons/beginner"&gt;Beginner to Badass&lt;/a&gt;を進めている。 &lt;br&gt;
これも1回途中まで進めていて、以前はModule 10まで終えていたので、ざっと復習をしていてModule 07まで終えたところ。&lt;br&gt;
まずはこのコースをしっかり終えて、色々曲を覚えていきたい。&lt;/p&gt;
&lt;h3 id="ゲーム"&gt;ゲーム&lt;/h3&gt;
&lt;p&gt;Oculus Quest 2でHalf-Life: Alyxを遊んでいる。弾が少ないゲームで操作も慣れないのでなかなか難しい。これを遊ぶと他のVRゲームが遊べなくなるとさえ言われるゲームなので、じっくり楽しんでクリアしたい。&lt;/p&gt;
&lt;h2 id="まとめと今後"&gt;まとめと今後&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://okweird.net/blog/got-married/"&gt;結婚した&lt;/a&gt;り、年初だったりと、気づいたら終わっていたという感じの月だった。&lt;/p&gt;
&lt;p&gt;2月はもっと落ち着くと思うので、数学にどっぷり取り組んでいきたい。&lt;br&gt;
引き続きGoのスキルも上げたいので『Effective Go』、『Go Code Review Comments』、『エキスパートたちのGo言語』、『Go言語による並行処理』と読んでいく。&lt;br&gt;
&lt;a href="https://twitter.com/akht_ikd"&gt;同僚&lt;/a&gt;に刺激を受けてKaggleを始めたのでそちらも進めていく。&lt;/p&gt;
&lt;p&gt;やってくぞー。&lt;/p&gt;</description></item><item><title>結婚しました</title><link>https://okweird.net/ja/posts/2022/01/got-married/</link><pubDate>Tue, 11 Jan 2022 08:40:00 +0900</pubDate><guid>https://okweird.net/ja/posts/2022/01/got-married/</guid><description>&lt;p&gt;このたび、2022年1月11日に福岡市中央区役所に婚姻届を提出し、結婚しました。&lt;/p&gt;
&lt;p&gt;コロナの状況下で出会い、お付き合いしてきて、制限もある中、工夫して2人で楽しい時間を過ごしてきました。&lt;br&gt;
お互い波長が合い、何でも楽しめるタイプで、うまい具合に特徴を補いあえており、恋人でありながら深い親友でもあるような関係を築けてきました。良く2人で言うのが、出会うずっと前から知り合っていたような気がするよね、ということです。&lt;/p&gt;
&lt;p&gt;プロポーズは糸島市の2人の思い出のレストランで食事したあと、桜井二見ヶ浦の夫婦岩の駐車場の車中で、福山雅治の『家族になろうよ』をかけながら行いました。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://okweird.net/ja/posts/2022/01/got-married/two_hands_and_meotoiwa.jpg" alt="桜井二見ヶ浦夫婦岩を背景に結婚指輪をはめた2人の左手"&gt;&lt;/p&gt;
&lt;p&gt;長期の引きこもりという暗黒時代を過ごした自分が、こうやって人生を共にする相手を得られたのは、支えてくれた家族や、行くところ行くところで世話をしてくださる方々に恵まれたおかげです。&lt;br&gt;
これがスタートではありますが、まずは関わってくださった全ての方々に深く感謝を申し上げます。&lt;/p&gt;
&lt;p&gt;いや〜自分が結婚なんて、不思議なものですね。&lt;/p&gt;
&lt;p&gt;例のアレ、置いておくので宜しければお願いします。&lt;br&gt;
&lt;a href="https://www.amazon.jp/hz/wishlist/ls/25ZQGW68CX9DF"&gt;https://www.amazon.jp/hz/wishlist/ls/25ZQGW68CX9DF&lt;/a&gt;&lt;/p&gt;</description></item><item><title>2022年抱負 - 数学と機械学習、楽器をやっていく</title><link>https://okweird.net/ja/posts/2022/01/resolution-2022/</link><pubDate>Sat, 01 Jan 2022 11:40:00 +0900</pubDate><guid>https://okweird.net/ja/posts/2022/01/resolution-2022/</guid><description>&lt;p&gt;紅白の藤井風さん、とても良かったなーと思いつつ、恒例の年初抱負を書いてみる。&lt;/p&gt;
&lt;h2 id="技術"&gt;技術&lt;/h2&gt;
&lt;p&gt;今年は私生活が忙しくなりそうなので、プライベートの時間でやる技術は思い切って絞ってみる。&lt;/p&gt;
&lt;h3 id="新規にやること"&gt;新規にやること&lt;/h3&gt;
&lt;h4 id="数学"&gt;数学&lt;/h4&gt;
&lt;p&gt;&lt;a href="https://tkykhk.hatenablog.com/entry/2016/05/15/215923"&gt;プログラマーとして社会人になったけど高校数学を1から独学している&lt;/a&gt;を書いた時に勉強して以来、約4年半ぶりのチャレンジ。前回は&lt;a href="https://www.obunsha.co.jp/service/nagaoka/other.html"&gt;長岡の教科書&lt;/a&gt;2+Bを終えたところで止まってしまったので、最低限高校数学までは履修したい。海外の教材も選択肢に入れて勉強していきたい。&lt;/p&gt;
&lt;h4 id="機械学習"&gt;機械学習&lt;/h4&gt;
&lt;p&gt;何のために数学を学ぶかというとこれ。&lt;br&gt;
仕事を通じてある程度Webアプリケーション周辺のプログラミングは慣れてきた感があって（もちろんまだまだな部分がとても多いのだけど）、何か新しいことにチャレンジしてみたいと思ったというのが動機。&lt;br&gt;
その時に思いついた技術として、ブロックチェーン、XR、機械学習があった。&lt;br&gt;
ブロックチェーンはまだ自分の頭では本当に実用的なのか判断が難しく様子を見たいと思い、XRはまずコンシューマーとして遊んでみたいと思った。&lt;br&gt;
最後に残った機械学習は既に十分に実用されていて、これからも必要になる技術だろうと見たのでやってみることにした。
Kaggleみたいなコンテストがあり、ゲーム的に学ぶこともできそうと思ったのも理由。極めるのが難しそうなのも難しい物好きな自分には合っていそう。&lt;br&gt;
これをどう仕事に活かすかとかは考えてないが、知的好奇心頼りに進めていくつもりだ。&lt;/p&gt;
&lt;h3 id="引き続き"&gt;引き続き&lt;/h3&gt;
&lt;h4 id="go"&gt;Go&lt;/h4&gt;
&lt;p&gt;去年は自分の中でGoの年と言って良かったと思う。引き続き業界全体としても、自分の周りでも、主要な言語として使われていくであろうから、1.18のキャッチアップや並行処理の勉強などやっていこうと思う。&lt;/p&gt;
&lt;h3 id="その他"&gt;その他&lt;/h3&gt;
&lt;p&gt;あとは業務効率化をミッションの1つにしているチームに所属していることもあり、&lt;a href="https://api.slack.com/future"&gt;Slackの新機能&lt;/a&gt;がかなり気になっているため、そこに使用される技術であるTypeScriptとDenoも追っていきたいと思っている。&lt;/p&gt;
&lt;h2 id="趣味"&gt;趣味&lt;/h2&gt;
&lt;h3 id="楽器"&gt;楽器&lt;/h3&gt;
&lt;p&gt;楽器をやっていきたい。紅白の藤井風さんを観て改めて思った。&lt;br&gt;
色々やっていきたいが、昨年末のサカナクションのライブで間近に見た草刈愛美さんがかっこよかったので、まずはベースにしようと思っている。&lt;br&gt;
去年ストラトを思い切って買ったが眠らせてしまっているので、ギターもやっていきたいところ。ギター1本で人前で披露できるのはとても良いので、弾き語りできるようにもなりたい。となると高い声が苦手なのでボイトレも必要そう。&lt;br&gt;
コロナの状況しだいで教室にも通ってみたいと思っている。何かの教室に通うという体験はしばらくやってないので良いのではという期待から。島村楽器だと年1でホールでの発表の機会があるとのことなので気になっている。&lt;/p&gt;
&lt;h3 id="xr"&gt;XR&lt;/h3&gt;
&lt;p&gt;技術のところでも触れたが、XRの可能性を探ってくために色々触れてみたい。Quest 2は昨年末に買った。まずはValve Indexを買ったのにすぐ売っ払って未クリアのHalf-Life: Alyxをクリアしたい。&lt;/p&gt;
&lt;h2 id="まとめ"&gt;まとめ&lt;/h2&gt;
&lt;p&gt;こんな感じだろうか。&lt;br&gt;
やることは最小限に、あまり根を詰めずに余裕のある豊かな日々を送れたらと思っている。&lt;/p&gt;
&lt;p&gt;いい年にしていくぞ。&lt;/p&gt;</description></item><item><title>2021年振り返り</title><link>https://okweird.net/ja/posts/2021/12/year-in-review-2021/</link><pubDate>Fri, 31 Dec 2021 16:41:00 +0900</pubDate><guid>https://okweird.net/ja/posts/2021/12/year-in-review-2021/</guid><description>&lt;p&gt;恒例の年の振り返りをする。なお2016年から続けているようだ。けっこう続いている。&lt;/p&gt;
&lt;p&gt;抱負の振り返りから。&lt;br&gt;
&lt;a href="https://okweird.net/blog/resolution-2021/"&gt;2021年抱負&lt;/a&gt;に書いたことを振り返っていく。&lt;/p&gt;
&lt;h2 id="技術"&gt;技術&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;TypeScript&lt;/li&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;Next.js&lt;/li&gt;
&lt;li&gt;Docker / Kubernetes&lt;/li&gt;
&lt;li&gt;Go (余裕あったら)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;結果的には余裕あったらとしていたGoを一番書いた年だった。業務で主に書いた言語だったし、個人的にも&lt;a href="https://okweird.net/blog/first-go-oss-product/"&gt;初めて自身のOSSプロダクトをリリースした&lt;/a&gt;りした。&lt;br&gt;
DockerとKubernetesについては&lt;a href="https://akhtikd.com/posts/2021-12-16-journey-of-kawaki-engineers/"&gt;同僚のakht氏とちょろっとやった&lt;/a&gt;が中途半端に終わった。&lt;br&gt;
TypeScriptはほとんど触らなかった。ReactやNext.jsといったフロントエンド技術にも触れることはほとんどなかった。&lt;/p&gt;
&lt;h2 id="仕事"&gt;仕事&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;等級上げる&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;半期ごとの評価なのだけど、上半期に上げることは叶わず、現在下半期の評価待ちとなっている。&lt;/p&gt;
&lt;h2 id="色々"&gt;色々&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;毎月1記事のペースでブログを書く&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;数えたらこの記事を含めずに丁度12記事書いていた。ということで達成。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;お気に入りのキーボードを見つける&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;REALFORCEなど試したものの、家の机のスペースの関係などでMacBookの内蔵キーボードに戻ってしまった。M1になってからはバタフライではなくなったことで余計に気にならなくなった。&lt;br&gt;
ただ分離キーボードの方が肩に良いということを聞くので、まだ探すのを止めたわけではない。けど沼っぽくて足を踏み入れないでおこうという気持ちが強い。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ギターで弾ける曲を5曲増やす&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;他にもやることがたくさんある中、中途半端にできない性格のせいで楽器は全くやらないと決めてしまった。ただ音楽ってそういうものじゃ無い気もするので、気が向いた時にジャガジャガやるのもありかと思ったりして、来年は再開しようと思っている。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;お金周りの勉強（貯金以外の資産運用の手段を増やす）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これはちょこちょこ始めている。手始めにふるさと納税はやった。忙しくて手を出せなかったけど、来年はつみたてNISAを始めてみようかと思っているところ。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;体重を理想体重まで減らす&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;4月ごろまで順調に減っていたのだが、5月ごろから順調に増えてプラマイゼロになってしまった。来年はちゃんと運動して痩せたい。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;健康に気をつける&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;人生で初めて受けた人間ドックの結果はあまり良くなかった。ここも来年はもう少し頑張る。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;周りの人を大事にする&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これは仕事、私生活含めてけっこうできたのではと思っている。そもそも交友関係の少ない方だし、少ない人を深く大事にする方が自分には合っているようだ。&lt;/p&gt;
&lt;p&gt;まとめとして、&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;前年はインプットの年にしたので今年はアウトプットやっていく。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;と書いていたのだが、&lt;a href="https://speakerdeck.com/tommy6073/gochu-xin-zhe-gagonire-kareteosswoshu-kishi-metemita"&gt;Fukuoka.goでは登壇できた&lt;/a&gt;し、OSSプロダクトを出したりして、十分アウトプットをやっていけたのではと思っている。&lt;/p&gt;
&lt;p&gt;あとは&lt;a href="https://okweird.net/blog/my-new-blog/"&gt;個人ブログに移行&lt;/a&gt;したり&lt;a href="https://okweird.net/blog/isucon11/"&gt;ISUCONに出たり&lt;/a&gt;が大きなイベントだったように思う。&lt;/p&gt;
&lt;p&gt;ここでは詳しく書けないが、業務と私生活の両方とも精一杯やって、個人的には人生で一番頑張ったし、一番充実していた1年だったように思う。大変なご時世ではあるものの、その中で工夫して楽しく過ごすことができた。丑年36歳、年男Man of the yearとして十分な1年を送ることができた。&lt;/p&gt;
&lt;p&gt;こうやって充実した日々を過ごせたのも関わってくださった周りの方々のおかげである。&lt;br&gt;
いつもありがとうございます。今年もお世話になりました。良いお年を。&lt;/p&gt;</description></item><item><title>初めてのGo製CLIツール作成、初めてのOSS公開に込められた物語</title><link>https://okweird.net/ja/posts/2021/12/first-go-oss-product/</link><pubDate>Wed, 15 Dec 2021 08:00:00 +0900</pubDate><guid>https://okweird.net/ja/posts/2021/12/first-go-oss-product/</guid><description>&lt;p&gt;この記事は&lt;a href="https://adventar.org/calendars/6375"&gt;GMOペパボエンジニア Advent Calendar 2021&lt;/a&gt;の15日目の記事です。&lt;/p&gt;
&lt;p&gt;昨日は&lt;a href="https://twitter.com/tosh2230"&gt;Toshifumi Tsutsumi&lt;/a&gt;さんの&lt;a href="https://tech.pepabo.com/2021/12/14/1st-joining-anniversary/"&gt;入社から一年、ペパボはどうですか？に答える&lt;/a&gt;でした。&lt;br&gt;
ペパボにいるとインプット、アウトプットが出来てる方々の集まりで本当に刺激的ですよね。…そして、評価資料がんばりましょう。&lt;/p&gt;
&lt;p&gt;さて、今回、記事にするのは掲題の2つの「初めて」についてと、作成したGo製CLIツールの紹介です。&lt;br&gt;
2つの「初めて」とは、1つ目はGo製CLIツールを自分で作成したこと、2つ目はそれをOSSとして公開したことです。&lt;/p&gt;
&lt;h2 id="what-is-takolabel"&gt;What is takolabel&lt;/h2&gt;
&lt;p&gt;まず、そのGo製CLIツールについて紹介します。&lt;/p&gt;
&lt;p&gt;tommy6073/takolabel&lt;br&gt;
&lt;a href="https://github.com/tommy6073/takolabel"&gt;https://github.com/tommy6073/takolabel&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;名前はtakolabelと言って、GitHubのマスコットであるOctocatがタコとネコの合体であることから（割と安易に）takoを、ラベルを操作するツールなのでlabelを取って、takolabelと名付けました。&lt;br&gt;
後になって英語圏の人に伝わりにくいかもと少し後悔していたりもしますが、Kubernetesなんて名前のソフトウェアがあるぐらいなので良いかなと思ったりしています。&lt;/p&gt;
&lt;p&gt;このツールが何をやってくれるか短く言うと、「複数のGitHubリポジトリに渡ってのラベル操作」です。&lt;br&gt;
例えば、A、B、Cというリポジトリがあって、X、Y、Zというラベルをそれぞれのリポジトリに一括で作成したい、といった時にそれを実現してくれるというものです。YAMLにリポジトリとラベルを指定して操作します。GitHub Enterprise Serverにも対応しています。&lt;/p&gt;
&lt;p&gt;ここでは、なぜそのようなツールが必要になったかについて説明します。&lt;/p&gt;
&lt;h2 id="ツールが生まれたきっかけ"&gt;ツールが生まれたきっかけ&lt;/h2&gt;
&lt;p&gt;このツールが生まれたきっかけとしては、私が所属しているGMOペパボ ホスティング事業部 ISR (Internal System Reliability) チームにて、運用業務のコスト可視化というタスクがありました。&lt;br&gt;
前提として、GMOペパボ ホスティング事業部では全パートナーが割り当てたタスクをGitHub Issues上で議論や過程を記録しながら進行させるのが基本になっています。そういうことから、コストを可視化するためにはIssue上で分類や消費時間を記録すれば計測できるのではないかとチームで話し合われました。&lt;br&gt;
その結果、サービスや用途ごとに異なる複数のリポジトリにGitHub Issuesに計測用の分類、消費時間を表すラベルを貼った上で、Google Sheetsにエクスポート、それをさらにGoogle Data Studioに取り込みレポートを作成するという仕組みを実現しました（こちらについては別に改めて紹介できたらなと思っています）。&lt;br&gt;
その過程の、GitHub Issuesにラベルを貼るという作業を手動で行うのは大変なので、それを自動化するために生まれたものです。&lt;br&gt;
最終的には、思った通りにラベルを複数のリポジトリに一括で作成することができ、ツールとしての役目を無事果たすことができました。&lt;/p&gt;
&lt;h2 id="goについて"&gt;Goについて&lt;/h2&gt;
&lt;p&gt;なぜこのツールにGoを選んだかということについては色々とありますが、ホスティング事業部として今後バックエンドを中心に採用していく言語であること、実行ファイルがシングルバイナリであることからCLIツールとして適していること、個人的に学んでみたい言語のリストに入っていたこと、が挙げられます。&lt;/p&gt;
&lt;p&gt;結果として、ツールの作成を通じてDXとして非常に満足のいくものがありました。&lt;br&gt;
まずは言語の売りである簡潔性がとにかく素晴らしいです。学習にかかる時間がかなり少なかったですし、覚えることが少ない分、コードも読みやすく仕上げることができます。&lt;br&gt;
良く言及されるエラーハンドリングも個人的には何も苦ではない感じです。&lt;br&gt;
IDEとの親和性も高く、ツールチェインについてもシンプルで、言語としての完成度の高さを嫌というほど実感しています。&lt;/p&gt;
&lt;p&gt;そういうわけで、これから自分で書いていくプログラムで採用していくことも増えていくだろうなと思っています。CLIツール以外でも使ってみたいですね。&lt;br&gt;
色んな言語を使ったり学んできて、使う言語にこだわりのない方なのですが、この言語については惚れてしまいました。&lt;/p&gt;
&lt;p&gt;あとはGoルーチンを使った並行処理の強みについてはまだ活かせていないので、その辺りも勉強していきたいと思っています。&lt;/p&gt;
&lt;h2 id="ossとして"&gt;OSSとして&lt;/h2&gt;
&lt;p&gt;2つ目の初であるOSSとしてですが、こちらは主に2人の会社の先輩に助力をいただきました。&lt;/p&gt;
&lt;p&gt;まずは、&lt;a href="https://fukuokago.connpass.com/event/202570/"&gt;Fukuoka.go#17&lt;/a&gt;での&lt;a href="https://speakerdeck.com/tommy6073/gochu-xin-zhe-gagonire-kareteosswoshu-kishi-metemita"&gt;発表&lt;/a&gt;でも触れましたが、CIフレンドリーなDBドキュメントツールである&lt;a href="https://github.com/k1LoW/tbls"&gt;tbls&lt;/a&gt;を代表プロダクトに持つ&lt;a href="https://twitter.com/k1LoW"&gt;k1low&lt;/a&gt;に、環境変数の命名や設定ファイルの書き方といった点を中心に、様々なアドバイスをいただけました。このプロダクトを社内Slackで公開した時に、「え、めちゃいい！」と言っていただけたこと、非常に嬉しかったです。&lt;/p&gt;
&lt;p&gt;次に、チームの先輩である、お手軽にTLS証明書の情報を引ける&lt;a href="https://github.com/genkiroid/cert"&gt;cert&lt;/a&gt;を作った&lt;a href="https://twitter.com/genkiroid"&gt;genkiroid&lt;/a&gt;には設計のアドバイスをいただきました。現在のコードの状態を見て、自分ならこうするという例を提示していただき、責務の分離や構造体の定義、関数とメソッドの使い分けといったことを教えていただきました。仕事上でもいつも的確な意見をいただけていて、私の中でロールモデルな存在です。&lt;/p&gt;
&lt;p&gt;お2人とも貴重なプライベートの時間を使ってプロダクトを見ていただいた上で助言をいただけて、最高の福利厚生だなと思っています。いや〜ほんとありがたいです。この場を借りてお礼させていただきます。&lt;/p&gt;
&lt;h2 id="takolabelのこれから"&gt;takolabelのこれから&lt;/h2&gt;
&lt;p&gt;そんなtakolabelですが、現在のところ必要ドリブンで、ラベルの作成、削除、空にする、という3つの操作ができるにとどまっています。これからも操作を拡張したり、使いやすくしたり、リファクタリングしていけたらと思っています。&lt;/p&gt;
&lt;p&gt;もちろんPull Requestsもお待ちしております！&lt;/p&gt;
&lt;h2 id="まとめ"&gt;まとめ&lt;/h2&gt;
&lt;p&gt;この記事を通じて、1つの小さなプロダクトにも、物語があるのだということを感じ取っていただけたらなと思います。&lt;br&gt;
そして、Goで書くことも、自身のOSSを持つことも、自分次第でなんとでもなることだと分かり、挑戦して良かったなと思っています。こうしてAdvent Calendarのネタにもなっていることですしね。&lt;/p&gt;
&lt;h2 id="whos-next"&gt;Who&amp;rsquo;s next?&lt;/h2&gt;
&lt;p&gt;さて、明日の&lt;a href="https://adventar.org/calendars/6375"&gt;GMOペパボエンジニア Advent Calendar 2021&lt;/a&gt;の16日目の担当は&lt;a href="https://twitter.com/akht_ikd"&gt;Akihito Ikeda&lt;/a&gt;です。&lt;br&gt;
彼は&lt;a href="https://okweird.net/blog/isucon11/"&gt;ISUCON11でISUCONに初参加した&lt;/a&gt;時の盟友です。何を書いてくれるんでしょうね。楽しみです。&lt;/p&gt;</description></item><item><title>2021年冬季休暇にやりたいこととか近況とか</title><link>https://okweird.net/ja/posts/2021/11/2021-winter-vacation/</link><pubDate>Wed, 17 Nov 2021 07:42:00 +0900</pubDate><guid>https://okweird.net/ja/posts/2021/11/2021-winter-vacation/</guid><description>&lt;p&gt;ここのところ仕事もプライベートも忙しくてなかなかプライベートな時間でスキルアップをできていない。ただ1年中突っ走る生活もしたくないので、プライベートなスキルアップは余裕のある時でいいかなと思っている。仕事を通じて十分スキルアップさせてもらっているということもあり。&lt;br&gt;
人生で何を大事にするかなんて問いも浮かんだりしている。その辺については前にも少し&lt;a href="https://okweird.net/blog/prefer-everyday-quality/"&gt;書いた&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;それはさておき、少し気が早いが冬季休暇にやりたいことを&lt;a href="https://okweird.notion.site/2021-8e4aaac708d64f9fad8f31a894a2112e"&gt;Notionページ&lt;/a&gt;に書き出していっている。&lt;br&gt;
まずやりたいこととしてはGatsby Starter Blogほぼデフォルトのこのブログをもっと充実させたいのが一つ。そして、開発しているGo製OSS &lt;a href="https://github.com/tommy6073/takolabel"&gt;takolabel&lt;/a&gt;を改善すること。あとは密かに狙っている&lt;a href="https://github.com/cli/cli"&gt;gh&lt;/a&gt;へのコントリビュート。そして遊びでは今のMicrosoftが出してRTS界の重鎮Relicが開発したということで興味を持って購入したAge of Empires IVをプレイすること。&lt;br&gt;
休みって毎回あっという間に終わってやりたいことの20%もできずに終わるのだけど、無為に過ごすよりはある程度目標を立てておいた方が有意義に過ごせるだろうなと。&lt;/p&gt;
&lt;p&gt;2021年もカウントダウンが始まってきた。このままいい年にしたいものである。&lt;/p&gt;</description></item><item><title>Vimを始めとして環境を見直してみた</title><link>https://okweird.net/ja/posts/2021/09/revise-environment/</link><pubDate>Sat, 18 Sep 2021 16:01:00 +0900</pubDate><guid>https://okweird.net/ja/posts/2021/09/revise-environment/</guid><description>&lt;p&gt;僕は開発環境にはJetBrains IDEsを使って、その他のテキスト編集にはVimを使ったりVisual Studio Codeを使ったりといったことをやっているのだけど、ふと使う道具を少なくしようとVisual Studio Codeは使わずに、がっつりした開発以外のテキスト編集やスクリプト作成などにはVimを使おうと思い立った。高機能なVisual Studio Codeを単なるテキストエディターとしか使えておらず、Vimはカスタマイズや操作を組み立てるのが楽しかったり、ターミナルから抜け出さなくて良いというのが理由。&lt;/p&gt;
&lt;p&gt;それでまずは6年前に読んだ実践Vim（の英語改訂版）を読み返した。プラグインの機能はほとんど使用せずに様々な操作が可能なことを教えてくれるこの本はVim wayを知る上で本当にいい本だと思う。新たな学びもあったけど、ふとした時に出てくる自信のない操作も多い（マクロとか）。&lt;/p&gt;
&lt;p&gt;あとはVimを使った開発の動画を観たりした。良かったのはこの2本: &lt;a href="https://blog.craftz.dog/my-dev-workflow-using-tmux-vim-48f73cc4f39e"&gt;tmuxとvimによる開発作業フロー (動画) | 週休７日で働きたい&lt;/a&gt;、 &lt;a href="https://engineering.mercari.com/blog/entry/mercari_codecast_1/"&gt;【解説】開発ライブ実況 #1 (Vim / Go) 編 by メルペイ Architect チーム Backend エンジニア #mercari_codecast | メルカリエンジニアリング&lt;/a&gt;。特にメルカリの方のやつは作業が速すぎてRTSのプロゲーマーを観ているようだった。&lt;/p&gt;
&lt;p&gt;んでそのままの勢いに実践Vimと同じ著者が書いたVim 8とNeovimについての&lt;a href="https://pragprog.com/titles/modvim/modern-vim/"&gt;Modern Vim&lt;/a&gt;を買って読んだ。といっても &amp;ldquo;Craft Your Development Environment&amp;rdquo; と副題がついているように、開発環境向けの機能やプラグインの紹介が多く、僕の利用目的とは合わない感じだったのでそういうプラグインもあるんだな、Neovimにはそういう機能があるのねー、程度にざっと読んだ。&lt;/p&gt;
&lt;p&gt;動画を観た影響もあり、Vimで開発もやってしまったらかっこいいなーと思いつつ、カスタマイズや操作の修練も行き過ぎるとけっこうダルいなと思ってしまったし、JetBrainsのAll Products Packにお金を納めたばかりだったので一本化はやめることにした。&lt;/p&gt;
&lt;p&gt;そして出来上がったVimの環境なのだけど、とりあえずNeovimにcoc.nvimを入れてLSPによる恩恵に預かることにはしたのだけど、コンフィグやプラグインはかなりミニマルな構成にした。昔入れたプラグインやキーバインドも使ってないものはごっそり捨てた（dotfilesは&lt;a href="https://github.com/tommy6073/dotfiles/"&gt;こちら&lt;/a&gt;）。&lt;/p&gt;
&lt;p&gt;あとはtmuxについて&lt;a href="https://pragprog.com/titles/bhtmux2/tmux-2/"&gt;tmux 2&lt;/a&gt;を読み返したけどそんなに発見が無くて十分使いこなせてる感を感じたあと、&lt;a href="https://leanpub.com/the-tao-of-tmux/read"&gt;Tao of tmux&lt;/a&gt;をざっと読んだり、fzfを使った便利なコマンド無いかなーと探したり（結局使いたいと思うものは増えなかった）といったことをやっていた。&lt;/p&gt;
&lt;p&gt;とりあえずVimの環境はスタートラインに立てたので、あとは必要に応じてカスタマイズしたり習熟していきたいと思う。というこの記事をNeovimで書いたのであった。&lt;/p&gt;</description></item><item><title>ISUCON11でISUCONに初参加した</title><link>https://okweird.net/ja/posts/2021/08/isucon11/</link><pubDate>Mon, 23 Aug 2021 08:54:00 +0900</pubDate><guid>https://okweird.net/ja/posts/2021/08/isucon11/</guid><description>&lt;p&gt;ISUCON11に同僚の &lt;a href="https://twitter.com/akht_ikd"&gt;@akht_ikd&lt;/a&gt; と2人チーム「team”渇き”」として出場した。&lt;br&gt;
結果としては58450点の58位で予選落ちだった。&lt;/p&gt;
&lt;p&gt;詳細なレポートは @akht_ikd が&lt;a href="https://akhtikd.com/posts/2021-08-22-isucon11-qualify-result/"&gt;ブログに書いてくれた&lt;/a&gt;ので個人としての感想などを。&lt;/p&gt;
&lt;p&gt;まず、過去問などをやったり他の人がやったことを調べるにつれて、自分の思っていた以上に幅広く深い知識が要求されるコンテストだということが明らかになっていき、まだまだ知ることが無数にあるのだなということを痛感した。&lt;br&gt;
また、近年は学生で上位に入る方々も多く、世の中には本当に優秀な人々がいるのだなぁということも知れた。&lt;/p&gt;
&lt;p&gt;チームの面でいうと、ISUCONに出てみないかと声をかけたところ、即座にのってくれた @akht_ikd には本当に感謝している。&lt;br&gt;
スクリプトを作ってくれたり、やることリストをまとめてくれたり、競技中の改善にしろ、かなり頼りっきりだった。今回楽しめるレベルで参加できたのは彼によるところが非常に大きい。本当にありがとうございます。&lt;/p&gt;
&lt;p&gt;大会前は過去問をビデオ通話を繋ぎながら一日かけて一緒に解いたりして、部活みたいな面白さがあって良かった。&lt;br&gt;
まだまだ自分自身のスキルは足りないが、こうやって一緒に行動を共にできる仲間がいることに感謝。&lt;/p&gt;
&lt;p&gt;大会が終わった後の大会公式Discordでの感想戦の話なども分からないことが多かった。個人としては自分の足りなさをさらに実感する初参加となった。チームメイトに頼りっきりになってしまったことも反省している。&lt;br&gt;
分からないことがドサッと来ると頭や手が動かなくなる癖があるので、物事を分解して各個撃破できるスキルをもっと身につけなければと思う。&lt;/p&gt;
&lt;p&gt;渇きが増した大会だった。実力を今よりもっとつけて、来年もまた参加したい。&lt;/p&gt;</description></item><item><title>将来の生活の質より毎日の生活の質</title><link>https://okweird.net/ja/posts/2021/05/prefer-everyday-quality/</link><pubDate>Wed, 05 May 2021 19:26:00 +0900</pubDate><guid>https://okweird.net/ja/posts/2021/05/prefer-everyday-quality/</guid><description>&lt;p&gt;この連休中、ずっと料理との付き合い方に向き合っていた。&lt;/p&gt;
&lt;p&gt;去年の10月に初めての一人暮らしを始めて、最初の頃は楽しかった料理も、だんだんと面倒なものに思えてきて、特に夜の料理は仕事終わりで疲れている中、コードを書いたり勉強したりする気力や時間を奪う邪魔者になってしまっていた。&lt;br&gt;
ついには料理を放棄して、朝シリアル、昼レトルト丼、夜冷凍弁当という全く料理をしない生活を数週間ほど続けていた。結果的に、因果関係は定かではないが、調子があまり良くない状態になっていた。&lt;/p&gt;
&lt;p&gt;このままではまずいと思い、夜に料理をせずに栄養があって美味しいものを食べるということをテーマに、ホットクックをレンタルしてみたりと色々と策を練った。週末に副菜を作り置きして、朝にホットクックで夜に出来上がる予約調理をするという方法を考えたが、大量の作り置きがかえって負担となりあまり良いとは思えず、これといった解は出せずに時間だけが過ぎていった。&lt;/p&gt;
&lt;p&gt;そんな時ふと、夜は勉強せずに料理をして、くつろぐだけの時間にしたらどうだろうか、という案が思い浮かんだ。それならば料理は邪魔者ではなく、むしろ楽しむものとして付き合うことができる。&lt;/p&gt;
&lt;p&gt;そう考えるとなんだか途端に気が楽になった。更にそこから派生して、毎日の生活の質を落としてまでスキルアップに勤しんだ結果、将来にそれだけの価値のある生活が待っていると言えるのだろうか、と思えてきた。&lt;/p&gt;
&lt;p&gt;僕はふと思い立って極端なことをやりがちな癖がある。自分を追い込めば何者かになれるのではないかと、他は捨て去って一本に集中してしまいたいと発作的に思うことがあるのだ。しかし結局それは持続可能なものでなく、調子をくずしたりして頓挫して続かないことが多い。 以前に&lt;a href="https://tkykhk.hatenablog.com/entry/2017/01/05/151358"&gt;一流エンジニアなんて目指さなくていいのかも&lt;/a&gt;なんて記事を書いたことがあるが、その時も疲弊してしまったあとに書いたものだ。&lt;/p&gt;
&lt;p&gt;将来の生活の質なんて約束されていないのだから、毎日の生活を思う存分楽しんで、毎日の生活の質を高めたほうがいいのではないか。そんな気持ちになってきた。&lt;/p&gt;
&lt;p&gt;だからといって全くスキルアップの時間を無くすのではない。朝をスキルアップの時間にするのだ。毎晩早く寝て毎朝早く起きて、ベースの練習をして、運動して、無理のない範囲でスキルアップをやっていく。なんだかこれを書いているだけで、明日からが楽しみになってきた。&lt;/p&gt;
&lt;p&gt;さて、連休が終わる。今夜は早速豚キムチを作って食べた。なかなか美味しかった。&lt;br&gt;
明日からは同僚氏と朝活をやっていく予定だ。早起きしていいスタートを切っていきたい。毎日の生活の質を高めていくのだ。&lt;/p&gt;</description></item><item><title>個人Webアプリ作成という荒野に立った</title><link>https://okweird.net/ja/posts/2021/04/getting-started-with-web-app/</link><pubDate>Tue, 13 Apr 2021 23:14:00 +0900</pubDate><guid>https://okweird.net/ja/posts/2021/04/getting-started-with-web-app/</guid><description>&lt;p&gt;&lt;a href="https://okweird.net/blog/write-web-app-with-string-will/"&gt;const writeWebAppWithStrongWill = true;&lt;/a&gt; で宣言したとおり、Webアプリ作りに着手している。&lt;/p&gt;
&lt;p&gt;技術スタックは所属するペパボ ホスティング事業部でこれから使っていくものに沿っていく方針。ひとまずTypeScriptとNext.jsを使うことは確定している。&lt;/p&gt;
&lt;p&gt;アプリの肝となるノードを描画するUIが必要なので色々と検討した結果、https://github.com/wbkd/react-flow を使うことに決めた。この辺のライブラリー、ドキュメントがあまり充実していないので使いながら覚えていくしかなさそう。&lt;/p&gt;
&lt;p&gt;ノードUIライブラリも決まったので、ひとまず &lt;code&gt;npx create-next-app&lt;/code&gt; したあと、ESLintとPrettierを導入したところまで進めた。ルール多すぎてどう設定したらいいか分からん状態だったけど、そのことをTwitterでつぶやいたらアドバイスいただけて、ESLintとPrettierの共存方法が分かり、ESLintはrecommendedを使ってルールはあとから追加していく形で良さそうと分かった。&lt;/p&gt;
&lt;p&gt;次はMaterial-UIを導入しようとしているのだけど、Next.jsのCustom AppやらCustom Documentが分からん、むしろNext.js何も分からん状態になっている。
ReactとNext.jsは半年ほど前に1回チュートリアルをやったのだけど、完全に忘れてしまっているのでもう1周しようと思い、ひとまずReactのチュートリアルを終えた。&lt;br&gt;
モダンなReactの書き方を教えてくれるヘルシンキ大学の &lt;a href="https://fullstackopen.com/en/"&gt;Full stack open&lt;/a&gt; もまた1周するか迷っているところ。&lt;/p&gt;
&lt;p&gt;学習しながら作るの、体系的に学ぶ癖のある僕にはさじ加減が難しいのだけど、最初から全部を把握することは諦めたほうがいいだろうし、あまりチュートリアル煉獄には陥りたくないので、つまみ食いしながらアプリを作っていきたいと思う。&lt;/p&gt;
&lt;p&gt;やってくぞー。&lt;/p&gt;</description></item><item><title>const writeWebAppWithStrongWill = true;</title><link>https://okweird.net/ja/posts/2021/04/write-web-app-with-string-will/</link><pubDate>Tue, 06 Apr 2021 21:55:00 +0900</pubDate><guid>https://okweird.net/ja/posts/2021/04/write-web-app-with-string-will/</guid><description>&lt;p&gt;同僚たちと毎週夜にCode Completeの読書会をやっているのだけど、本編自体は早めに終わったあと、僕の「雑談いいですか？」という一言から、仕事とプライベートでやっていることについて色んな話をした。&lt;/p&gt;
&lt;p&gt;その中で、GoやらTypeScriptやらLinuxやらサーバー運用やら、やりたいことがありすぎて何をやっていくべきか見失っているみたいな話をした時に、ずっと温めていたあるWebアプリの話をしたら、「それいいじゃないですか」と言ってもらえた。&lt;/p&gt;
&lt;p&gt;自分でもなかなかのアイデアだとは思っていたけど、客観的にアイデアの段階で評価してもらえたので、これはやっていくしかないという気持ちになった。&lt;/p&gt;
&lt;p&gt;作るとすればTypeScript + Next.jsで作ろうと思っているのだけど、業務の中でもTypeScriptはこれからやっていく必要がありそうだし、まずはこのWebアプリ作りにフォーカスして、必要ドリブンで学習しながら作っていこうと思う。&lt;/p&gt;
&lt;p&gt;常時リモートワークの中で人と話す機会が少なくなっている中、人と話す中で自分の中に眠っているものを発見できたりと、やはり人と話すというのはいいものだなと思った。&lt;/p&gt;
&lt;p&gt;毎日時間を作ってこの温めてきたWebアプリを作り上げていこうと思う。やり遂げるのだ。&lt;/p&gt;</description></item><item><title>Gatsbyをv3にアップグレードしてgatsby-blog-starterもアップグレードした</title><link>https://okweird.net/ja/posts/2021/03/upgrade-to-gatsby-v3/</link><pubDate>Thu, 11 Mar 2021 17:30:00 +0900</pubDate><guid>https://okweird.net/ja/posts/2021/03/upgrade-to-gatsby-v3/</guid><description>&lt;p&gt;表題のとおりです。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://okweird.net"&gt;https://okweird.net&lt;/a&gt; は&lt;a href="https://www.gatsbyjs.com/"&gt;Gatsby&lt;/a&gt;と&lt;a href="https://www.gatsbyjs.com/starters/gatsbyjs/gatsby-starter-blog"&gt;gatsby-blog-starter&lt;/a&gt;をベースに構築しており、基本的には&lt;a href="https://www.gatsbyjs.com/docs/reference/release-notes/migrating-from-v2-to-v3/"&gt;Gatsby公式移行ガイド&lt;/a&gt;に書かれていることをやっていけばGatsby v2からv3へのアップグレードができるのですが、それ以外の作業も必要だったのでログを残しておこうと思います。&lt;/p&gt;
&lt;h2 id="作業ログ"&gt;作業ログ&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ npm install gatsby@latest&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;まずはメインであるGatsbyのアップグレードを行います。
僕の場合、&lt;code&gt;2.31.1&lt;/code&gt; から &lt;code&gt;3.0.4&lt;/code&gt; まで上がりました。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ npm outdated&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;古い依存をリストします。
僕の場合、結果はこのような感じでした。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Package Current Wanted Latest Location
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gatsby-image 2.5.0 2.11.0 3.0.0 gatsby-starter-blog
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gatsby-plugin-feed 2.7.0 2.13.1 3.0.0 gatsby-starter-blog
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gatsby-plugin-google-gtag 2.6.0 2.8.0 3.0.0 gatsby-starter-blog
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gatsby-plugin-manifest 2.6.1 2.12.1 3.0.0 gatsby-starter-blog
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gatsby-plugin-offline 3.4.0 3.10.2 4.0.0 gatsby-starter-blog
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gatsby-plugin-react-helmet 3.4.0 3.10.0 4.0.0 gatsby-starter-blog
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gatsby-plugin-sharp 2.8.0 2.14.3 3.0.1 gatsby-starter-blog
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gatsby-remark-copy-linked-files 2.4.0 2.10.0 3.0.0 gatsby-starter-blog
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gatsby-remark-images 3.5.1 3.11.1 4.0.0 gatsby-starter-blog
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gatsby-remark-prismjs 3.7.0 3.13.0 4.0.0 gatsby-starter-blog
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gatsby-remark-responsive-iframe 2.5.0 2.11.0 3.0.0 gatsby-starter-blog
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gatsby-remark-smartypants 2.4.0 2.10.0 3.0.0 gatsby-starter-blog
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gatsby-source-filesystem 2.5.0 2.11.1 3.0.0 gatsby-starter-blog
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gatsby-transformer-remark 2.10.0 2.16.1 3.0.0 gatsby-starter-blog
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gatsby-transformer-sharp 2.6.0 2.12.1 3.0.0 gatsby-starter-blog
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;prismjs 1.22.0 1.23.0 1.23.0 gatsby-starter-blog
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;react 16.13.1 16.14.0 17.0.1 gatsby-starter-blog
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;react-dom 16.13.1 16.14.0 17.0.1 gatsby-starter-blog
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;react-helmet 5.2.1 5.2.1 6.1.0 gatsby-starter-blog
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;typeface-merriweather 0.0.72 0.0.72 1.1.13 gatsby-starter-blog
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;typeface-montserrat 0.0.75 0.0.75 1.1.13 gatsby-starter-blog&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;公式ガイドでは1つ1つ &lt;code&gt;npm install {package}@latest&lt;/code&gt; するように書かれていますが、大変なので依存を最新にしてくれる &lt;code&gt;npm-check-updates&lt;/code&gt; を使います。&lt;/p&gt;</description></item><item><title>僕が参加しているオンライン勉強グループ「きまべん」の近況とメンバー募集のお知らせ</title><link>https://okweird.net/ja/posts/2021/02/kimaben-2021/</link><pubDate>Sat, 20 Feb 2021 16:15:00 +0900</pubDate><guid>https://okweird.net/ja/posts/2021/02/kimaben-2021/</guid><description>&lt;p&gt;僕が参加しているScrapboxを利用したオンライン勉強グループ&lt;a href="https://scrapbox.io/kimaben/"&gt;「きまべん」&lt;/a&gt;の近況についてお知らせしておこうと思います。&lt;/p&gt;
&lt;h2 id="これまで"&gt;これまで&lt;/h2&gt;
&lt;p&gt;以前僕のブログできまべんについて紹介したものとしては以下の記事があります:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://tkykhk.hatenablog.com/entry/2018/02/25/000000"&gt;「きまべん」というオンライン勉強グループ活動が盛り上がっている - （旧）It&amp;rsquo;s okay to be weird&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tkykhk.hatenablog.com/entry/2019/04/24/200757"&gt;オンライン勉強グループ「きまべん」で10連休イベントやります！ - （旧）It&amp;rsquo;s okay to be weird&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;そもそものきまべんが何かであるというのは1つ目の記事を見ていただくと分かりやすいかと思います。 最近はSlackでのやりとりも活発になってきました。&lt;br&gt;
また、2つ目の記事にあるように、日々の勉強とは別に、時折イベントを開催し、&lt;a href="https://scrapbox.io/kimaben/2020-03-22_%E7%AC%AC1%E5%9B%9E%E3%81%8D%E3%81%BE%E3%81%B9%E3%82%93%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%82%82%E3%81%8F%E3%82%82%E3%81%8F%E4%BC%9A"&gt;オンラインもくもく会&lt;/a&gt;をしたりといったことをやってきました。&lt;/p&gt;
&lt;p&gt;それに加え、最近は&lt;a href="https://scrapbox.io/kimaben/Real_World_HTTP_%E7%AC%AC%EF%BC%92%E7%89%88_%E8%BC%AA%E8%AA%AD%E4%BC%9A"&gt;Real World HTTP 第2版 輪読会&lt;/a&gt;を1年弱に渡って行い、&lt;a href="https://www.oreilly.co.jp/books/9784873119038/"&gt;Real World HTTP 第2版&lt;/a&gt;を無事読了することができました。&lt;/p&gt;
&lt;h2 id="これから"&gt;これから&lt;/h2&gt;
&lt;p&gt;きまべん発足当時は、朝6:00〜9:00、夜20:00〜23:00という「決まった時間に勉強」が略の、ジャンルレスな勉強グループとして発足しましたが、最近&lt;a href="https://scrapbox.io/kimaben/%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB"&gt;定義が更新&lt;/a&gt;され、ソフトウェアエンジニアのための「きまぐれに勉強」するグループとなりました。&lt;br&gt;
これは参加メンバーがほぼソフトウェアエンジニアのみであることと、勉強時間は各自自由に取っているという実体に即するための変更となります。&lt;/p&gt;
&lt;p&gt;2021/02/23(火)からは第2回輪読会を&lt;a href="https://gihyo.jp/book/2018/978-4-7741-9605-3"&gt;エンジニアリング組織論への招待 ～不確実性に向き合う思考と組織のリファクタリング&lt;/a&gt;をテーマに行っていきます。&lt;br&gt;
&lt;a href="https://scrapbox.io/kimaben/%E7%AC%AC2%E5%9B%9E%E8%BC%AA%E8%AA%AD%E4%BC%9A%E3%82%AD%E3%83%83%E3%82%AF%E3%82%AA%E3%83%95%EF%BC%882021-02-20%EF%BC%89"&gt;キックオフ&lt;/a&gt;にて色々な候補が上がりましたが、一般的な知識が得られてチームに実際に適用できそうとのことからこの本に決定しました。&lt;/p&gt;
&lt;h2 id="メンバー募集しています"&gt;メンバー募集しています！&lt;/h2&gt;
&lt;p&gt;そんなきまべんですが、いつでもメンバーを募集しています。第2回輪読会に興味がある方や、勉強仲間が欲しいというソフトウェアエンジニアの方がいたら是非 &lt;a href="https://twitter.com/tommy6073"&gt;@tommy6073&lt;/a&gt; までお声がけください。その際はきまべんの&lt;a href="https://scrapbox.io/kimaben/%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB"&gt;はじめに&lt;/a&gt;ページを読んでいただけると幸いです。&lt;/p&gt;
&lt;p&gt;あなたも一緒にきまぐれに勉強しませんか？&lt;/p&gt;</description></item><item><title>僕がリモートワークをする上で工夫していることと『リモートワークの達人』</title><link>https://okweird.net/ja/posts/2021/01/remote-work/</link><pubDate>Sun, 10 Jan 2021 18:00:00 +0900</pubDate><guid>https://okweird.net/ja/posts/2021/01/remote-work/</guid><description>&lt;p&gt;去年は自分の中でリモートワーク元年でした。世の中の流れ的にそうだったという方も多いのではないかと思います。&lt;/p&gt;
&lt;p&gt;僕の所属するGMOペパボは新型コロナウイルスの感染拡大に備え、GMOインターネットグループ全体で2020/01/27からいち早く在宅勤務体制へと移行しました。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.gmo.jp/news/article/6641/"&gt;GMOインターネットグループ、新型コロナウィルスの感染拡大に備え在宅勤務体制へ移行 | GMOインターネット株式会社&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;この記事では約1年のリモートワーク通して僕が思うところを書いていきます。&lt;/p&gt;
&lt;h2 id="リモートワークするうえで工夫していること"&gt;リモートワークするうえで工夫していること&lt;/h2&gt;
&lt;p&gt;家だとなかなか気分の切り替えが難しいため、朝のルーティンを工夫しています。家事とか食事とかを省くとこんな感じでやってます:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;朝散歩: 日光を浴びて生活のリズムを整えながら運動します。僕は近所の大濠公園を1周 (2km) しています。朝散歩はかなり調子良くなるので本当にオススメです。&lt;/li&gt;
&lt;li&gt;コーヒーを淹れる: 朝の楽しみです。いい香りで今日も朝が来たと実感します。&lt;/li&gt;
&lt;li&gt;ラジオ体操: 元国立スポーツ科学センター医学研究部研究員の&lt;a href="https://www.1101.com/radio_taiso/"&gt;中村格子さんも推奨している&lt;/a&gt;運動です。体を柔らかくしつつ気分転換のスイッチとなります。&lt;/li&gt;
&lt;li&gt;部屋のシーリングライトを暖色から白色に切り替える: これも気分転換のスイッチとなります。&lt;/li&gt;
&lt;li&gt;Perfumeのエレクトロ・ワールドをかけながら仕事スタート: ルーティンとして仕事始まりのモードを高めます。かける曲はマンネリ化しないよう不定期に変えていきます。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;半分儀式化して仕事モードに切り替えています。逆にこんだけしないと気分が切り替わらないんですから働くって大変ですね。&lt;/p&gt;
&lt;p&gt;個人的に在宅勤務で何が大変かというと仕事を始める前と昼休み休憩後の復帰だと感じます。 &lt;br&gt;
そのためなるべく出勤時間を揃えるようにしています。GMOペパボのエンジニアはフレックス制であり、勿体ない感じがするかもしれませんが、僕には決まった時間からの出勤が合っているようです。&lt;/p&gt;
&lt;p&gt;あとは外に出ても恥ずかしくない格好に着替えています。ビデオ会議に映らない下半身だけスウェットといったことがないようにしています。&lt;/p&gt;
&lt;p&gt;最近引っ越したのですが、仕事部屋とくつろぐ部屋をしっかり分けてもいます。&lt;/p&gt;
&lt;h2 id="リモートワークの達人"&gt;『リモートワークの達人』&lt;/h2&gt;
&lt;p&gt;改めてリモートワークの先駆者の考えを知ろうと、&lt;a href="https://ja.wikipedia.org/wiki/%E3%83%87%E3%82%A4%E3%83%B4%E3%82%A3%E3%83%83%E3%83%89%E3%83%BB%E3%83%8F%E3%82%A4%E3%83%8D%E3%83%9E%E3%82%A4%E3%83%A4%E3%83%BC%E3%83%BB%E3%83%8F%E3%83%B3%E3%82%BD%E3%83%B3"&gt;DHH&lt;/a&gt;の所属する37signals（現Basecamp）の2人が書いた『リモートワークの達人』を読みました。原著は2013年発売と古い本ですがこのご時世でベストセラーとなっているようですね。今読んでも十分通用する（というか時代が追いついた？）本だと思いました。&lt;/p&gt;
&lt;p&gt;リモートワークがいかに素晴らしいかということだけではなく、アンチパターンを数多く紹介しながら、ただ導入すればいいものではないと現実的に書かれているのが印象的でした。&lt;br&gt;
また、人によっては合わない人もあるのでただ一律に導入すればいいという類のものではないとも書かれています。&lt;/p&gt;
&lt;p&gt;リモートワークだとサボるのではないかと考えがちですが、働く人を信頼することが大事なのだということを繰り返し説いています。ちなみに出社していればサボらないかというとそうではなく、大手百貨店のJCペニーではトラフィックの約30%がYouTubeの視聴に使われていたという調査結果もあるようです。&lt;/p&gt;
&lt;p&gt;個人的に印象に残ったのは、アメリカの政府系機関は当時でも特許商標庁職員の85%、NASA職員の57%、環境保護庁職員の67%がリモートで働いているということです。この辺り、どうしても日本の現状と比べざるを得ません。&lt;/p&gt;
&lt;p&gt;人柄が大事、文章力が大事といったことも書かれていますが、ここはかなり実感しています。リモートだからこそ表現に気をつけ、感謝の意を気軽に伝えるようにしています。&lt;/p&gt;
&lt;p&gt;あとは毎項最後に挿し込まれる挿絵がその項をよく表現していてとても面白かったです。&lt;/p&gt;
&lt;p&gt;余談ですが今となっては独自メールを持っているBasecampがGmailの使い方を説明しているのも時代を感じさせました。&lt;/p&gt;
&lt;h2 id="まとめ"&gt;まとめ&lt;/h2&gt;
&lt;p&gt;以上、リモートワークについて思うところを書いてみました。&lt;/p&gt;
&lt;p&gt;試行錯誤が続く中かと思いますが、皆さんもこんなTipsがあるよといったことがあったら是非教えて下さい。&lt;/p&gt;</description></item><item><title>2021年抱負</title><link>https://okweird.net/ja/posts/2021/01/resolution-2021/</link><pubDate>Sat, 09 Jan 2021 16:59:00 +0900</pubDate><guid>https://okweird.net/ja/posts/2021/01/resolution-2021/</guid><description>&lt;p&gt;今年も&lt;a href="https://blog.okweird.net/entry/2020/01/01/182952"&gt;前年&lt;/a&gt;に引き続き箇条書きで。&lt;/p&gt;
&lt;h2 id="技術"&gt;技術&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;TypeScript&lt;/li&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;Next.js&lt;/li&gt;
&lt;li&gt;Docker / Kubernetes&lt;/li&gt;
&lt;li&gt;Go (余裕あったら)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="仕事"&gt;仕事&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;等級上げる&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="色々"&gt;色々&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;毎月1記事のペースでブログを書く&lt;/li&gt;
&lt;li&gt;お気に入りのキーボードを見つける&lt;/li&gt;
&lt;li&gt;ギターで弾ける曲を5曲増やす&lt;/li&gt;
&lt;li&gt;お金周りの勉強（貯金以外の資産運用の手段を増やす）&lt;/li&gt;
&lt;li&gt;体重を理想体重まで減らす&lt;/li&gt;
&lt;li&gt;健康に気をつける&lt;/li&gt;
&lt;li&gt;周りの人を大事にする&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;前年はインプットの年にしたので今年はアウトプットやっていく。&lt;/p&gt;
&lt;p&gt;会社でOKRをやるようになったからか目標設定の意識も変わってきたなという感想。&lt;br&gt;
個人的な目標なのでストレッチはあまりかけずゆるりと。&lt;/p&gt;
&lt;p&gt;やっていくぞい。&lt;/p&gt;</description></item><item><title>PHPカンファレンス福岡2019に実行委員として参加しました！</title><link>https://okweird.net/ja/posts/2019/07/php-conference-fukuoka-2019/</link><pubDate>Wed, 03 Jul 2019 09:00:00 +0900</pubDate><guid>https://okweird.net/ja/posts/2019/07/php-conference-fukuoka-2019/</guid><description>&lt;p&gt;&lt;a href="https://phpcon.fukuoka.jp/2019/"&gt;PHPカンファレンス福岡2019&lt;/a&gt;に実行委員として参加しました。&lt;/p&gt;
&lt;p&gt;完全に運営視点の話になりますので、参加者目線のブログは公式サイトにこれから掲載されていくものをご覧いただければと思います。&lt;/p&gt;
&lt;h2 id="きっかけと役割"&gt;きっかけと役割&lt;/h2&gt;
&lt;p&gt;去年のPHPカンファレンス福岡2018では人生初となる&lt;a href="http://okweird.net/blog/php-conference-fukuoka-2018/"&gt;LT登壇&lt;/a&gt;をさせていただきましたが、今年は実行委員として参加したいと思っていました。そんな折、&lt;a href="https://oss-gate-fukuoka.connpass.com/event/111602/"&gt;OSS Gate Fukuoka&lt;/a&gt;にサポーターとして参加した際、実行委員長の@tsubakimoto_sさんとご一緒する機会があったため、参加したい旨を伝えたところ快諾していただき、参加することとなりました。&lt;/p&gt;
&lt;p&gt;初めての参加なので、当日スタッフぐらいで軽く関わるようなイメージでしたが、結果的にはグッズの発注、当日の司会（スポンサー読み上げ、HASIGOホール）まで任せていただき、かなり深く関わらせていただきました。
何度かイベントの運営には関わらせていただきましたが、200人を超える規模の運営は初めてで、とても貴重な経験となりました。&lt;/p&gt;
&lt;h2 id="ここがすごいよphpカンファレンス福岡運営"&gt;ここがすごいよ、PHPカンファレンス福岡運営&lt;/h2&gt;
&lt;p&gt;実行委員として関わって、ここがすごいと思った点をいくつか書いていきます。&lt;/p&gt;
&lt;h3 id="ボランティアベース"&gt;ボランティアベース&lt;/h3&gt;
&lt;p&gt;実行委員ですが、基本的に全てボランティアでの参加です。日々の業務もある中、この規模のイベントの運営を自分の時間を削って行っている皆さんの姿に、自分も頑張らなくてはと刺激を受けながら関わりました。&lt;/p&gt;
&lt;h3 id="当日までのやりとりはほぼオンラインで"&gt;当日までのやりとりはほぼオンラインで&lt;/h3&gt;
&lt;p&gt;デザインや発注、決めごとなどのやりとりはBacklogの課題ベースで行いました。Facebookのグループもそれを補助するように利用しました。&lt;/p&gt;
&lt;p&gt;顔合わせは最初のキックオフとセッション採択会議、最後の詰め、前日準備の4回程度で、当日が初顔合わせという方もいました。オンラインだけでのコミュニケーションってどうしても難しさがあるので、これはすごいことだと思います。&lt;/p&gt;
&lt;h3 id="当日もチームワーク抜群"&gt;当日もチームワーク抜群&lt;/h3&gt;
&lt;p&gt;当日はもっとピリピリするものと思っていましたが、そんなことはなく、和やかな雰囲気の中、進行しました。途中予期せぬ出来事がいくつか起こった時も、当日用Slackで共有して迅速に対応していました。チームワークは抜群でした。&lt;/p&gt;
&lt;h2 id="嬉しかったこと"&gt;嬉しかったこと&lt;/h2&gt;
&lt;p&gt;個人的に嬉しかったことを書いていきます。&lt;/p&gt;
&lt;h3 id="スポンサー読み上げ"&gt;スポンサー読み上げ&lt;/h3&gt;
&lt;p&gt;間違えがあってはならないとかなり緊張して迎えたスポンサー読み上げですが、ご好評だったようで何よりでした。&lt;/p&gt;
&lt;p&gt;終わったあとハッシュタグを眺めてにやにやしていました。&lt;/p&gt;
&lt;p&gt;（なお、僕のしゃべりがゆっくりだったのも原因か、開会式のあとの午前のスケジュールが5分押してしまったのは内緒です。ご迷惑おかけしました。）&lt;/p&gt;
&lt;h3 id="みんなで練り上げたものが評価されると嬉しい"&gt;みんなで練り上げたものが評価されると嬉しい&lt;/h3&gt;
&lt;p&gt;議論を重ねた結果、こうした方がいいのではないかと決まったことが、参加者の方の生の声で評価されると実行委員としては本当に嬉しかったです。&lt;/p&gt;
&lt;p&gt;僕が関わったものの一例としては、ネームカードを去年の表面だけからタイムテーブルなどを印刷した裏面も加えた、というのがあったのですが、ご好評だったようです。&lt;/p&gt;
&lt;p&gt;みんなで練り上げた甲斐があったなぁと思いました。&lt;/p&gt;
&lt;h2 id="大変だったこと"&gt;大変だったこと&lt;/h2&gt;
&lt;p&gt;大変だったこととしては、普段デジタル製品ばかり扱っているせいで、グッズの発注作業はなかなか慣れないことで苦労しました。&lt;/p&gt;
&lt;p&gt;デザイナーの@torchrightさんに仕上げてもらったデザインを元に発注したのですが、業務であまり関わらないaiファイルなどを扱う必要があり、割と大変でした。金額が大きなものもやらせてもらったので責任も大きかったです。&lt;/p&gt;
&lt;p&gt;あとは、袋詰め作業をしている時に、「あれ、エコバッグ足りない？」という声が上がった時は発注を担当していたので心臓が縮み上がりました（結局足りてました 笑）。届いてみないと分からないアナログ製品の難しさを感じました。&lt;/p&gt;
&lt;h2 id="謝意"&gt;謝意&lt;/h2&gt;
&lt;p&gt;改めて、このイベントを成功に導いてくださった、スポンサーの皆様、登壇者の皆様、参加者の皆様、誠にありがとうございます。そして実行委員の皆様、半年間、本当にお疲れ様でした。&lt;/p&gt;
&lt;p&gt;また、一人として欠けては成り立たなかったことですが、この場を借りて、以下の方々に特に感謝の意を表したいと思います。心よりありがとうございます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;初めての参加にも関わらず快く受け入れてタスクを任せてくださった実行委員長の @tsubakimoto_sさん&lt;/li&gt;
&lt;li&gt;「ここまで目が届くか！」というところまで気配りしていただいた@akase244さん&lt;/li&gt;
&lt;li&gt;HASIGOホールの司会で柔軟にサポートしてくださった@youukkariさん&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="青春謳歌"&gt;青春謳歌&lt;/h2&gt;
&lt;p&gt;余談ですが、僕は高校中退して引きこもり生活が長かったこともあり、青春と言える時代を過ごさずに30過ぎまで生きてきました。今回このようなイベントに関わることができ、いくつになっても青春って送れるものだなぁと思いました。大きな文化祭をやってる感覚というか。&lt;/p&gt;
&lt;p&gt;30歳を迎えたPerfumeの3人が2018年カウントダウンライブで肩を組み合って「青春謳歌！」と叫んだのが僕は大好きなんですが、まさに自分は青春謳歌できてると感じました。まだまだ青春謳歌していきます！&lt;/p&gt;
&lt;h2 id="最後に"&gt;最後に&lt;/h2&gt;
&lt;p&gt;さて、最後に。&lt;/p&gt;
&lt;p&gt;去年も言いましたが、今年も言います。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PHPカンファレンス福岡最高！&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>PHPカンファレンス福岡2018で英語ネタのLT登壇してきた</title><link>https://okweird.net/ja/posts/2019/06/php-conference-fukuoka-2018/</link><pubDate>Tue, 18 Jun 2019 09:00:00 +0900</pubDate><guid>https://okweird.net/ja/posts/2019/06/php-conference-fukuoka-2018/</guid><description>&lt;p&gt;2015年から今年で4回目を迎える、2018/06/16(土)に開催された&lt;a href="https://phpcon.fukuoka.jp/2018/"&gt;PHPカンファレンス福岡2018&lt;/a&gt;に参加してきました。僕にとって特別だったのは、ただ参加したというだけでなく、LTの登壇者として参加したということです。&lt;/p&gt;
&lt;p&gt;今年の目標として、何らかのイベントで初めて登壇するということを掲げていたのですが、LTとはいえ、よりによってこのような大きなイベントを選んだのは我ながら頑張ったなと思います。&lt;/p&gt;
&lt;p&gt;今回は登壇者視点の記事を書きます。参加者視点の記事は別に書こうと思っています。発表内容についてはあまり触れておらず、初登壇の体験記といった形です。&lt;/p&gt;
&lt;h2 id="当日まで"&gt;当日まで&lt;/h2&gt;
&lt;p&gt;当日に至るまで、実は色々あって、自分の能力のなさに自信を無くしたりして調子を崩し、参加する1ヶ月ぐらい前までは正直なところ辞退してしまおうかとも考えていました。しかし、会社の方々を始め色んな方の支えで何とか復帰して繋ぐことができ、当日に臨めました。改めて自分は周りの人に恵まれていると感じました。感謝しています。&lt;/p&gt;
&lt;p&gt;登壇すると腹を決めましたが、資料作りは結局ズルズルと前日まで手をつけませんでした。かなり現実逃避しちゃっていました。&lt;/p&gt;
&lt;p&gt;構想はまとまっていたものの、5分という時間で伝えたいことを凝縮しようとするとなかなか大変でした。色んなLTやスライドに関する記事を参考にし、ポストイットを使って話の流れを決めていったりしました。Keynoteの操作に慣れていないせいで、グラフを1つ作成するのに手こずって、本質的でないところで時間を浪費（プログラミングでもあるあるかも）してしまったりといったこともありましたが、1日を使い、資料はなんとか作り終えることができました。&lt;/p&gt;
&lt;h2 id="いざ登壇"&gt;いざ登壇&lt;/h2&gt;
&lt;p&gt;いよいよ当日を迎え、朝から緊張がじわじわと止まりませんでしたが、不思議と腹は据わっていてその緊張感を楽しめていました。大げさに言うと生きてる実感みたいなものを緊張から感じられて、これはステージに立つ側の特権だなぁと思いました。&lt;/p&gt;
&lt;p&gt;そして、いざ自分の出番を迎え、壇上に立ち100人以上の観衆を前にすると、マイクを持つ左手の震えは止まらず、会場の反応を見る余裕もありませんでした。しかし、PHPカンファレンス福岡LT名物の5分を超えると鳴らされてしまうドラも鳴らされることなく、無事発表を終えることができました。（
&lt;a href="https://speakerdeck.com/tnagatomi/sohutoueaenziniagaying-yu-niguan-reqin-simufang-fa"&gt;Speaker Deckのスライド&lt;/a&gt;）&lt;/p&gt;
&lt;p&gt;ステージを下り、Twitterのハッシュタグを覗いてみると、生の好意的な反応をいただいていて、思わずニヤニヤしてしまいました。大きな達成感がありました。&lt;/p&gt;
&lt;h2 id="登壇を終えて"&gt;登壇を終えて&lt;/h2&gt;
&lt;p&gt;このTOEIC 960取れたネタ、スライドで言及した記事も2016年の記事ですし、 くもキャストというPodcastに出演したときにも触れていただいたりと、かなり使いまわしていて、ウケはいいものの、そろそろこれに頼るのも止めたいなと思っていたりします。次にどこかで登壇する時はがっつり技術ネタでいきたいところです。&lt;/p&gt;
&lt;p&gt;また、LTという短い時間だったので、おすすめコンテンツの具体的な利用方法までは紹介しきれませんでした。そのことについては別にブログ記事を書きたいなと思っています。&lt;/p&gt;
&lt;p&gt;PHPカンファレンス福岡2018でのLT登壇、平成最後の年に自分がやった事として僕の人生に刻み込まれましたし、この規模のイベントで登壇できたことは大きな自信となりました。人間結局やるかやらないかの部分も大きいなと実感しました。&lt;/p&gt;
&lt;p&gt;このような場を用意してくださった、スタッフの方々を始め、参加者の方々、コミュニティに感謝です。PHPカンファレンス福岡最高！&lt;/p&gt;</description></item><item><title>略歴</title><link>https://okweird.net/ja/history/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://okweird.net/ja/history/</guid><description>&lt;h2 id="1985-2002-生誕から高校中退まで"&gt;1985-2002 生誕から高校中退まで&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;福岡県福岡市で生誕 (1985/07/03)&lt;/li&gt;
&lt;li&gt;高校を1年時に中退 (2002/03)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2002-2011-引きこもり"&gt;2002-2011 引きこもり&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;引きこもって海外ゲームを遊ぶ日々が長く続いた (2002-2010)&lt;/li&gt;
&lt;li&gt;通信制高校に入学後、高校卒業程度認定試験に合格 (2011/10)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2012-2015-情報系専門学校"&gt;2012-2015 情報系専門学校&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;福岡市の情報系専門学校に入学 (2012/04)&lt;/li&gt;
&lt;li&gt;基本情報技術者、応用情報技術者、情報セキュリティスペシャリストの資格を取得&lt;/li&gt;
&lt;li&gt;情報系専門学校を卒業 (2015/03)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2015-2017-初社会人"&gt;2015-2017 初社会人&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;専門学校のグループ企業に契約社員として入社 (2015/12)&lt;/li&gt;
&lt;li&gt;専門学校のグループ企業を退社 (2017/02)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2017-2019-キャッチアップでアルバイト"&gt;2017-2019 キャッチアップでアルバイト&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;株式会社キャッチアップにアシスタントエンジニアとして入社 (2017/10)&lt;/li&gt;
&lt;li&gt;baserCMSのコミュニティ活動などに関わる&lt;/li&gt;
&lt;li&gt;株式会社キャッチアップを退社 (2019/08)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2019-2023-gmoペパボで初正社員"&gt;2019-2023 GMOペパボで初正社員&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;GMOペパボ株式会社に入社 (2019/09)&lt;/li&gt;
&lt;li&gt;ホスティング事業部でロリポップ！、ムームードメイン、ヘテムル、おさいぽ！といったサービスの開発、保守、運用に関わる&lt;/li&gt;
&lt;li&gt;GMOペパボ株式会社を退社 (2023/03)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2023--smarthr"&gt;2023- SmartHR&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;株式会社SmartHRに入社 (2023/04)&lt;/li&gt;
&lt;li&gt;現在に至る&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>