<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>hayaokimura.com</title>
        <link>https://hayaokimura.com</link>
        <description>undefined</description>
        <lastBuildDate>Sun, 14 Dec 2025 12:15:18 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>ja</language>
        <image>
            <title>hayaokimura.com</title>
            <url>https://hayaokimura.com/favicon.png</url>
            <link>https://hayaokimura.com</link>
        </image>
        <copyright>All rights reserved 2025, hayaokimura</copyright>
        <item>
            <title><![CDATA[metascraper + unified でブログカードを作った]]></title>
            <link>https://hayaokimura.com/blogs/add-blogcard-to-next-js-blog</link>
            <guid>https://hayaokimura.com/blogs/add-blogcard-to-next-js-blog</guid>
            <pubDate>Thu, 04 Mar 2021 21:51:50 GMT</pubDate>
            <description><![CDATA[
こんにちは。ブログ作って9ヶ月放置した人です。

正月に書こうと思っていたんですが、

- ブログのデザインがひどくて書く気になれなかった
- ブログカードを実装したかった
  - 2021年買ってよかったものリストを書こうと思ったらブログカード作りたくなった

みたいな経緯があって正月はこのブログのブログカードを作ってました。

今日はそのブログです。ちなみにブログカード以外にもちょこちょこ読みやすくなるように CSS をいじってます。

なんで正月に書かずに今書いているかというと最後の詰めをサボったからです。すみません。

## ブログカード完成品
今回作るにあたって、
- サムネイルとタイトル、説明を表示する
- ビルド時にサイトから OGP でデータを読み込んでビルドする

ことを要件としました。できあがったものがこちらです。

[https://hayaokimura.com/blogs/create-blog-with-next-netlify-cms:embed]

みための改善余地はまだあるなと思いつつ、ある程度作りたいものが作れたので良しとしました。
使いかたは、リンクにしたい URL を `[]` で囲って、URL の最後に `:embed`を追加すると使えます。上のリンクは

```
[https://hayaokimura.com/blogs/create-blog-with-next-netlify-cms:embed]
```

みたいな感じです。

## やったこと

最終的にやったこととしては、

- ReactMarkdown を使うのをやめる
- unified をそのままつかって markdown to HTML 変換をビルド時に行う
- 特定の文字列を embed タグとして扱う unified plugin を書く
- レンダリング時は HTML to react をする。その時 embed タグを解釈する

### ReactMarkdown を使うのをやめる

もともとこのブログは ReactMarkdown をつかって markdown を react 化していました。（作ったばかりのブログカード使いたがるのは許してください。）

[https://github.com/remarkjs/react-markdown:embed]

ですが、この方法だとそもそも markdown to react をページを読み込んだときに行っています。

自分が今回やりたかったのはビルド時に markdown to react するとともに OGP でデータをサイトから読み込むことだったので、 ReactMarkdown をこのまま使うことはできませんでした。

### unified をつかって md to HTML をビルド時にする。
unified はいろんな文字列を構文木に変換して扱えるようにするライブラリです。 ReactMarkdown の内部でも結局は unified のプラグインで md to react が成されています。

[https://github.com/unifiedjs/unified:embed]

これを使って、まず markdown to HTML をビルド時に行うようにしました。HTML の文字列として props に保存される形になります。

### 特定の文字列を embed タグとして扱う unified plugin を書く
unified で markdown を HTML にするとき、特定の文字列の場合（今回は `[]` で囲まれた `:embed` を含んだ URL 文字列）に OGP から情報を取ってきて、出力する HTML の文字列に OGP でとってきた情報を含めたいです。

unified は Transformer という構文木を変換するプラグインを挟むことで、変換時にいろいろな処理をすることができます。unified 公式のこの図がわかりやすいです。

![unified がやること](/img/unified.png)

今回の場合、Input が markdown、Output が HTML です。Parserで、markdown を構文木にした後、Transformer を構文木に作用させる事によって、色々できます。今回の場合は、特定の文字列の場合に `embed` という HTML タグにするようにしました。

```javascript
async function transformer(tree, file) {
  const nodes = selectPossibleOembedLinkNodes(tree);

  await nodes.map((node) => processNode(node));

  async function processNode(node) {
    if (!node.children || node.children.length == 0) {
      return;
    }
    const firstText = node.children[0];
    if (firstText.type !== "text") {
      return;
    }
    const value = firstText.value;

    if (value && isEmbed(value)) {
      node.type = "rehype-embed";
      const { body: HTML, url } = await got(extractUrl(value));
      const metadata = await metascraper({ HTML, url });
      node.data = metadata;
      node.children = null;
    }
  }
}
```

`node.type` に `rehype-embed` を指定し、metascraper ライブラリで取得した OGP のデータを node.data にわたすことで、props としてフロントで取得できるようにしています。

### レンダリング時に HTML を React に変換する。その時ブログカードコンポーネントを作る

ビルド時にうまく行っていれば、`[https://hoge.hoge:embed]`という文字列は `rehype-embed` タグと OGP のデータに変換されてフロントに渡ってきます。
フロントでもunifiedを用いて HTML から React に変換します。このとき、特定のタグの変換の仕方を components を与えることで指定できます。今回の場合下記のように RehypeEmbed コンポーネントを指定することで、ブログカードを作ることができます。

```javascript
const processor = unified().use(rehype2react, {createElement: React.createElement, components: {"rehype-embed": RehypeEmbed}});
```

```javascript
export const RehypeEmbed: React.FC<any> = (props) => {
  return (
    <ALink href={props.url} target="_blank" rel="noopener noreferrer">
      <ImageWrapper>
        <Image src={props.image} />
      </ImageWrapper>
      <DescriptionWrapper>
        <Title>{props.title}</Title>
        <Description>{props.description}</Description>
      </DescriptionWrapper>
    </ALink>
  );
}
```

こうすると metadata として HTML に渡した情報が props として利用でき、React で利用できます。

## まとめ

意外と長くなってしまった。 unified を触るのが初めてだったので結構楽しかったですが、実際は結構手こずってました笑

React でブログ作ってる人は参考にしてみてください。では！
]]></description>
            <content:encoded><![CDATA[<p>こんにちは。ブログ作って9ヶ月放置した人です。</p>
<p>正月に書こうと思っていたんですが、</p>
<ul>
<li>ブログのデザインがひどくて書く気になれなかった</li>
<li>ブログカードを実装したかった<ul>
<li>2021年買ってよかったものリストを書こうと思ったらブログカード作りたくなった</li>
</ul>
</li>
</ul>
<p>みたいな経緯があって正月はこのブログのブログカードを作ってました。</p>
<p>今日はそのブログです。ちなみにブログカード以外にもちょこちょこ読みやすくなるように CSS をいじってます。</p>
<p>なんで正月に書かずに今書いているかというと最後の詰めをサボったからです。すみません。</p>
<h2 id="ブログカード完成品">ブログカード完成品</h2>
<p>今回作るにあたって、</p>
<ul>
<li>サムネイルとタイトル、説明を表示する</li>
<li>ビルド時にサイトから OGP でデータを読み込んでビルドする</li>
</ul>
<p>ことを要件としました。できあがったものがこちらです。</p>
<p>[<a href="https://hayaokimura.com/blogs/create-blog-with-next-netlify-cms:embed%5D">https://hayaokimura.com/blogs/create-blog-with-next-netlify-cms:embed]</a></p>
<p>みための改善余地はまだあるなと思いつつ、ある程度作りたいものが作れたので良しとしました。
使いかたは、リンクにしたい URL を <code>[]</code> で囲って、URL の最後に <code>:embed</code>を追加すると使えます。上のリンクは</p>
<pre><code>[https://hayaokimura.com/blogs/create-blog-with-next-netlify-cms:embed]
</code></pre>
<p>みたいな感じです。</p>
<h2 id="やったこと">やったこと</h2>
<p>最終的にやったこととしては、</p>
<ul>
<li>ReactMarkdown を使うのをやめる</li>
<li>unified をそのままつかって markdown to HTML 変換をビルド時に行う</li>
<li>特定の文字列を embed タグとして扱う unified plugin を書く</li>
<li>レンダリング時は HTML to react をする。その時 embed タグを解釈する</li>
</ul>
<h3 id="reactmarkdown-を使うのをやめる">ReactMarkdown を使うのをやめる</h3>
<p>もともとこのブログは ReactMarkdown をつかって markdown を react 化していました。（作ったばかりのブログカード使いたがるのは許してください。）</p>
<p>[<a href="https://github.com/remarkjs/react-markdown:embed%5D">https://github.com/remarkjs/react-markdown:embed]</a></p>
<p>ですが、この方法だとそもそも markdown to react をページを読み込んだときに行っています。</p>
<p>自分が今回やりたかったのはビルド時に markdown to react するとともに OGP でデータをサイトから読み込むことだったので、 ReactMarkdown をこのまま使うことはできませんでした。</p>
<h3 id="unified-をつかって-md-to-html-をビルド時にする。">unified をつかって md to HTML をビルド時にする。</h3>
<p>unified はいろんな文字列を構文木に変換して扱えるようにするライブラリです。 ReactMarkdown の内部でも結局は unified のプラグインで md to react が成されています。</p>
<p>[<a href="https://github.com/unifiedjs/unified:embed%5D">https://github.com/unifiedjs/unified:embed]</a></p>
<p>これを使って、まず markdown to HTML をビルド時に行うようにしました。HTML の文字列として props に保存される形になります。</p>
<h3 id="特定の文字列を-embed-タグとして扱う-unified-plugin-を書く">特定の文字列を embed タグとして扱う unified plugin を書く</h3>
<p>unified で markdown を HTML にするとき、特定の文字列の場合（今回は <code>[]</code> で囲まれた <code>:embed</code> を含んだ URL 文字列）に OGP から情報を取ってきて、出力する HTML の文字列に OGP でとってきた情報を含めたいです。</p>
<p>unified は Transformer という構文木を変換するプラグインを挟むことで、変換時にいろいろな処理をすることができます。unified 公式のこの図がわかりやすいです。</p>
<p><img src="/img/unified.png" alt="unified がやること"></p>
<p>今回の場合、Input が markdown、Output が HTML です。Parserで、markdown を構文木にした後、Transformer を構文木に作用させる事によって、色々できます。今回の場合は、特定の文字列の場合に <code>embed</code> という HTML タグにするようにしました。</p>
<pre><code class="language-javascript">async function transformer(tree, file) {
  const nodes = selectPossibleOembedLinkNodes(tree);

  await nodes.map((node) =&gt; processNode(node));

  async function processNode(node) {
    if (!node.children || node.children.length == 0) {
      return;
    }
    const firstText = node.children[0];
    if (firstText.type !== &quot;text&quot;) {
      return;
    }
    const value = firstText.value;

    if (value &amp;&amp; isEmbed(value)) {
      node.type = &quot;rehype-embed&quot;;
      const { body: HTML, url } = await got(extractUrl(value));
      const metadata = await metascraper({ HTML, url });
      node.data = metadata;
      node.children = null;
    }
  }
}
</code></pre>
<p><code>node.type</code> に <code>rehype-embed</code> を指定し、metascraper ライブラリで取得した OGP のデータを node.data にわたすことで、props としてフロントで取得できるようにしています。</p>
<h3 id="レンダリング時に-html-を-react-に変換する。その時ブログカードコンポーネントを作る">レンダリング時に HTML を React に変換する。その時ブログカードコンポーネントを作る</h3>
<p>ビルド時にうまく行っていれば、<code>[https://hoge.hoge:embed]</code>という文字列は <code>rehype-embed</code> タグと OGP のデータに変換されてフロントに渡ってきます。
フロントでもunifiedを用いて HTML から React に変換します。このとき、特定のタグの変換の仕方を components を与えることで指定できます。今回の場合下記のように RehypeEmbed コンポーネントを指定することで、ブログカードを作ることができます。</p>
<pre><code class="language-javascript">const processor = unified().use(rehype2react, {createElement: React.createElement, components: {&quot;rehype-embed&quot;: RehypeEmbed}});
</code></pre>
<pre><code class="language-javascript">export const RehypeEmbed: React.FC&lt;any&gt; = (props) =&gt; {
  return (
    &lt;ALink href={props.url} target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;
      &lt;ImageWrapper&gt;
        &lt;Image src={props.image} /&gt;
      &lt;/ImageWrapper&gt;
      &lt;DescriptionWrapper&gt;
        &lt;Title&gt;{props.title}&lt;/Title&gt;
        &lt;Description&gt;{props.description}&lt;/Description&gt;
      &lt;/DescriptionWrapper&gt;
    &lt;/ALink&gt;
  );
}
</code></pre>
<p>こうすると metadata として HTML に渡した情報が props として利用でき、React で利用できます。</p>
<h2 id="まとめ">まとめ</h2>
<p>意外と長くなってしまった。 unified を触るのが初めてだったので結構楽しかったですが、実際は結構手こずってました笑</p>
<p>React でブログ作ってる人は参考にしてみてください。では！</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[一人アドベントカレンダーはじめました]]></title>
            <link>https://hayaokimura.com/blogs/advent-calendar2021</link>
            <guid>https://hayaokimura.com/blogs/advent-calendar2021</guid>
            <pubDate>Sun, 05 Dec 2021 23:56:50 GMT</pubDate>
            <description><![CDATA[
[hayaokimura アドベントカレンダー](https://adventar.org/calendars/7251)５日めの記事です。５日目ですが、１記事目です。

[https://adventar.org/calendars/7251:embed]

1~4日目はいずれ書きます。スターウォーズエピソード４みたいなものです。

## なんで書く？
このブログが放置気味でかわいそうだったのと、アドベントカレンダー書かないんですか？って煽られたからです。

もう４日経ってしまったけどゆるっと巻き返します。大丈夫、まだ土日はたくさんある。

## 何を書くか
年末なので今年の振り返りや来年の抱負などを書きたいです。
あとは普通にちょっと調べたこととか最近気になってることとかを短めに書けたらいいなって思います。
ついでにこのブログの改善を進めたいです。

基本的に一文字でも書けたらOKとします。全部埋まったら誰か褒めてください

やっていき
]]></description>
            <content:encoded><![CDATA[<p><a href="https://adventar.org/calendars/7251">hayaokimura アドベントカレンダー</a>５日めの記事です。５日目ですが、１記事目です。</p>
<p>[<a href="https://adventar.org/calendars/7251:embed%5D">https://adventar.org/calendars/7251:embed]</a></p>
<p>1~4日目はいずれ書きます。スターウォーズエピソード４みたいなものです。</p>
<h2 id="なんで書く？">なんで書く？</h2>
<p>このブログが放置気味でかわいそうだったのと、アドベントカレンダー書かないんですか？って煽られたからです。</p>
<p>もう４日経ってしまったけどゆるっと巻き返します。大丈夫、まだ土日はたくさんある。</p>
<h2 id="何を書くか">何を書くか</h2>
<p>年末なので今年の振り返りや来年の抱負などを書きたいです。
あとは普通にちょっと調べたこととか最近気になってることとかを短めに書けたらいいなって思います。
ついでにこのブログの改善を進めたいです。</p>
<p>基本的に一文字でも書けたらOKとします。全部埋まったら誰か褒めてください</p>
<p>やっていき</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Next.js + Netlify CMS でブログを作る]]></title>
            <link>https://hayaokimura.com/blogs/create-blog-with-next-netlify-cms</link>
            <guid>https://hayaokimura.com/blogs/create-blog-with-next-netlify-cms</guid>
            <pubDate>Sun, 14 Jun 2020 13:08:50 GMT</pubDate>
            <description><![CDATA[
ブログ作りました！🎉🎉🎉
自分で作ったブログは機能こそ少ないですが、とても愛着が湧いていいです。せっかく作ったので、備忘録がてら今回作ったブログの作り方を書いておきます。

目次

```
- 構成
  - Next.js
  - Netlify CMS
- やったこと
- これから作りたいもの
```

## 構成

### Next.js

React のフレームワーク。SSR や、ビルド時レンダリング（SSR っぽい略し方を知らない）を簡単にすることができる。ルーティングもフォルダ構成で簡単にすることができて便利。自分は今まで Next.js を全く使ったことがなかったので、[チュートリアル](https://nextjs.org/learn/basics/create-nextjs-app)を一通りやってなんとなく使い方を理解した。

### Netlify CMS

静的ホスティングサービス[Netlify](https://www.netlify.com/)が提供している Git ワークフロー用 CMS。サイトに CMS 機能を追加することができる。

[https://www.netlify.com/:embed]

## やったこと

- Next.js のセットアップ
- Netlify CMS の設定
- デプロイ

### Next.js のセットアップ

自分は[Netlify CMS の Next.js セットアップフロー](https://www.netlifycms.org/docs/nextjs/)を進めて Netlify CMS with Next.js をセットアップしましたが、ブログを作りたいならこれはあまりおすすめしません。このフローでは markdown を react コンポーネントに変換する際に、[frontmatter-markdown-loader](https://hmsk.github.io/frontmatter-markdown-loader/)を使用していますが、これを使うとファイル名を指定して直接インポートする必要があるため、ファイル名を利用した dynamic routing ができませんでした。（できる方法があったら教えてほしい）

より良い方法として、[Creating a Markdown Blog with Next.js](https://dev.to/tinacms/creating-a-markdown-blog-with-next-js-52hk)を見ながらすすめることをおすすめします。これに沿ってセットアップすればとりあえず Next.js でブログを作るところまで進められます。

### Netlify CMS の設定

Next.js をつかった Markdown Blog を作ることはできたので、次はそれを Netlify CMS で管理できるようにしたいです。[Netlify CMS の Next.js セットアップフローの Adding Netlify CMS](https://www.netlifycms.org/docs/nextjs/#adding-netlify-cms)より後を参考にするといいです。ここでは、`admin/index.html`と`admin/config.yml`の作成をして Netlify にデプロイしています。`admin/index.html`はコピペで済むのですが、`admin/config.yml`は若干設定を変える必要があるので今自分が使っている設定を参考に、config.yml の設定をしてください。

```yaml
backend:
  name: git-gateway
  branch: master
media_folder: public/img
public_folder: img
publish_mode: editorial_workflow
collections:
  - name: "blogs"
    label: "Blogs"
    folder: "posts/blogs"
    create: true
    slug: "{{fields.slug}}"
    fields: # The fields for each document, usually in front matter
      - { label: "Layout", name: "layout", widget: "hidden", default: "blog" }
      - { label: "Title", name: "title", widget: "string" }
      - { label: "Slug", name: "slug", widget: "string" }
      - { label: "Publish Date", name: "date", widget: "datetime" }
      - { label: "Featured Image", name: "thumbnail", widget: "image" }
      - { label: "Body", name: "body", widget: "markdown" }
```

**backend:** backend のプロトコル設定。git-gateway をよくわかってないけど、レポジトリとサイトの間の通信を担っています。デプロイする branch を指定できますが、基本 master でいいと思います。

**media_folder:** 画像など、メディアファイルを格納する場所。Next.js は public 以下が静的アセットを格納する場所なので public 以下を指定します。

**public_folder:** 画像を公開するパス。Next.js であれば media_folder の public を抜いたものになるはずです。

**publish_mode:** このオプションは指定しなくてもいいですが、指定すると下書き機能が有効になります。便利。下書き中の記事はブランチ切って PR として保存されています。

**collections:** 記事のフォーマットを指定します。複数指定できるので、ブログ記事と作品一覧みたいな使い方もできそう。

collections の中のパラメータとして一番大事なのは`create: true`です。これを指定しないと Admin の画面で編集ができません。あと、日本語の記事タイトルにするのであれば、`slug: "{{fields.slug}}"`は大事です。デフォルトでは、タイトルがファイル名になるので、日本語のタイトルを付けていると url が日本語になってダサいし長いです。fields に slag を追加して、slag を指定できるようにするとそれぞれファイル名を指定することができるようになります。fields は編集できる変数を追加できます。今自分が指定しているパラメータだと編集画面はこのように表示されます

![Netlify cms 上での表示](/img/netlify-cms-editor-params-shot.png)

### デプロイ

[Publishing to GitHub and Netlify](https://www.netlifycms.org/docs/nextjs/#publishing-to-github-and-netlify)のとおりに進めればデプロイできるはずです！これでブログの完成！やったね！

## つまづいたとこ

**date の取得**

[Creating a Markdown Blog with Next.js](https://dev.to/tinacms/creating-a-markdown-blog-with-next-js-52hk)に従ってセットアップをしていましたが、markdown を取得するところでエラーになりました。

```js
export async function getStaticProps({ ...ctx }) {
  const { slug } = ctx.params;
  const content = await import(`../../posts/${slug}.md`);
  const config = await import(`../../data/config.json`);
  const data = matter(content.default);

  return {
    props: {
      siteTitle: config.title,
      frontmatter: data.data,
      markdownBody: data.content,
    },
  };
}
```

```
SerializableError: Error serializing `.frontMatter.date` returned from `getStaticProps` in "/blogs/[slug]".
Reason: `object` ("[object Date]") cannot be serialized as JSON. Please only return JSON serializable data types.
```

[Next.js の SSG で AMP-only のブログを作った](https://hbsnow.dev/blog/nextjs-blog-ssg/) を参考に直しました。

[https://hbsnow.dev/blog/nextjs-blog-ssg/:embed]

return するときに　`JSON.parse(JSON.stringify(returnData))` をすると治ります。（対症療法感がすごい）

## これから作りたいもの

一旦はブログを作ることができました。ただ、一般的なブログに備わってる機能でまだ足りないものがいくらかあるのでこれから実装したいです。

- OGP 設定
- ブログカードなど、OGP の埋め込み設定
- 関連記事など、回遊対策
- SEO
- 画像サイズの自動調節
- sitemap.xml の設定
- コード埋め込み時の言語に応じたコードハイライト

OGP 埋め込みと画像サイズは実装が悩ましい……
またいい感じの実装ができたらブログにします。ではでは
]]></description>
            <content:encoded><![CDATA[<p>ブログ作りました！🎉🎉🎉
自分で作ったブログは機能こそ少ないですが、とても愛着が湧いていいです。せっかく作ったので、備忘録がてら今回作ったブログの作り方を書いておきます。</p>
<p>目次</p>
<pre><code>- 構成
  - Next.js
  - Netlify CMS
- やったこと
- これから作りたいもの
</code></pre>
<h2 id="構成">構成</h2>
<h3 id="nextjs">Next.js</h3>
<p>React のフレームワーク。SSR や、ビルド時レンダリング（SSR っぽい略し方を知らない）を簡単にすることができる。ルーティングもフォルダ構成で簡単にすることができて便利。自分は今まで Next.js を全く使ったことがなかったので、<a href="https://nextjs.org/learn/basics/create-nextjs-app">チュートリアル</a>を一通りやってなんとなく使い方を理解した。</p>
<h3 id="netlify-cms">Netlify CMS</h3>
<p>静的ホスティングサービス<a href="https://www.netlify.com/">Netlify</a>が提供している Git ワークフロー用 CMS。サイトに CMS 機能を追加することができる。</p>
<p>[<a href="https://www.netlify.com/:embed%5D">https://www.netlify.com/:embed]</a></p>
<h2 id="やったこと">やったこと</h2>
<ul>
<li>Next.js のセットアップ</li>
<li>Netlify CMS の設定</li>
<li>デプロイ</li>
</ul>
<h3 id="nextjs-のセットアップ">Next.js のセットアップ</h3>
<p>自分は<a href="https://www.netlifycms.org/docs/nextjs/">Netlify CMS の Next.js セットアップフロー</a>を進めて Netlify CMS with Next.js をセットアップしましたが、ブログを作りたいならこれはあまりおすすめしません。このフローでは markdown を react コンポーネントに変換する際に、<a href="https://hmsk.github.io/frontmatter-markdown-loader/">frontmatter-markdown-loader</a>を使用していますが、これを使うとファイル名を指定して直接インポートする必要があるため、ファイル名を利用した dynamic routing ができませんでした。（できる方法があったら教えてほしい）</p>
<p>より良い方法として、<a href="https://dev.to/tinacms/creating-a-markdown-blog-with-next-js-52hk">Creating a Markdown Blog with Next.js</a>を見ながらすすめることをおすすめします。これに沿ってセットアップすればとりあえず Next.js でブログを作るところまで進められます。</p>
<h3 id="netlify-cms-の設定">Netlify CMS の設定</h3>
<p>Next.js をつかった Markdown Blog を作ることはできたので、次はそれを Netlify CMS で管理できるようにしたいです。<a href="https://www.netlifycms.org/docs/nextjs/#adding-netlify-cms">Netlify CMS の Next.js セットアップフローの Adding Netlify CMS</a>より後を参考にするといいです。ここでは、<code>admin/index.html</code>と<code>admin/config.yml</code>の作成をして Netlify にデプロイしています。<code>admin/index.html</code>はコピペで済むのですが、<code>admin/config.yml</code>は若干設定を変える必要があるので今自分が使っている設定を参考に、config.yml の設定をしてください。</p>
<pre><code class="language-yaml">backend:
  name: git-gateway
  branch: master
media_folder: public/img
public_folder: img
publish_mode: editorial_workflow
collections:
  - name: &quot;blogs&quot;
    label: &quot;Blogs&quot;
    folder: &quot;posts/blogs&quot;
    create: true
    slug: &quot;{{fields.slug}}&quot;
    fields: # The fields for each document, usually in front matter
      - { label: &quot;Layout&quot;, name: &quot;layout&quot;, widget: &quot;hidden&quot;, default: &quot;blog&quot; }
      - { label: &quot;Title&quot;, name: &quot;title&quot;, widget: &quot;string&quot; }
      - { label: &quot;Slug&quot;, name: &quot;slug&quot;, widget: &quot;string&quot; }
      - { label: &quot;Publish Date&quot;, name: &quot;date&quot;, widget: &quot;datetime&quot; }
      - { label: &quot;Featured Image&quot;, name: &quot;thumbnail&quot;, widget: &quot;image&quot; }
      - { label: &quot;Body&quot;, name: &quot;body&quot;, widget: &quot;markdown&quot; }
</code></pre>
<p><strong>backend:</strong> backend のプロトコル設定。git-gateway をよくわかってないけど、レポジトリとサイトの間の通信を担っています。デプロイする branch を指定できますが、基本 master でいいと思います。</p>
<p><strong>media_folder:</strong> 画像など、メディアファイルを格納する場所。Next.js は public 以下が静的アセットを格納する場所なので public 以下を指定します。</p>
<p><strong>public_folder:</strong> 画像を公開するパス。Next.js であれば media_folder の public を抜いたものになるはずです。</p>
<p><strong>publish_mode:</strong> このオプションは指定しなくてもいいですが、指定すると下書き機能が有効になります。便利。下書き中の記事はブランチ切って PR として保存されています。</p>
<p><strong>collections:</strong> 記事のフォーマットを指定します。複数指定できるので、ブログ記事と作品一覧みたいな使い方もできそう。</p>
<p>collections の中のパラメータとして一番大事なのは<code>create: true</code>です。これを指定しないと Admin の画面で編集ができません。あと、日本語の記事タイトルにするのであれば、<code>slug: &quot;{{fields.slug}}&quot;</code>は大事です。デフォルトでは、タイトルがファイル名になるので、日本語のタイトルを付けていると url が日本語になってダサいし長いです。fields に slag を追加して、slag を指定できるようにするとそれぞれファイル名を指定することができるようになります。fields は編集できる変数を追加できます。今自分が指定しているパラメータだと編集画面はこのように表示されます</p>
<p><img src="/img/netlify-cms-editor-params-shot.png" alt="Netlify cms 上での表示"></p>
<h3 id="デプロイ">デプロイ</h3>
<p><a href="https://www.netlifycms.org/docs/nextjs/#publishing-to-github-and-netlify">Publishing to GitHub and Netlify</a>のとおりに進めればデプロイできるはずです！これでブログの完成！やったね！</p>
<h2 id="つまづいたとこ">つまづいたとこ</h2>
<p><strong>date の取得</strong></p>
<p><a href="https://dev.to/tinacms/creating-a-markdown-blog-with-next-js-52hk">Creating a Markdown Blog with Next.js</a>に従ってセットアップをしていましたが、markdown を取得するところでエラーになりました。</p>
<pre><code class="language-js">export async function getStaticProps({ ...ctx }) {
  const { slug } = ctx.params;
  const content = await import(`../../posts/${slug}.md`);
  const config = await import(`../../data/config.json`);
  const data = matter(content.default);

  return {
    props: {
      siteTitle: config.title,
      frontmatter: data.data,
      markdownBody: data.content,
    },
  };
}
</code></pre>
<pre><code>SerializableError: Error serializing `.frontMatter.date` returned from `getStaticProps` in &quot;/blogs/[slug]&quot;.
Reason: `object` (&quot;[object Date]&quot;) cannot be serialized as JSON. Please only return JSON serializable data types.
</code></pre>
<p><a href="https://hbsnow.dev/blog/nextjs-blog-ssg/">Next.js の SSG で AMP-only のブログを作った</a> を参考に直しました。</p>
<p>[<a href="https://hbsnow.dev/blog/nextjs-blog-ssg/:embed%5D">https://hbsnow.dev/blog/nextjs-blog-ssg/:embed]</a></p>
<p>return するときに　<code>JSON.parse(JSON.stringify(returnData))</code> をすると治ります。（対症療法感がすごい）</p>
<h2 id="これから作りたいもの">これから作りたいもの</h2>
<p>一旦はブログを作ることができました。ただ、一般的なブログに備わってる機能でまだ足りないものがいくらかあるのでこれから実装したいです。</p>
<ul>
<li>OGP 設定</li>
<li>ブログカードなど、OGP の埋め込み設定</li>
<li>関連記事など、回遊対策</li>
<li>SEO</li>
<li>画像サイズの自動調節</li>
<li>sitemap.xml の設定</li>
<li>コード埋め込み時の言語に応じたコードハイライト</li>
</ul>
<p>OGP 埋め込みと画像サイズは実装が悩ましい……
またいい感じの実装ができたらブログにします。ではでは</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[イラストアイコンにしたい]]></title>
            <link>https://hayaokimura.com/blogs/illustration-icon</link>
            <guid>https://hayaokimura.com/blogs/illustration-icon</guid>
            <pubDate>Mon, 06 Dec 2021 23:56:50 GMT</pubDate>
            <description><![CDATA[
[hayaokimura アドベントカレンダー](https://adventar.org/calendars/7251)６日めの記事です。

[https://adventar.org/calendars/7251:embed]

イラストアイコンにしたい。誰かにイラストをお願いしたい。

インターネット上で自分のアイコンとしてずっと自分の写真を使ってきたんだけど、以下のような理由でイラストアイコンにしたい。

- アイコンを設定するたびに自分の顔が拡大されててちょっと恥ずかしい
- その割にアイコンにすると縮小されるのでなにか分かりづらい
- イラストのほうがパッと見たときの認識がしやすい
- ちょっと自分を美化したい

イラストをお願いするには何をするといいんだ...

とりあえず自分の画像を集めるのとイラストのイメージを自分の中で固めておくのがよさそう

けんすうさんの 00:00 Studio のヘッダー画像を描いたバニリゾさん気になっているのでイメージ固められたらお願いしてみよう。

]]></description>
            <content:encoded><![CDATA[<p><a href="https://adventar.org/calendars/7251">hayaokimura アドベントカレンダー</a>６日めの記事です。</p>
<p>[<a href="https://adventar.org/calendars/7251:embed%5D">https://adventar.org/calendars/7251:embed]</a></p>
<p>イラストアイコンにしたい。誰かにイラストをお願いしたい。</p>
<p>インターネット上で自分のアイコンとしてずっと自分の写真を使ってきたんだけど、以下のような理由でイラストアイコンにしたい。</p>
<ul>
<li>アイコンを設定するたびに自分の顔が拡大されててちょっと恥ずかしい</li>
<li>その割にアイコンにすると縮小されるのでなにか分かりづらい</li>
<li>イラストのほうがパッと見たときの認識がしやすい</li>
<li>ちょっと自分を美化したい</li>
</ul>
<p>イラストをお願いするには何をするといいんだ...</p>
<p>とりあえず自分の画像を集めるのとイラストのイメージを自分の中で固めておくのがよさそう</p>
<p>けんすうさんの 00:00 Studio のヘッダー画像を描いたバニリゾさん気になっているのでイメージ固められたらお願いしてみよう。</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[両家顔合わせ case. hayaokimura (準備編)]]></title>
            <link>https://hayaokimura.com/blogs/kaoawase-prepare</link>
            <guid>https://hayaokimura.com/blogs/kaoawase-prepare</guid>
            <pubDate>Wed, 22 Dec 2021 23:27:00 GMT</pubDate>
            <description><![CDATA[
[hayaokimura アドベントカレンダー](https://adventar.org/calendars/7251)22日めの記事です。

[https://adventar.org/calendars/7251:embed]

私事ですが、近いうちに結婚する予定です。
20歳ぐらいの頃は彼女の「か」の字もなかったので、5年前ぐらいの自分に「5年後お前は結婚するぞ」と言うと心底驚きそうです。

結婚するにあたって多くの人は両家顔合わせなるイベントをやると思います。自分も先日無事終わりました。
顔合わせをすすめるにあたってネットの情報はいくつかあったものの、
体験談みたいなものは見つけられなかったので自分が書くと誰かの参考になるかもしれないという体でブログに残しておきます。
人生に一回しかない体験だと思うので残しておきたいという気持ちもあります。

今回は顔合わせの日までに準備したことを書きました。
事前に以下を決めておきました。
- 地域
- お店
- 服装
- 手土産
- 会計

**地域**

自分と彼女はふたりとも地方に実家があるので地域としては「自分の実家の近く」、「彼女の実家の近く」、「東京」の3択がありました。
一般的には彼女の実家の近くに伺う事が多いようですが、彼女のご両親がせっかくなら遠出したそうという話を彼女から聞いていたので今回は東京にしました。

**お店**

自分の顔合わせのイメージは和食だったので、とりあえず和食をメインに色々探しました。
今回の場合どちらの両親も地方から東京に来ていただくので東京駅か品川駅の近くかなーって感じで今回はグランドプリンスホテル新高輪の和食清水にしました。
雰囲気もよく、料理も大変美味しかったです。両家顔合わせプランみたいなのがあってそれにした気がします。

[https://www.princehotels.co.jp/shintakanawa/restaurant/shimizu/:embed]

余談ですが品川駅には品川プリンスホテルとグランドプリンスホテル新高輪があるんですね。自分は知らなくて危うく当日品川プリンスホテルの方に行くところでした。

**服装**

服装もある程度決めて伝えておくとよいみたいです。とりあえずセミフォーマルの洋装とだけ伝えました。（彼女が服装色々悩んでました。自分はスーツを着るだけでいいので楽でした。こういうところは男性の方が楽ですね。）

**手土産**

手土産の有無も確認しておきました。統一しておくのがよいです。有りと双方に伝えました。

**会計**

会計を誰がするかを決めておくとバタバタしなくてよいです。今回は自分と彼女が出すことを両方の両親に伝えておきました。

ネットを見ると顔合わせで色々やる場合もあるみたいですが、うちはかなりシンプルな方だと思います。
結局それぞれの家族の形があるので話し合うのが大事ですね。
当日の話をしだすと長くなりそうなのでこの記事はここまでにしておきます。当日の感じはまた別で書きます。
]]></description>
            <content:encoded><![CDATA[<p><a href="https://adventar.org/calendars/7251">hayaokimura アドベントカレンダー</a>22日めの記事です。</p>
<p>[<a href="https://adventar.org/calendars/7251:embed%5D">https://adventar.org/calendars/7251:embed]</a></p>
<p>私事ですが、近いうちに結婚する予定です。
20歳ぐらいの頃は彼女の「か」の字もなかったので、5年前ぐらいの自分に「5年後お前は結婚するぞ」と言うと心底驚きそうです。</p>
<p>結婚するにあたって多くの人は両家顔合わせなるイベントをやると思います。自分も先日無事終わりました。
顔合わせをすすめるにあたってネットの情報はいくつかあったものの、
体験談みたいなものは見つけられなかったので自分が書くと誰かの参考になるかもしれないという体でブログに残しておきます。
人生に一回しかない体験だと思うので残しておきたいという気持ちもあります。</p>
<p>今回は顔合わせの日までに準備したことを書きました。
事前に以下を決めておきました。</p>
<ul>
<li>地域</li>
<li>お店</li>
<li>服装</li>
<li>手土産</li>
<li>会計</li>
</ul>
<p><strong>地域</strong></p>
<p>自分と彼女はふたりとも地方に実家があるので地域としては「自分の実家の近く」、「彼女の実家の近く」、「東京」の3択がありました。
一般的には彼女の実家の近くに伺う事が多いようですが、彼女のご両親がせっかくなら遠出したそうという話を彼女から聞いていたので今回は東京にしました。</p>
<p><strong>お店</strong></p>
<p>自分の顔合わせのイメージは和食だったので、とりあえず和食をメインに色々探しました。
今回の場合どちらの両親も地方から東京に来ていただくので東京駅か品川駅の近くかなーって感じで今回はグランドプリンスホテル新高輪の和食清水にしました。
雰囲気もよく、料理も大変美味しかったです。両家顔合わせプランみたいなのがあってそれにした気がします。</p>
<p>[<a href="https://www.princehotels.co.jp/shintakanawa/restaurant/shimizu/:embed%5D">https://www.princehotels.co.jp/shintakanawa/restaurant/shimizu/:embed]</a></p>
<p>余談ですが品川駅には品川プリンスホテルとグランドプリンスホテル新高輪があるんですね。自分は知らなくて危うく当日品川プリンスホテルの方に行くところでした。</p>
<p><strong>服装</strong></p>
<p>服装もある程度決めて伝えておくとよいみたいです。とりあえずセミフォーマルの洋装とだけ伝えました。（彼女が服装色々悩んでました。自分はスーツを着るだけでいいので楽でした。こういうところは男性の方が楽ですね。）</p>
<p><strong>手土産</strong></p>
<p>手土産の有無も確認しておきました。統一しておくのがよいです。有りと双方に伝えました。</p>
<p><strong>会計</strong></p>
<p>会計を誰がするかを決めておくとバタバタしなくてよいです。今回は自分と彼女が出すことを両方の両親に伝えておきました。</p>
<p>ネットを見ると顔合わせで色々やる場合もあるみたいですが、うちはかなりシンプルな方だと思います。
結局それぞれの家族の形があるので話し合うのが大事ですね。
当日の話をしだすと長くなりそうなのでこの記事はここまでにしておきます。当日の感じはまた別で書きます。</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[2021年振り返り]]></title>
            <link>https://hayaokimura.com/blogs/looking-back-on-2021</link>
            <guid>https://hayaokimura.com/blogs/looking-back-on-2021</guid>
            <pubDate>Mon, 27 Dec 2021 00:09:00 GMT</pubDate>
            <description><![CDATA[
今年も残すところあと数日ですね。毎年振り返りをちゃんとやっているわけではないですが、せっかくの年の瀬なので今年はちゃんと振り返りをしようと思います。

## 目次
- 実績
- １年前よりできるようになったこと

## 実績
### 仕事
仕事では Wantedly Pulse の開発に携わりました。Pulseでは体験の一部を Slack アプリ内で実現していて、
仕事で知った Slack アプリ開発で自分が知っておけばよかった Tips をブログで公開したら結構読まれました。

[https://www.wantedly.com/companies/wantedly/post_articles/302887:embed]

発信でいうと、ほかは個人的に気になったものをいくつか投稿したぐらいで量的に満足のいく一年ではなかったです。
ただ、Slackアプリの記事もそうですが書いたものに反応をいただいたり、
それによって繋がりが増えたりしたので発信はやっぱりするといいことがあるなと感じたので
来年は是非もっといろんなことを文字で残していきたいと思っています。（動画とか音声もできたら挑戦したい）

肝心の仕事自体の出来でいうと、去年よりは確実に良くなっているという実感はあります。

特に去年１年は新しい機能をどんどん作っていくことが業務のメインでしたが、
今年はそれを改善することにシフトしていきました。
去年書いた実装が今見ると良い手ではなかったものがあったり、
その逆があったりと同じサービスを継続して開発しているから気づけたことが多かったように思います。

### 私生活
私生活ではやっぱり結婚の話がやっと進められるようになったのが大きいです。
２年前にプロポーズしたんですが、その後すぐにコロナウイルスが流行って両家顔合わせができない状態になってしまってずっと pending になってました。

現状国内だとかなりコロナが落ち着いていて、このタイミングを逃すと次いつできるかわからないというのもあっての顔合わせでした。

[https://hayaokimura.com/blogs/kaoawase-prepare:embed]

結婚自体は来年にする予定です。

あと、学生の時にサークルでやっていたダイビングを再開して今年は結構潜りに行きました。
大体伊豆で潜ってました。ハンマーヘッドシャークを見に神子元に行ったのに風が強くて潜れなかったのは結構辛かったです。

## １年前よりできるようになったこと

- テキストコミュニケーションの改善
  - テキストで相手に伝えるということがあまり得意ではなかったのですが、この一年で結構改善されました。（とはいえまだまだですが）
- 仕事との関わり方を見直した
  - 今となって思うのですが、一年前は結構必死に仕事をしていた感じがします。自分で自分を駆り立てるような、追い詰めるような感じでした。あまり自覚的ではなかったのですが、今年の中旬ぐらいにそれを自覚して改善しています。
- 少しずつテキストで発信できるようになってきた
  - まだまだですが、少しだけ public な場になにかを発信するという活動をすることができました。少なくとも去年よりは
- 一つ一つの仕事が丁寧になりつつある
  - テキストコミュニケーションの改善も含めてなのですが、丁寧に一つ一つ進めることの重要性を再認識しました。

まだまだできるようになったことはあると思うのですがパッと出てこない……来年の抱負はまた別途書きます。
来年はできるようになったことを１年で振り返るのではなくてもう少し頻繁に文章にして残していけたらいいなと思っています。

]]></description>
            <content:encoded><![CDATA[<p>今年も残すところあと数日ですね。毎年振り返りをちゃんとやっているわけではないですが、せっかくの年の瀬なので今年はちゃんと振り返りをしようと思います。</p>
<h2 id="目次">目次</h2>
<ul>
<li>実績</li>
<li>１年前よりできるようになったこと</li>
</ul>
<h2 id="実績">実績</h2>
<h3 id="仕事">仕事</h3>
<p>仕事では Wantedly Pulse の開発に携わりました。Pulseでは体験の一部を Slack アプリ内で実現していて、
仕事で知った Slack アプリ開発で自分が知っておけばよかった Tips をブログで公開したら結構読まれました。</p>
<p>[<a href="https://www.wantedly.com/companies/wantedly/post_articles/302887:embed%5D">https://www.wantedly.com/companies/wantedly/post_articles/302887:embed]</a></p>
<p>発信でいうと、ほかは個人的に気になったものをいくつか投稿したぐらいで量的に満足のいく一年ではなかったです。
ただ、Slackアプリの記事もそうですが書いたものに反応をいただいたり、
それによって繋がりが増えたりしたので発信はやっぱりするといいことがあるなと感じたので
来年は是非もっといろんなことを文字で残していきたいと思っています。（動画とか音声もできたら挑戦したい）</p>
<p>肝心の仕事自体の出来でいうと、去年よりは確実に良くなっているという実感はあります。</p>
<p>特に去年１年は新しい機能をどんどん作っていくことが業務のメインでしたが、
今年はそれを改善することにシフトしていきました。
去年書いた実装が今見ると良い手ではなかったものがあったり、
その逆があったりと同じサービスを継続して開発しているから気づけたことが多かったように思います。</p>
<h3 id="私生活">私生活</h3>
<p>私生活ではやっぱり結婚の話がやっと進められるようになったのが大きいです。
２年前にプロポーズしたんですが、その後すぐにコロナウイルスが流行って両家顔合わせができない状態になってしまってずっと pending になってました。</p>
<p>現状国内だとかなりコロナが落ち着いていて、このタイミングを逃すと次いつできるかわからないというのもあっての顔合わせでした。</p>
<p>[<a href="https://hayaokimura.com/blogs/kaoawase-prepare:embed%5D">https://hayaokimura.com/blogs/kaoawase-prepare:embed]</a></p>
<p>結婚自体は来年にする予定です。</p>
<p>あと、学生の時にサークルでやっていたダイビングを再開して今年は結構潜りに行きました。
大体伊豆で潜ってました。ハンマーヘッドシャークを見に神子元に行ったのに風が強くて潜れなかったのは結構辛かったです。</p>
<h2 id="１年前よりできるようになったこと">１年前よりできるようになったこと</h2>
<ul>
<li>テキストコミュニケーションの改善<ul>
<li>テキストで相手に伝えるということがあまり得意ではなかったのですが、この一年で結構改善されました。（とはいえまだまだですが）</li>
</ul>
</li>
<li>仕事との関わり方を見直した<ul>
<li>今となって思うのですが、一年前は結構必死に仕事をしていた感じがします。自分で自分を駆り立てるような、追い詰めるような感じでした。あまり自覚的ではなかったのですが、今年の中旬ぐらいにそれを自覚して改善しています。</li>
</ul>
</li>
<li>少しずつテキストで発信できるようになってきた<ul>
<li>まだまだですが、少しだけ public な場になにかを発信するという活動をすることができました。少なくとも去年よりは</li>
</ul>
</li>
<li>一つ一つの仕事が丁寧になりつつある<ul>
<li>テキストコミュニケーションの改善も含めてなのですが、丁寧に一つ一つ進めることの重要性を再認識しました。</li>
</ul>
</li>
</ul>
<p>まだまだできるようになったことはあると思うのですがパッと出てこない……来年の抱負はまた別途書きます。
来年はできるようになったことを１年で振り返るのではなくてもう少し頻繁に文章にして残していけたらいいなと思っています。</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[2022年振り返り]]></title>
            <link>https://hayaokimura.com/blogs/looking-back-on-2022</link>
            <guid>https://hayaokimura.com/blogs/looking-back-on-2022</guid>
            <pubDate>Sat, 31 Dec 2022 00:09:00 GMT</pubDate>
            <description><![CDATA[

去年振り返りを書いたので今年も振り返りを書きます。
このブログ見るの年末年始ぐらいになってしまっているのは今年の一つ目の反省点。

## 環境の変化
今年は大きく環境が変わった年でした。年始には結婚し、３月には東京から大阪に引っ越し、転職もしました。
結婚と転居は一緒にやるものではないなと思ったとともに、結婚も転職も多くを妻が進めてくれていたのは本当にありがたかったです。東京のど真ん中から大阪のちょっと田舎に引っ越したので近所の環境は大きく変わったが、個人的には２ヶ月に一回ぐらいの頻度で東京に行っていて、これぐらいの頻度のほうが東京を満喫できて今の自分には割と合っている気がします。
東京にいたときはリモートワークのときはリビングで仕事をしていたのだけど、引っ越して仕事部屋ができてとてもはかどっています。最近は昇降デスクも買ってよりはかどっている感じがします。環境大事。

## 仕事
今は、freee の関西拠点で働いています。[関西初の会計エンジニアとして入社して爆速でバリューを出すためにしたこと](https://developers.freee.co.jp/entry/first-kansai-kaikei-engineer-join) という記事を入社エントリー代わりに書いたとおり、自分は会計チームの関西拠点一人目として参画しました。

詳しいことは上記のエントリに書いているのですが、社内の自分の情報発信を意識して行っていたことが仕事のしやすさにつながっていると思っています。最近はあまり発信できてないので続けたいと思っています。

個人的には新しい環境でも結構楽しくやれていて、自分のやりたいことができていると感じています。
3/4年働いて、仕事に少しずつ慣れてきたとともに、そろそろコンフォートゾーンに浸かってしまっている感じがするので、来年はより高い目標に到達できるように気を引き締め直してがんばります。


## 発信
このブログこそ書けてないですが、今年は会社のブログを今までよりは書いた年でした。

[https://developers.freee.co.jp/entry/first-kansai-kaikei-engineer-join:embed]

[https://developers.freee.co.jp/entry/hachi-refactoring-tips:embed]

[https://developers.freee.co.jp/entry/vscode-to-neovim:embed]

あといくつか社内ブログを書いたり、LT 登壇したりと、今までと比べると格段に発信量が増えました。やっぱり反応を貰えると書くのが楽しくなりますね。

## 買ってよかったもの

電動昇降デスクは買ってよかったです。

[https://flexispot.jp/e7-set.html:embed]

## 今年の反省
正直今年は結構頑張ったほうだと思っています。

ただ、イベントや旅行が多く、お金を使いすぎてしまった感があるので、もう少し来年は引き締めたいと思っています。
お金を使わずより稼ぐエンジニアになりたいですね。来年はもっといろんな新しい経験ができたらいいなぁ。

あとやっぱりこのブログがほったらかしになってしまったことが悔やまれるので、もう少し書いていこうと思います。

## 最後に
おわり！来年もよろしく！



]]></description>
            <content:encoded><![CDATA[<p>去年振り返りを書いたので今年も振り返りを書きます。
このブログ見るの年末年始ぐらいになってしまっているのは今年の一つ目の反省点。</p>
<h2 id="環境の変化">環境の変化</h2>
<p>今年は大きく環境が変わった年でした。年始には結婚し、３月には東京から大阪に引っ越し、転職もしました。
結婚と転居は一緒にやるものではないなと思ったとともに、結婚も転職も多くを妻が進めてくれていたのは本当にありがたかったです。東京のど真ん中から大阪のちょっと田舎に引っ越したので近所の環境は大きく変わったが、個人的には２ヶ月に一回ぐらいの頻度で東京に行っていて、これぐらいの頻度のほうが東京を満喫できて今の自分には割と合っている気がします。
東京にいたときはリモートワークのときはリビングで仕事をしていたのだけど、引っ越して仕事部屋ができてとてもはかどっています。最近は昇降デスクも買ってよりはかどっている感じがします。環境大事。</p>
<h2 id="仕事">仕事</h2>
<p>今は、freee の関西拠点で働いています。<a href="https://developers.freee.co.jp/entry/first-kansai-kaikei-engineer-join">関西初の会計エンジニアとして入社して爆速でバリューを出すためにしたこと</a> という記事を入社エントリー代わりに書いたとおり、自分は会計チームの関西拠点一人目として参画しました。</p>
<p>詳しいことは上記のエントリに書いているのですが、社内の自分の情報発信を意識して行っていたことが仕事のしやすさにつながっていると思っています。最近はあまり発信できてないので続けたいと思っています。</p>
<p>個人的には新しい環境でも結構楽しくやれていて、自分のやりたいことができていると感じています。
3/4年働いて、仕事に少しずつ慣れてきたとともに、そろそろコンフォートゾーンに浸かってしまっている感じがするので、来年はより高い目標に到達できるように気を引き締め直してがんばります。</p>
<h2 id="発信">発信</h2>
<p>このブログこそ書けてないですが、今年は会社のブログを今までよりは書いた年でした。</p>
<p>[<a href="https://developers.freee.co.jp/entry/first-kansai-kaikei-engineer-join:embed%5D">https://developers.freee.co.jp/entry/first-kansai-kaikei-engineer-join:embed]</a></p>
<p>[<a href="https://developers.freee.co.jp/entry/hachi-refactoring-tips:embed%5D">https://developers.freee.co.jp/entry/hachi-refactoring-tips:embed]</a></p>
<p>[<a href="https://developers.freee.co.jp/entry/vscode-to-neovim:embed%5D">https://developers.freee.co.jp/entry/vscode-to-neovim:embed]</a></p>
<p>あといくつか社内ブログを書いたり、LT 登壇したりと、今までと比べると格段に発信量が増えました。やっぱり反応を貰えると書くのが楽しくなりますね。</p>
<h2 id="買ってよかったもの">買ってよかったもの</h2>
<p>電動昇降デスクは買ってよかったです。</p>
<p>[<a href="https://flexispot.jp/e7-set.html:embed%5D">https://flexispot.jp/e7-set.html:embed]</a></p>
<h2 id="今年の反省">今年の反省</h2>
<p>正直今年は結構頑張ったほうだと思っています。</p>
<p>ただ、イベントや旅行が多く、お金を使いすぎてしまった感があるので、もう少し来年は引き締めたいと思っています。
お金を使わずより稼ぐエンジニアになりたいですね。来年はもっといろんな新しい経験ができたらいいなぁ。</p>
<p>あとやっぱりこのブログがほったらかしになってしまったことが悔やまれるので、もう少し書いていこうと思います。</p>
<h2 id="最後に">最後に</h2>
<p>おわり！来年もよろしく！</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[2024年の振り返り（と2025年やろうとしていること）]]></title>
            <link>https://hayaokimura.com/blogs/looking-back-on-2024</link>
            <guid>https://hayaokimura.com/blogs/looking-back-on-2024</guid>
            <pubDate>Wed, 01 Jan 2025 00:09:00 GMT</pubDate>
            <description><![CDATA[
明けましておめでとうございます。

このブログは公開していい雑記帳のように使っていこうと思っています。ゆるりと記事を書きながら、2024年の振り返りや学んだこと、そして2025年の目標について話ししたいと思います。よろしくお願いします。

## 2024年の大きな記録

### 1チームのマネージャーを始めた
メンバーとして働いていた頃は、すべてを自分で把握し、コントロールしたいという気持ちが強かったです。しかし、マネージャーとして働き始めて、すべてを把握しようとすると時間も労力もかなり必要だとわかりました。その結果、自分の気持ちも変化し、依存せず、信頼して仕事を任せることが、チーム全体のために最も効果的だと気づきました。これは、メンバーが優秀であることはもちろん、自分の内面の変化も大きかったと感じています。

### 大阪で Ruby コミュニティを始めた
Kyobashi.rb という Ruby コミュニティを始め、社外の Rubyist と定期的に話す機会を作れたのは大きな成果でした。人と会うことが自分にとってどれだけ大事かを再認識しました。資料の共有や意見交換は、スキルアップにもつながり、自信にもつながりました。

[https://kyobashirb.connpass.com/:embed]

### 本を書いた

[https://techbookfest.org/product/sk10P621i0Sbk5tDn2dXrp?productVariantID=aMRrTkuTu4xjD8uB0ywQhi:embed]

PicoRuby でラジコンを作る本を書きました。PicoRubyはすごく楽しく開発できるので今後もどんどん勧めていきたいです。

また、この本を[Ruby on Rails チュートリアルで紹介いただき](https://railstutorial.jp/reading_guide#electronics)、とても嬉しかったです。

### RubyKaigiでLTをした
LTでラジコンを動かすデモを行い、大いに盛り上がりました。多くの方に覚えてもらい、素晴らしい経験になりました。

[https://rubykaigi.org/2024/presentations/lt/:embed]

### 発信が自分をドライブすることに気付きました
freee Developers Hub にもブログ記事として書きました。発信を通じて履歴をつなげていくことの重要性を実感した1年でした。

[https://developers.freee.co.jp/entry/presentation-driven-development:embed]

### 2024年にできなかったこと

読書量やインプットが不足していました。これは2025年に取り組むべき課題です。また、発信登壇が自分をドライブしてくれるので、どんどん増やしていきたいと思っています。

### 2025年の目標

2025年は、もっとたくさんのインプットとアウトプットを増やしていこうと決めています。やりたいことが溢れているこの状態を楽しみながら、どんどん挑戦していきます。

2025年もやっていきます！


]]></description>
            <content:encoded><![CDATA[<p>明けましておめでとうございます。</p>
<p>このブログは公開していい雑記帳のように使っていこうと思っています。ゆるりと記事を書きながら、2024年の振り返りや学んだこと、そして2025年の目標について話ししたいと思います。よろしくお願いします。</p>
<h2 id="2024年の大きな記録">2024年の大きな記録</h2>
<h3 id="1チームのマネージャーを始めた">1チームのマネージャーを始めた</h3>
<p>メンバーとして働いていた頃は、すべてを自分で把握し、コントロールしたいという気持ちが強かったです。しかし、マネージャーとして働き始めて、すべてを把握しようとすると時間も労力もかなり必要だとわかりました。その結果、自分の気持ちも変化し、依存せず、信頼して仕事を任せることが、チーム全体のために最も効果的だと気づきました。これは、メンバーが優秀であることはもちろん、自分の内面の変化も大きかったと感じています。</p>
<h3 id="大阪で-ruby-コミュニティを始めた">大阪で Ruby コミュニティを始めた</h3>
<p>Kyobashi.rb という Ruby コミュニティを始め、社外の Rubyist と定期的に話す機会を作れたのは大きな成果でした。人と会うことが自分にとってどれだけ大事かを再認識しました。資料の共有や意見交換は、スキルアップにもつながり、自信にもつながりました。</p>
<p>[<a href="https://kyobashirb.connpass.com/:embed%5D">https://kyobashirb.connpass.com/:embed]</a></p>
<h3 id="本を書いた">本を書いた</h3>
<p>[<a href="https://techbookfest.org/product/sk10P621i0Sbk5tDn2dXrp?productVariantID=aMRrTkuTu4xjD8uB0ywQhi:embed%5D">https://techbookfest.org/product/sk10P621i0Sbk5tDn2dXrp?productVariantID=aMRrTkuTu4xjD8uB0ywQhi:embed]</a></p>
<p>PicoRuby でラジコンを作る本を書きました。PicoRubyはすごく楽しく開発できるので今後もどんどん勧めていきたいです。</p>
<p>また、この本を<a href="https://railstutorial.jp/reading_guide#electronics">Ruby on Rails チュートリアルで紹介いただき</a>、とても嬉しかったです。</p>
<h3 id="rubykaigiでltをした">RubyKaigiでLTをした</h3>
<p>LTでラジコンを動かすデモを行い、大いに盛り上がりました。多くの方に覚えてもらい、素晴らしい経験になりました。</p>
<p>[<a href="https://rubykaigi.org/2024/presentations/lt/:embed%5D">https://rubykaigi.org/2024/presentations/lt/:embed]</a></p>
<h3 id="発信が自分をドライブすることに気付きました">発信が自分をドライブすることに気付きました</h3>
<p>freee Developers Hub にもブログ記事として書きました。発信を通じて履歴をつなげていくことの重要性を実感した1年でした。</p>
<p>[<a href="https://developers.freee.co.jp/entry/presentation-driven-development:embed%5D">https://developers.freee.co.jp/entry/presentation-driven-development:embed]</a></p>
<h3 id="2024年にできなかったこと">2024年にできなかったこと</h3>
<p>読書量やインプットが不足していました。これは2025年に取り組むべき課題です。また、発信登壇が自分をドライブしてくれるので、どんどん増やしていきたいと思っています。</p>
<h3 id="2025年の目標">2025年の目標</h3>
<p>2025年は、もっとたくさんのインプットとアウトプットを増やしていこうと決めています。やりたいことが溢れているこの状態を楽しみながら、どんどん挑戦していきます。</p>
<p>2025年もやっていきます！</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[キーボードのケースを JLCPCB に発注した]]></title>
            <link>https://hayaokimura.com/blogs/ordered-keyboard-case-from-jlcpcb</link>
            <guid>https://hayaokimura.com/blogs/ordered-keyboard-case-from-jlcpcb</guid>
            <pubDate>Sat, 04 Jan 2025 00:15:00 GMT</pubDate>
            <description><![CDATA[
自分がずっと使っている Corne Cherry V3 のケースがほしいなと思い、作って発注してみたのでその記録。

ネット上にも Corne Cherry V3 のケースのデータはありそうだったんですが、自分で作る練習も兼ねて 3D データの作成から発注までやってみました。

## 3D モデルを作る
Corne Cherry V3 はサンドイッチマウントで作られていて、ボトムのプレートのデータの SVG ファイルが公開されているのでまずはこれをダウンロードしました。

foostan san には大変お世話になっております。このような素晴らしいキーボードを開発してくださりありがとうございます！

[https://github.com/foostan/crkbd/blob/v3-final/plates/common/top-bottom.svg:embed]

この SVG ファイルを Inkscape で開いて、ボトムのプレートのデータだけを取り出しました。このとき、パスが細かく別れていて閉じたパスになっていなかったため、パス同士をつなぎ合わせて閉じたパスに編集しました。

![Inkscape で SVG ファイルを編集した](/img/inkscape-bottom-svg.png)

この SVG ファイルを [Autodesk Fusion(Fusion 360)](https://www.autodesk.com/jp/products/fusion-360/overview?term=1-YEAR&tab=subscription) にインポートして、3D モデルに変換します。

Autodesk Fusion は個人利用であれば無料で使える 3D CAD ソフトです。今回は個人利用だったのでありがたく使わせていただきます。

SVG を挿入でスケッチとして取り込んで、オフセットでケース底面の遊びとケースの側面の厚みを作成、押し出しでケースの形にソリッドを作成。

ソリッドとサーフェスがあってどっちを使ったらいいか迷った。

Chat GPT に聞いたらソリッドは体積があって実体になるもの、サーフェスは表面だけのデザインできるようになっているっぽい。キーボードケースはプリントするのでソリッドで作成する。

ソリッドに USB-C と TRRS ケーブル用の穴を開ける。これもスケッチを作ってそれを押し出して穴を開けられる。楽ちん。

USB-C 用の穴は四角い穴を開けたうえでフィレットという機能を使って丸くしたら簡単にできた。

![Corne Cherry V3 のケースの 3D データ](/img/corne-cherry-v3-left-case.png)

反対側はミラーを使うと反転してコピーできた。

## JLCPCB に発注
最初、`.obj` file を作成して、JLC3DP にアップロードしたら、変なサイズで認識された。どうしてこれが起きたのかわからない。

![.obj file をアップロードしたらサイズがおかしかった](/img/upload-obj-file.png)

そのため、`.step` file で書き出してアップロードした。そしたらうまく行った。

以下の設定値で依頼した。

![JLC3DP に指定したプリント設定](/img/print-from-jlc3dp.png)

見積もりしたら激安だった。初回クーポンも相まって送料含めて300円程度で済みそう。

![見積もりしたら安かった](/img/order-payment.png)

ということで発注。ただ、発注して結構時間が経っているがファイルレビューが終わらない……

じっと待ってみる。また送られてきたらブログ書こうかな。

![ファイルレビュー中](/img/file-reviewing.png)


]]></description>
            <content:encoded><![CDATA[<p>自分がずっと使っている Corne Cherry V3 のケースがほしいなと思い、作って発注してみたのでその記録。</p>
<p>ネット上にも Corne Cherry V3 のケースのデータはありそうだったんですが、自分で作る練習も兼ねて 3D データの作成から発注までやってみました。</p>
<h2 id="3d-モデルを作る">3D モデルを作る</h2>
<p>Corne Cherry V3 はサンドイッチマウントで作られていて、ボトムのプレートのデータの SVG ファイルが公開されているのでまずはこれをダウンロードしました。</p>
<p>foostan san には大変お世話になっております。このような素晴らしいキーボードを開発してくださりありがとうございます！</p>
<p>[<a href="https://github.com/foostan/crkbd/blob/v3-final/plates/common/top-bottom.svg:embed%5D">https://github.com/foostan/crkbd/blob/v3-final/plates/common/top-bottom.svg:embed]</a></p>
<p>この SVG ファイルを Inkscape で開いて、ボトムのプレートのデータだけを取り出しました。このとき、パスが細かく別れていて閉じたパスになっていなかったため、パス同士をつなぎ合わせて閉じたパスに編集しました。</p>
<p><img src="/img/inkscape-bottom-svg.png" alt="Inkscape で SVG ファイルを編集した"></p>
<p>この SVG ファイルを <a href="https://www.autodesk.com/jp/products/fusion-360/overview?term=1-YEAR&tab=subscription">Autodesk Fusion(Fusion 360)</a> にインポートして、3D モデルに変換します。</p>
<p>Autodesk Fusion は個人利用であれば無料で使える 3D CAD ソフトです。今回は個人利用だったのでありがたく使わせていただきます。</p>
<p>SVG を挿入でスケッチとして取り込んで、オフセットでケース底面の遊びとケースの側面の厚みを作成、押し出しでケースの形にソリッドを作成。</p>
<p>ソリッドとサーフェスがあってどっちを使ったらいいか迷った。</p>
<p>Chat GPT に聞いたらソリッドは体積があって実体になるもの、サーフェスは表面だけのデザインできるようになっているっぽい。キーボードケースはプリントするのでソリッドで作成する。</p>
<p>ソリッドに USB-C と TRRS ケーブル用の穴を開ける。これもスケッチを作ってそれを押し出して穴を開けられる。楽ちん。</p>
<p>USB-C 用の穴は四角い穴を開けたうえでフィレットという機能を使って丸くしたら簡単にできた。</p>
<p><img src="/img/corne-cherry-v3-left-case.png" alt="Corne Cherry V3 のケースの 3D データ"></p>
<p>反対側はミラーを使うと反転してコピーできた。</p>
<h2 id="jlcpcb-に発注">JLCPCB に発注</h2>
<p>最初、<code>.obj</code> file を作成して、JLC3DP にアップロードしたら、変なサイズで認識された。どうしてこれが起きたのかわからない。</p>
<p><img src="/img/upload-obj-file.png" alt=".obj file をアップロードしたらサイズがおかしかった"></p>
<p>そのため、<code>.step</code> file で書き出してアップロードした。そしたらうまく行った。</p>
<p>以下の設定値で依頼した。</p>
<p><img src="/img/print-from-jlc3dp.png" alt="JLC3DP に指定したプリント設定"></p>
<p>見積もりしたら激安だった。初回クーポンも相まって送料含めて300円程度で済みそう。</p>
<p><img src="/img/order-payment.png" alt="見積もりしたら安かった"></p>
<p>ということで発注。ただ、発注して結構時間が経っているがファイルレビューが終わらない……</p>
<p>じっと待ってみる。また送られてきたらブログ書こうかな。</p>
<p><img src="/img/file-reviewing.png" alt="ファイルレビュー中"></p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[RubyKaigi 2025 はちょい背伸びして頑張った（感想ブログ）]]></title>
            <link>https://hayaokimura.com/blogs/rubykaigi-2025</link>
            <guid>https://hayaokimura.com/blogs/rubykaigi-2025</guid>
            <pubDate>Sun, 20 Apr 2025 00:15:00 GMT</pubDate>
            <description><![CDATA[
RubyKaigi 2025 が終わってしまった。こういうのは熱いうちにブログにしておかないと書かないので早めに書きました。

## サマリ
最高の RubyKaigi だった！というと月並みすぎるんだけど最高だったなぁ

個人的には本売って LT やって DJ やってというどれもちょっと背伸びした挑戦ではあったんだが
やっぱり背伸びするって大事だなと思った RubyKaigi でもありました。来年も背伸びポイントを作りたいですね（本編登壇ですかね）

このブログはとりあえず本とかLTとかについて書いたあとに全体で良かったこととか書こうかな

[DJ については一個前のブログ](https://hayaokimura.com/blogs/rubymusicmixin-2025)で書いたのでこちらでは割愛しますがめっちゃ楽しかったです。

## 同人誌を売ってました
[@.bookstore](https://bs.atdot.net/rubykaigi2025.html) という笹田さんが技術イベントでやっている本屋さんに
今回は同人誌を置かせてもらえるというイベントがあったので、そちらに「Rubyではじめる電子工作」を置かせていただいていました

[https://techbookfest.org/product/sk10P621i0Sbk5tDn2dXrp?productVariantID=aMRrTkuTu4xjD8uB0ywQhi:embed]

そして今回無謀にも40冊も会場に持っていきました。最初60冊持っていこうとしていたんですが、
スーツケースの重さが飛行機に載せられる重量を超えたので40冊にしました。
（あと [yuuu](https://x.com/Y_uuu) さんが10冊って言ってたので自分多すぎるのでは？とビビったのもあります）

![40冊積んである本](/img/learning-electronics-with-ruby-40.jpeg)

40冊持って行くのマジ重かった…

もし次があるなら次は何らかの形で郵送したいと思います

### そして売り切る
1日目12冊、2日目10冊、3日目18冊と、あれよあれよと売れて[全部なくなりました](https://x.com/hachiblog/status/1913097411469430878)。

![本が完売したときに購入者と撮った写真](/img/learning-electronics-with-ruby-sold-out.jpeg)

高橋会長が本の紹介をしてくれるコーナーで紹介していただいたり

![高橋会長が本を紹介してくれている写真](/img/takahashi-san-book-recomending.jpeg)

はすみさんが登壇のセッション内で紹介してくれたりと多大な支援をしていただきました。（紹介時の画像は嬉しすぎて撮るの忘れちゃった）

![はすみさん登壇写真](/img/hasumi-san-toudan.jpeg)

また、@.bookstore を企画していただいた笹田さん、運営に関わった皆さんの力がなければ本は売れませんでした。
本当にありがとうございます。とても楽しかったです。

買ってくださった皆さんにサインもしました。なんかもうちょっと RubyKaigi 2025 とか書けばよかったなって思っています。

![サインもしました](/img/learning-electronics-with-ruby-sign.jpeg)

あとサインといえば Binary Hacks Reboot を買って、帯を書いた小崎さんにサインを頂きました。
Kyobashi.rb にたまに来てくれる小崎さんにサインもらえたのすごい嬉しかったです。

![小崎さんにサインを頂きました](/img/kosaki-san-sign.jpeg)

## LT をしました

昨年に引き続き今年も LT をしました。今年は Fiber Scheduler vs. General-Purpose Parallel Client という題で話しました。

[https://speakerdeck.com/hayaokimura/fiber-scheduler-vs-general-purpose-parallel-client:embed]

去年よりは緊張せずに喋れた気がします（去年はデモの時間が若干読めなかったので全部話せるかが怪しくて緊張してた気がする）

今年も練習は5分若干超えてたのでドキドキしてたんですが、なんか本番はちょっと巻いてしまってましたね。
割と自分は本番ちょっと巻いちゃうくせがあるので次からはちょっとオーバーしててもいいかなって思うようにします。

tkskkd さんから[LTの歴史の話と5分に収まってほしくないって話](https://note.com/kkd/n/n9edb3418805e)がありましたが、
個人的には熱量が感じられれば最高って話だと理解したので次回以降も熱量込めたLTをしていこうと思います。

あと、LTは Day2 の最後でしたが、寝て起きてDay3の朝、Fiber Scheduler の実装である async gem の開発者で Ruby Commiter の
Samuel から、[「grpc gem に Fiber Scheduler で grpc gem も平行に動かせる PR 出したよ」というメッセージ](https://x.com/ioquatix/status/1913031512859312516)が来てて飛び起きました。

![Samuel からのりぷ](/img/reply-from-samuel.png)

自分が LT で言ったことでまさかそれが可能になるとは夢にも思ってなかったのでまじでこれは夢なのか？と思いました。

RubyKaigi と Ruby Commiter の力をめちゃめちゃ感じました。これを自分でできるようになりたいですね。

## 所属企業メンバーとしての活動
自分の所属しているフリー株式会社は Gold Sponsor です。弊社からは10人ほど参加していました。

![freee メンバーの集合写真](/img/rubykaigi-2025-freee-members.png)

フリーからは初参加のメンバーが多かったので自分が事前に座談会を企画して実施して、事前情報のインプットをしたりもしました。

[https://developers.freee.co.jp/entry/ruby-kaigi-2025-zadankai:embed]

また、Drinkup Sponsor だったので、2日目の夜には Drinkup を企画、実施しました。

ここらへん詳しくは会社の方のブログで誰か書くと思うので割愛しますが結構いい Drinkup だったんじゃなかろうかと思っています。
自分も多少お手伝いできたかなと思うので来年も頑張りたいですね。


## 本編感想
本編で自分が聴いて自分に次やりたいアクションが浮かんだトークのメモです

### State of Namespace
もりすさんのトークです。
experimental ではあるが 4.0 に入ると Matz が言っていたので入ったら軽くでもいいから触ってみたいですね。
トークとしては Namespace のデバッグが大変という話で、めっちゃ大変そうだという感想でした。

### TRICK 2025: Episode I
とりあえず「あなたの知らない超絶技巧プログラミングの世界」は読みたいなという気持ちになりました。

毎度会場が沸いていてすごくいいなと思います。楽しい。

### Performance Bugs and Low-level Ruby Observability APIs
[lowlevel-toolkit](https://github.com/ivoanjo/lowlevel-toolkit) という gem の話でした。
この gem 試しに使ってみたいですね。

### Demystifying Ruby Debuggers: A Deep Dive into Internals
RubyMine のデバッガーの話でした。デバッガーは debug gem でいいかなと思いつつ、
debug gem の内部実装とかもうちょっと読んでみたいなと思う話でした。社内でやってる gem を読む会、つぎは debug gem にしようかな。

### MicroRuby: True Microcontroller Ruby
われらが PicoRuby 作者のはすみさんのトーク

MicroRuby は動かしてみたい。

### Porting PicoRuby to Another Microcontroller: ESP32
yuuu さんが ESP32 に PicoRuby をポーティングした話

ESP32 持ってるのにまだ動かしてないので早く動かしたいですね。

## その他写真とともに振り返り

Day 0 で伊丹空港と松山空港で ydah, ogom のお二人に会ってお昼一緒に食べに行ったの RubyKaigi の滑り出しとしてとても良かったです

![バスで Ruby friends した写真](/img/ruby-friends-with-ydah-ogom.jpeg)

そして一緒に食べたもとやまさんの鯛めしめっちゃ美味しかった

![もとやまさんの鯛めし](/img/motoyama-taimeshi.jpeg)

DD4D、結局 RubyMusicMixin があった Day3 以外、松山にいた日は毎日飲んでた。まじうま。Don Jalapeño 最高。

![DD4Dの店構え](/img/dd4d-store.jpeg)

やんちゃハウスでの写真が一つもないことに気づいたんですがやんちゃハウスのひとときもめっちゃ楽しかったです。

ハウスは道後温泉に足湯、本館、別館と何度も温泉入れてめっちゃ良かった

![足湯](/img/dougo-ashiyu.jpeg)

![道後温泉本館](/img/dougo-honkan.jpeg)

![道後温泉椿の湯](/img/dougo-tsubaki.jpeg)

ハウス近くのラーメン屋 nori で食べた裏メニュー（焦がしガーリック塩チャーシューメン）はまじで美味かった。
もう一回ぐらい行っておけばよかった…

![焦がしガーリック塩チャーシューメン](/img/nori-ramen.jpeg)

会社の同僚がパーカー着た後ろ姿撮ってくれてました

![同僚が撮ってくれたパーカーの後ろ姿](/img/sweee-parker.jpeg)

Day 3 のお昼に行った roro coffee stand もすごい雰囲気がよく、店主の方がいろいろ周辺の飲食店情報を教えてくださってとても良かったです。
飲食店は夜やってる店が多かったので今回は行けずじまいでしたが、次また松山来たときは絶対行きたいと思います。

![roro coffee standのコーヒー](/img/roro-coffee-stand.jpeg)

松山城は天守閣だけじゃなくて周りのところも歩けたので結構楽しいお城でした。

![松山城](/img/matsuyama-castle.jpeg)

## まとめ
ということで最高の RubyKaigi 2025 でした。

個人的に RubyKaigi はまずモチベーションを持ち帰ってくるものだと思っていて今回も十分来年へのモチベーションをいただきました。

また1年 RubyKaigi まで仕事やコードに邁進したいと思います。

来年までの意気込みとしては、本編登壇、DJもっとうまくなる、英語もっとできるようになる、ですかね。

また1年やっていくぞ！来年また函館でお会いしましょう！
]]></description>
            <content:encoded><![CDATA[<p>RubyKaigi 2025 が終わってしまった。こういうのは熱いうちにブログにしておかないと書かないので早めに書きました。</p>
<h2 id="サマリ">サマリ</h2>
<p>最高の RubyKaigi だった！というと月並みすぎるんだけど最高だったなぁ</p>
<p>個人的には本売って LT やって DJ やってというどれもちょっと背伸びした挑戦ではあったんだが
やっぱり背伸びするって大事だなと思った RubyKaigi でもありました。来年も背伸びポイントを作りたいですね（本編登壇ですかね）</p>
<p>このブログはとりあえず本とかLTとかについて書いたあとに全体で良かったこととか書こうかな</p>
<p><a href="https://hayaokimura.com/blogs/rubymusicmixin-2025">DJ については一個前のブログ</a>で書いたのでこちらでは割愛しますがめっちゃ楽しかったです。</p>
<h2 id="同人誌を売ってました">同人誌を売ってました</h2>
<p><a href="https://bs.atdot.net/rubykaigi2025.html">@.bookstore</a> という笹田さんが技術イベントでやっている本屋さんに
今回は同人誌を置かせてもらえるというイベントがあったので、そちらに「Rubyではじめる電子工作」を置かせていただいていました</p>
<p>[<a href="https://techbookfest.org/product/sk10P621i0Sbk5tDn2dXrp?productVariantID=aMRrTkuTu4xjD8uB0ywQhi:embed%5D">https://techbookfest.org/product/sk10P621i0Sbk5tDn2dXrp?productVariantID=aMRrTkuTu4xjD8uB0ywQhi:embed]</a></p>
<p>そして今回無謀にも40冊も会場に持っていきました。最初60冊持っていこうとしていたんですが、
スーツケースの重さが飛行機に載せられる重量を超えたので40冊にしました。
（あと <a href="https://x.com/Y_uuu">yuuu</a> さんが10冊って言ってたので自分多すぎるのでは？とビビったのもあります）</p>
<p><img src="/img/learning-electronics-with-ruby-40.jpeg" alt="40冊積んである本"></p>
<p>40冊持って行くのマジ重かった…</p>
<p>もし次があるなら次は何らかの形で郵送したいと思います</p>
<h3 id="そして売り切る">そして売り切る</h3>
<p>1日目12冊、2日目10冊、3日目18冊と、あれよあれよと売れて<a href="https://x.com/hachiblog/status/1913097411469430878">全部なくなりました</a>。</p>
<p><img src="/img/learning-electronics-with-ruby-sold-out.jpeg" alt="本が完売したときに購入者と撮った写真"></p>
<p>高橋会長が本の紹介をしてくれるコーナーで紹介していただいたり</p>
<p><img src="/img/takahashi-san-book-recomending.jpeg" alt="高橋会長が本を紹介してくれている写真"></p>
<p>はすみさんが登壇のセッション内で紹介してくれたりと多大な支援をしていただきました。（紹介時の画像は嬉しすぎて撮るの忘れちゃった）</p>
<p><img src="/img/hasumi-san-toudan.jpeg" alt="はすみさん登壇写真"></p>
<p>また、@.bookstore を企画していただいた笹田さん、運営に関わった皆さんの力がなければ本は売れませんでした。
本当にありがとうございます。とても楽しかったです。</p>
<p>買ってくださった皆さんにサインもしました。なんかもうちょっと RubyKaigi 2025 とか書けばよかったなって思っています。</p>
<p><img src="/img/learning-electronics-with-ruby-sign.jpeg" alt="サインもしました"></p>
<p>あとサインといえば Binary Hacks Reboot を買って、帯を書いた小崎さんにサインを頂きました。
Kyobashi.rb にたまに来てくれる小崎さんにサインもらえたのすごい嬉しかったです。</p>
<p><img src="/img/kosaki-san-sign.jpeg" alt="小崎さんにサインを頂きました"></p>
<h2 id="lt-をしました">LT をしました</h2>
<p>昨年に引き続き今年も LT をしました。今年は Fiber Scheduler vs. General-Purpose Parallel Client という題で話しました。</p>
<p>[<a href="https://speakerdeck.com/hayaokimura/fiber-scheduler-vs-general-purpose-parallel-client:embed%5D">https://speakerdeck.com/hayaokimura/fiber-scheduler-vs-general-purpose-parallel-client:embed]</a></p>
<p>去年よりは緊張せずに喋れた気がします（去年はデモの時間が若干読めなかったので全部話せるかが怪しくて緊張してた気がする）</p>
<p>今年も練習は5分若干超えてたのでドキドキしてたんですが、なんか本番はちょっと巻いてしまってましたね。
割と自分は本番ちょっと巻いちゃうくせがあるので次からはちょっとオーバーしててもいいかなって思うようにします。</p>
<p>tkskkd さんから<a href="https://note.com/kkd/n/n9edb3418805e">LTの歴史の話と5分に収まってほしくないって話</a>がありましたが、
個人的には熱量が感じられれば最高って話だと理解したので次回以降も熱量込めたLTをしていこうと思います。</p>
<p>あと、LTは Day2 の最後でしたが、寝て起きてDay3の朝、Fiber Scheduler の実装である async gem の開発者で Ruby Commiter の
Samuel から、<a href="https://x.com/ioquatix/status/1913031512859312516">「grpc gem に Fiber Scheduler で grpc gem も平行に動かせる PR 出したよ」というメッセージ</a>が来てて飛び起きました。</p>
<p><img src="/img/reply-from-samuel.png" alt="Samuel からのりぷ"></p>
<p>自分が LT で言ったことでまさかそれが可能になるとは夢にも思ってなかったのでまじでこれは夢なのか？と思いました。</p>
<p>RubyKaigi と Ruby Commiter の力をめちゃめちゃ感じました。これを自分でできるようになりたいですね。</p>
<h2 id="所属企業メンバーとしての活動">所属企業メンバーとしての活動</h2>
<p>自分の所属しているフリー株式会社は Gold Sponsor です。弊社からは10人ほど参加していました。</p>
<p><img src="/img/rubykaigi-2025-freee-members.png" alt="freee メンバーの集合写真"></p>
<p>フリーからは初参加のメンバーが多かったので自分が事前に座談会を企画して実施して、事前情報のインプットをしたりもしました。</p>
<p>[<a href="https://developers.freee.co.jp/entry/ruby-kaigi-2025-zadankai:embed%5D">https://developers.freee.co.jp/entry/ruby-kaigi-2025-zadankai:embed]</a></p>
<p>また、Drinkup Sponsor だったので、2日目の夜には Drinkup を企画、実施しました。</p>
<p>ここらへん詳しくは会社の方のブログで誰か書くと思うので割愛しますが結構いい Drinkup だったんじゃなかろうかと思っています。
自分も多少お手伝いできたかなと思うので来年も頑張りたいですね。</p>
<h2 id="本編感想">本編感想</h2>
<p>本編で自分が聴いて自分に次やりたいアクションが浮かんだトークのメモです</p>
<h3 id="state-of-namespace">State of Namespace</h3>
<p>もりすさんのトークです。
experimental ではあるが 4.0 に入ると Matz が言っていたので入ったら軽くでもいいから触ってみたいですね。
トークとしては Namespace のデバッグが大変という話で、めっちゃ大変そうだという感想でした。</p>
<h3 id="trick-2025-episode-i">TRICK 2025: Episode I</h3>
<p>とりあえず「あなたの知らない超絶技巧プログラミングの世界」は読みたいなという気持ちになりました。</p>
<p>毎度会場が沸いていてすごくいいなと思います。楽しい。</p>
<h3 id="performance-bugs-and-low-level-ruby-observability-apis">Performance Bugs and Low-level Ruby Observability APIs</h3>
<p><a href="https://github.com/ivoanjo/lowlevel-toolkit">lowlevel-toolkit</a> という gem の話でした。
この gem 試しに使ってみたいですね。</p>
<h3 id="demystifying-ruby-debuggers-a-deep-dive-into-internals">Demystifying Ruby Debuggers: A Deep Dive into Internals</h3>
<p>RubyMine のデバッガーの話でした。デバッガーは debug gem でいいかなと思いつつ、
debug gem の内部実装とかもうちょっと読んでみたいなと思う話でした。社内でやってる gem を読む会、つぎは debug gem にしようかな。</p>
<h3 id="microruby-true-microcontroller-ruby">MicroRuby: True Microcontroller Ruby</h3>
<p>われらが PicoRuby 作者のはすみさんのトーク</p>
<p>MicroRuby は動かしてみたい。</p>
<h3 id="porting-picoruby-to-another-microcontroller-esp32">Porting PicoRuby to Another Microcontroller: ESP32</h3>
<p>yuuu さんが ESP32 に PicoRuby をポーティングした話</p>
<p>ESP32 持ってるのにまだ動かしてないので早く動かしたいですね。</p>
<h2 id="その他写真とともに振り返り">その他写真とともに振り返り</h2>
<p>Day 0 で伊丹空港と松山空港で ydah, ogom のお二人に会ってお昼一緒に食べに行ったの RubyKaigi の滑り出しとしてとても良かったです</p>
<p><img src="/img/ruby-friends-with-ydah-ogom.jpeg" alt="バスで Ruby friends した写真"></p>
<p>そして一緒に食べたもとやまさんの鯛めしめっちゃ美味しかった</p>
<p><img src="/img/motoyama-taimeshi.jpeg" alt="もとやまさんの鯛めし"></p>
<p>DD4D、結局 RubyMusicMixin があった Day3 以外、松山にいた日は毎日飲んでた。まじうま。Don Jalapeño 最高。</p>
<p><img src="/img/dd4d-store.jpeg" alt="DD4Dの店構え"></p>
<p>やんちゃハウスでの写真が一つもないことに気づいたんですがやんちゃハウスのひとときもめっちゃ楽しかったです。</p>
<p>ハウスは道後温泉に足湯、本館、別館と何度も温泉入れてめっちゃ良かった</p>
<p><img src="/img/dougo-ashiyu.jpeg" alt="足湯"></p>
<p><img src="/img/dougo-honkan.jpeg" alt="道後温泉本館"></p>
<p><img src="/img/dougo-tsubaki.jpeg" alt="道後温泉椿の湯"></p>
<p>ハウス近くのラーメン屋 nori で食べた裏メニュー（焦がしガーリック塩チャーシューメン）はまじで美味かった。
もう一回ぐらい行っておけばよかった…</p>
<p><img src="/img/nori-ramen.jpeg" alt="焦がしガーリック塩チャーシューメン"></p>
<p>会社の同僚がパーカー着た後ろ姿撮ってくれてました</p>
<p><img src="/img/sweee-parker.jpeg" alt="同僚が撮ってくれたパーカーの後ろ姿"></p>
<p>Day 3 のお昼に行った roro coffee stand もすごい雰囲気がよく、店主の方がいろいろ周辺の飲食店情報を教えてくださってとても良かったです。
飲食店は夜やってる店が多かったので今回は行けずじまいでしたが、次また松山来たときは絶対行きたいと思います。</p>
<p><img src="/img/roro-coffee-stand.jpeg" alt="roro coffee standのコーヒー"></p>
<p>松山城は天守閣だけじゃなくて周りのところも歩けたので結構楽しいお城でした。</p>
<p><img src="/img/matsuyama-castle.jpeg" alt="松山城"></p>
<h2 id="まとめ">まとめ</h2>
<p>ということで最高の RubyKaigi 2025 でした。</p>
<p>個人的に RubyKaigi はまずモチベーションを持ち帰ってくるものだと思っていて今回も十分来年へのモチベーションをいただきました。</p>
<p>また1年 RubyKaigi まで仕事やコードに邁進したいと思います。</p>
<p>来年までの意気込みとしては、本編登壇、DJもっとうまくなる、英語もっとできるようになる、ですかね。</p>
<p>また1年やっていくぞ！来年また函館でお会いしましょう！</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[RubyMusicMixin 2025 で初めてDJしました]]></title>
            <link>https://hayaokimura.com/blogs/rubymusicmixin-2025</link>
            <guid>https://hayaokimura.com/blogs/rubymusicmixin-2025</guid>
            <pubDate>Sun, 20 Apr 2025 00:15:00 GMT</pubDate>
            <description><![CDATA[
RubyKaigi最終日の音楽イベント RubyMusicMixin で人生初のDJしました。

![プレイ中の様子](/img/ruby-music-mixin-2025-playing.jpeg)

結果めっちゃ楽しかったので感想などを書いておこうと思います。今回 RubyMusicMixin 参加してDJ始めようかなみたいな人にも参考になりますように

[https://conference.pixiv.co.jp/2025/rubymusicmixin:embed]

## hachiのレベル感
会社の音楽部とか家でたまーにDJして遊ぶレベルでまあ初心者です。freee の関西オフィスには音楽部があり、DJ機材とスピーカーもあります。家には同僚にいただいた DDJ-RB があるのでそれで練習してました。

関西で DJ して遊びたいなって人はぜひ自分に言ってくれたら freee の関西オフィスで一緒にできます。むしろ一緒にやって色々教えて下さい。

RubyMusicMixin 経験でいうと RubyMusicMixin は初開催の津から参加していて、RubyKaigi のイベントで開催されたものは全部参加してます。
Kaigi on Rails のイベントで開催されているやつは Organizer をしていて昨年は参加できなかったですね。


## 応募、当選
なんか落ちることもあるって聞いてたので応募フォームをちゃんと入力するために自分の好きなジャンルとか曲とかを軽くリサーチしました。

Yunomi とか Neko Hacker とか好きで、Kawaii Future Bass って言うらしいということがわかったのでとりあえず、そういう音楽をかけますということを書いて応募締切日にフォームを送信しました。（まじでこのレベルなので初心者丸出しである）

しばらくして通ったと言われたので喜びと緊張が一緒に来たものの、連絡きたのが4月頭だったので残り2週間もなく、頑張るしかないかと腹を括りました。

![当選！](/img/ruby-music-mixin-2025-dj-accepted.png)


## 当選〜RubyKaigi Day -1
曲選びと練習、検索を毎日した

### 曲選び
とりあえず好きな曲を集めた。が、うまくつなげられる気がしない…とまずは途方に暮れた。そのあとそういえば BPM を揃えたほうがいいんだっけという初歩の初歩を忘れていたことに気づいて意識を取り戻すというのをやってました。

意識を戻したあと、集めた曲を BPM 順に並べて厳選していき、
とりあえず絶対かけたい曲を見ると128あたりの曲と170あたりの曲が多かったのでそこに絞りました。
128 -> 170 はカットインでも echo で切ってもなんでもいいやと思っていましたね。

### 練習
次の曲のここから聴いてほしいなぁみたいなポイントにちゃんと繋がるように Memory Cue を打った。（ちなみに Memory Cue という便利なものがあるらしいと知ったのは Ruby Kaigi day -7 ぐらいである。まじの初心者である。）

そこがうまくいくように練習した。そもそも操作にあんま慣れてなかったのでなれるようにした

###  検索
とりあえず入門動画を見まくった。DJ Koo はじめ、入門動画を出してくださっているDJの皆さんありがとうございます。さっき言及した Memory Cue というものがあるらしいというのはもちろん YouTube で見つけました。

あと、あんな最新の CDJ 機材を触ったことはなかったので本番パニクらないように何がどこにあるのかをしっかり予習しました。余談だが当日に Beat FX の場所がわからなくなって当日も YouTube に助けられていたのでまじ YouTube のある時代に生まれてよかったです。

## 当日~出番まで
自分の出番が始まるまではめっちゃ緊張して他の人のプレイをあまり楽しめなかったのが辛いポイントでしたね。出番が 12:30 だったが 11:00 ぐらいに緊張しすぎて疲れて体調が悪くなってました。12:00 にビール一杯飲んだり緊張していることを他の DJ に伝えたりして緊張と付き合っていた気がします。

## プレイ中
[@barometrica](https://x.com/barometrica) san が「緊張するのは最初の曲の再生ボタン押すまでですよ」と言ってくれたがマジだった。

自分の好きな曲でみんながすごい楽しそうに踊ってるの、楽しくないわけないよね！

![まじ楽しかった](/img/ruby-music-mixin-good-picture.jpeg)

あと、DJが楽しそうにしているのが一番楽しいよなと思っていつもの2倍ぐらい踊った。結果半分ぐらいで酸欠気味になってたし、空調ガンガンだったのに汗だくだった。

とりあえず初心者で技術は無いので好きな曲を全力でかけて全力で楽しんでもらおうという作戦で挑んだがそこは 120% 達成できたんじゃないかなと思うぐらい良かった

[これはこたつさんが撮ってくれた全力の様子です](https://x.com/sakahukamaki/status/1913254335112458589)

## プレイ後
[炬燵（kotatsu）](https://x.com/sakahukamaki) san に[コークハイ奢ってもらった](https://x.com/hachiblog/status/1913265346284572796)。ごちそうさまでした。

みんなに楽しかった、よかった、と言ってもらえてすごく嬉しかったですね。X もめっちゃ見た。

そして緊張はもう無いので全力で残りの音楽を楽しみました。最後の sylph & いかるが の音楽を聴きながらこれで RubyKaigi が、RubyMusicMixin が終わってしまうと一人で震えていましたね……

## 今
X 徘徊してたら[炬燵（kotatsu）](https://x.com/sakahukamaki) san に[フィードバック頂きました](https://x.com/sakahukamaki/status/1913600883570647115)。

初心者であることはみんなわかってると思うのでよかった！楽しかった！はみんなすごく言ってくれてそれ自体はすごく嬉しいんだけど、こたつさんはここが未熟やったでというのを言葉を選びつつちゃんと伝えてくれるのでとても、とてもありがたかった。自己評価とも近かったのでこれからもっと頑張ろうと思えたのでがんばります！

## 当日の選曲

```
恋愛サーキュレーション (Yunomi "Kawaii EDM" Remix)
ハッピーライフ (feat. nicamoq)
Yunomi & nicamoq - インドア系ならトラックメーカー(Jun Kuroda remix)
ロボティックガール (feat. nicamoq)
Catch A Fire (jersey wakaran girl mix)
One by One (feat. KMNZ LIZ)
Chocolate Adventure (feat. ななひら)
I SAY YES(denshino J-core bootleg)
livetune feat. Hatsune Miku - Tell Your World(HiroHiro Bootleg)
```

## これから
もっとDJやろうと思ったし他の人のDJ聴きたいと思いました！

来年も絶対 RubyMusicMixin 応募するぞ！

聴いてくれた皆さんほんとうにありがとうございました！拙いDJでしたが楽しんでいただけてよかったです！また函館でお会いしましょう！

![同僚が撮ってくれたかっこいい写真](/img/ruby-music-mixin-2025-hachi.jpeg)
]]></description>
            <content:encoded><![CDATA[<p>RubyKaigi最終日の音楽イベント RubyMusicMixin で人生初のDJしました。</p>
<p><img src="/img/ruby-music-mixin-2025-playing.jpeg" alt="プレイ中の様子"></p>
<p>結果めっちゃ楽しかったので感想などを書いておこうと思います。今回 RubyMusicMixin 参加してDJ始めようかなみたいな人にも参考になりますように</p>
<p>[<a href="https://conference.pixiv.co.jp/2025/rubymusicmixin:embed%5D">https://conference.pixiv.co.jp/2025/rubymusicmixin:embed]</a></p>
<h2 id="hachiのレベル感">hachiのレベル感</h2>
<p>会社の音楽部とか家でたまーにDJして遊ぶレベルでまあ初心者です。freee の関西オフィスには音楽部があり、DJ機材とスピーカーもあります。家には同僚にいただいた DDJ-RB があるのでそれで練習してました。</p>
<p>関西で DJ して遊びたいなって人はぜひ自分に言ってくれたら freee の関西オフィスで一緒にできます。むしろ一緒にやって色々教えて下さい。</p>
<p>RubyMusicMixin 経験でいうと RubyMusicMixin は初開催の津から参加していて、RubyKaigi のイベントで開催されたものは全部参加してます。
Kaigi on Rails のイベントで開催されているやつは Organizer をしていて昨年は参加できなかったですね。</p>
<h2 id="応募、当選">応募、当選</h2>
<p>なんか落ちることもあるって聞いてたので応募フォームをちゃんと入力するために自分の好きなジャンルとか曲とかを軽くリサーチしました。</p>
<p>Yunomi とか Neko Hacker とか好きで、Kawaii Future Bass って言うらしいということがわかったのでとりあえず、そういう音楽をかけますということを書いて応募締切日にフォームを送信しました。（まじでこのレベルなので初心者丸出しである）</p>
<p>しばらくして通ったと言われたので喜びと緊張が一緒に来たものの、連絡きたのが4月頭だったので残り2週間もなく、頑張るしかないかと腹を括りました。</p>
<p><img src="/img/ruby-music-mixin-2025-dj-accepted.png" alt="当選！"></p>
<h2 id="当選〜rubykaigi-day--1">当選〜RubyKaigi Day -1</h2>
<p>曲選びと練習、検索を毎日した</p>
<h3 id="曲選び">曲選び</h3>
<p>とりあえず好きな曲を集めた。が、うまくつなげられる気がしない…とまずは途方に暮れた。そのあとそういえば BPM を揃えたほうがいいんだっけという初歩の初歩を忘れていたことに気づいて意識を取り戻すというのをやってました。</p>
<p>意識を戻したあと、集めた曲を BPM 順に並べて厳選していき、
とりあえず絶対かけたい曲を見ると128あたりの曲と170あたりの曲が多かったのでそこに絞りました。
128 -&gt; 170 はカットインでも echo で切ってもなんでもいいやと思っていましたね。</p>
<h3 id="練習">練習</h3>
<p>次の曲のここから聴いてほしいなぁみたいなポイントにちゃんと繋がるように Memory Cue を打った。（ちなみに Memory Cue という便利なものがあるらしいと知ったのは Ruby Kaigi day -7 ぐらいである。まじの初心者である。）</p>
<p>そこがうまくいくように練習した。そもそも操作にあんま慣れてなかったのでなれるようにした</p>
<h3 id="検索">検索</h3>
<p>とりあえず入門動画を見まくった。DJ Koo はじめ、入門動画を出してくださっているDJの皆さんありがとうございます。さっき言及した Memory Cue というものがあるらしいというのはもちろん YouTube で見つけました。</p>
<p>あと、あんな最新の CDJ 機材を触ったことはなかったので本番パニクらないように何がどこにあるのかをしっかり予習しました。余談だが当日に Beat FX の場所がわからなくなって当日も YouTube に助けられていたのでまじ YouTube のある時代に生まれてよかったです。</p>
<h2 id="当日出番まで">当日~出番まで</h2>
<p>自分の出番が始まるまではめっちゃ緊張して他の人のプレイをあまり楽しめなかったのが辛いポイントでしたね。出番が 12:30 だったが 11:00 ぐらいに緊張しすぎて疲れて体調が悪くなってました。12:00 にビール一杯飲んだり緊張していることを他の DJ に伝えたりして緊張と付き合っていた気がします。</p>
<h2 id="プレイ中">プレイ中</h2>
<p><a href="https://x.com/barometrica">@barometrica</a> san が「緊張するのは最初の曲の再生ボタン押すまでですよ」と言ってくれたがマジだった。</p>
<p>自分の好きな曲でみんながすごい楽しそうに踊ってるの、楽しくないわけないよね！</p>
<p><img src="/img/ruby-music-mixin-good-picture.jpeg" alt="まじ楽しかった"></p>
<p>あと、DJが楽しそうにしているのが一番楽しいよなと思っていつもの2倍ぐらい踊った。結果半分ぐらいで酸欠気味になってたし、空調ガンガンだったのに汗だくだった。</p>
<p>とりあえず初心者で技術は無いので好きな曲を全力でかけて全力で楽しんでもらおうという作戦で挑んだがそこは 120% 達成できたんじゃないかなと思うぐらい良かった</p>
<p><a href="https://x.com/sakahukamaki/status/1913254335112458589">これはこたつさんが撮ってくれた全力の様子です</a></p>
<h2 id="プレイ後">プレイ後</h2>
<p><a href="https://x.com/sakahukamaki">炬燵（kotatsu）</a> san に<a href="https://x.com/hachiblog/status/1913265346284572796">コークハイ奢ってもらった</a>。ごちそうさまでした。</p>
<p>みんなに楽しかった、よかった、と言ってもらえてすごく嬉しかったですね。X もめっちゃ見た。</p>
<p>そして緊張はもう無いので全力で残りの音楽を楽しみました。最後の sylph &amp; いかるが の音楽を聴きながらこれで RubyKaigi が、RubyMusicMixin が終わってしまうと一人で震えていましたね……</p>
<h2 id="今">今</h2>
<p>X 徘徊してたら<a href="https://x.com/sakahukamaki">炬燵（kotatsu）</a> san に<a href="https://x.com/sakahukamaki/status/1913600883570647115">フィードバック頂きました</a>。</p>
<p>初心者であることはみんなわかってると思うのでよかった！楽しかった！はみんなすごく言ってくれてそれ自体はすごく嬉しいんだけど、こたつさんはここが未熟やったでというのを言葉を選びつつちゃんと伝えてくれるのでとても、とてもありがたかった。自己評価とも近かったのでこれからもっと頑張ろうと思えたのでがんばります！</p>
<h2 id="当日の選曲">当日の選曲</h2>
<pre><code>恋愛サーキュレーション (Yunomi &quot;Kawaii EDM&quot; Remix)
ハッピーライフ (feat. nicamoq)
Yunomi &amp; nicamoq - インドア系ならトラックメーカー(Jun Kuroda remix)
ロボティックガール (feat. nicamoq)
Catch A Fire (jersey wakaran girl mix)
One by One (feat. KMNZ LIZ)
Chocolate Adventure (feat. ななひら)
I SAY YES(denshino J-core bootleg)
livetune feat. Hatsune Miku - Tell Your World(HiroHiro Bootleg)
</code></pre>
<h2 id="これから">これから</h2>
<p>もっとDJやろうと思ったし他の人のDJ聴きたいと思いました！</p>
<p>来年も絶対 RubyMusicMixin 応募するぞ！</p>
<p>聴いてくれた皆さんほんとうにありがとうございました！拙いDJでしたが楽しんでいただけてよかったです！また函館でお会いしましょう！</p>
<p><img src="/img/ruby-music-mixin-2025-hachi.jpeg" alt="同僚が撮ってくれたかっこいい写真"></p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[ランニングを10分だけしたらコンビニパンを食べたくなくなった]]></title>
            <link>https://hayaokimura.com/blogs/startled-after-running</link>
            <guid>https://hayaokimura.com/blogs/startled-after-running</guid>
            <pubDate>Thu, 04 Jan 2024 00:10:00 GMT</pubDate>
            <description><![CDATA[
あけましておめでとうございます。本年もよろしくお願いします。

今年はフルマラソンを完走するのを個人的な目標の一つにしています。がんばります。
そこで今日から軽いランニングを始めました。
自分はコンビニのパンとコーヒーを朝食にすることが多いのですが、そのコンビニへ向かう道すじを遠回りして軽くランニングしてから向かいました。

最初は冬の朝ということもあり、手が冷たくて最初は辛かったのですが、10分ぐらい走ると手が温まっていい感じでした。
ただ、久しぶりに走ったこともあって土踏まずが痛くなったのでその後は歩いてました。

朝食を食べる前に走ったということもあり、とても空腹を感じつつコンビニに向かったわけですが、コンビニのいつものパンコーナーを見ても全く食欲が湧きませんでした。

走って思考がクリアになったことで本当に食べたいものの区別がついたのか、走ることで胃が求めるものが変わったのかわからないですが自分としては衝撃をうけました。

あれはなんだったんだろう……

ランニングはもう少し続けてみようと思います。




]]></description>
            <content:encoded><![CDATA[<p>あけましておめでとうございます。本年もよろしくお願いします。</p>
<p>今年はフルマラソンを完走するのを個人的な目標の一つにしています。がんばります。
そこで今日から軽いランニングを始めました。
自分はコンビニのパンとコーヒーを朝食にすることが多いのですが、そのコンビニへ向かう道すじを遠回りして軽くランニングしてから向かいました。</p>
<p>最初は冬の朝ということもあり、手が冷たくて最初は辛かったのですが、10分ぐらい走ると手が温まっていい感じでした。
ただ、久しぶりに走ったこともあって土踏まずが痛くなったのでその後は歩いてました。</p>
<p>朝食を食べる前に走ったということもあり、とても空腹を感じつつコンビニに向かったわけですが、コンビニのいつものパンコーナーを見ても全く食欲が湧きませんでした。</p>
<p>走って思考がクリアになったことで本当に食べたいものの区別がついたのか、走ることで胃が求めるものが変わったのかわからないですが自分としては衝撃をうけました。</p>
<p>あれはなんだったんだろう……</p>
<p>ランニングはもう少し続けてみようと思います。</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[YAPC::Hiroshima2024 に参加したら自分のお好みが見えた]]></title>
            <link>https://hayaokimura.com/blogs/yapc-2024</link>
            <guid>https://hayaokimura.com/blogs/yapc-2024</guid>
            <pubDate>Mon, 12 Feb 2024 14:21:22 GMT</pubDate>
            <description><![CDATA[
[YAPC::Hiroshima2024](https://yapcjapan.org/2024hiroshima/) の参加レポート！

## 参加よもやま
> YAPCはYet Another Perl Conferenceの略で、Perlを軸としたITに関わる全ての人のためのカンファレンスです。
>
> by YAPC::Hiroshima2024

[https://yapcjapan.org/2024hiroshima/:embed]

YAPC は去年の京都に引き続き２回目の参加です。京都に参加してとてもよかったので今年も参加しました。
去年の自分はどうやらブログ書いてないみたいですね。反省。

こういうときに去年のブログを書いていれば振り返って去年との感じ方の差分を残していけるからもっとブログ書くべきだと思いますね。
（毎度ブログもっと書くべきって言ってる気がする）

今年の YAPC のテーマは「what you like」ということでそれぞれのお好みを語るというテーマでした。
じぶんは好きなものを表明するのをためらっていた時期もあり、お好みを自覚するのがあまり得意ではないのでこのテーマはちょっとドキッとしました。

今回参加して自分のお好みがはっきりしたと共に、もっと尖らせていこうと思ったので筆をとりました。

## セッション感想
今回の YAPC ではプログラムの話よりもコミュニティや発信など、ソフトスキル的なセッションが多かったように感じました。
というよりも自分がそういうセッションが好きで重点的に聞いていたというだけの説はあります。

前回はメインの会場と他の会場の階が違っていて結構階段移動が大変だったイメージなんですが、今回はすべての会場が同じ階にあったので楽ちんでした。
廊下やホワイエが広く、椅子も多かったのでそこで作業してる人や会話を楽しんでいる人が多くいて印象的でした。

いくつか自分がとても印象的だったセッションについて書きます

### [コミュニティと共に生きる - キャリアの螺旋](https://speakerdeck.com/soudai/live-with-community)
[https://speakerdeck.com/soudai/live-with-community:embed]

[そーだい](https://twitter.com/soudai1025) さんがコミュニティでの活動を通してキャリアを前に進めてきたお話でした。
最初から最後までそーだいさん自身の人生が変わった言葉、出来事がちりばめられていて、[計画的偶発性理論](https://www.rgf-professional.jp/insights/2020-06-what-is-planned-happenstance-theory-how-to-create-a-career-contingency-career-plan)によるキャリアの成長を完全に体現していることをありありと感じられたセッションでした。

自分はまだまだこれからですが、いろいろな人と話したりブログ書いたりする理由の一つにこれもあるよなと思って大きく頷いて聞いていました。

思い返すと自分の人生の転機も結局偶然の出来事が多かったように思っていて、今後もよりいろいろな人と会って、本を読んでコード書いてやっていこうと決意を新たにさせてくれるセッションでした。

余談ですが、自分の所属するフリー株式会社が去年開催した「[freee 技術の日](https://www.freee.co.jp/event/freee-tech-day-2023/)」で、自分も[仕事がしやすくなる社内発信のすすめ](https://speakerdeck.com/hayaokimura/work-happily-by-tweeting)という題で登壇していました。
このときの登壇を YAPC::Hiroshima の SmartHR のスポンサーブースの方が聴いていて、覚えてくださっていました。そーだいさんの登壇と相まってとても嬉しかったです。今後も良いコンテンツを作りたいと思いました。

### [Blogを作り、育み、慈しむ ~ Blog Hacks 2024](https://junkyard.song.mu/slides/yapc-hiroshima-2024)
[https://junkyard.song.mu/slides/yapc-hiroshima-2024:embed]

[soungmu](https://twitter.com/songmu)さんの、Blog を中心としたエンジニアの発信についての登壇でした。
特に個人サイト、個人ブログの良さについて多く語られていました。

このブログも個人サイトの一つです。そのため、 songmu さんがコントロールしたいものの話はすごく共感できました。
また、「個人サイトは家、SNSは社交場」という話はすごく印象的でした。
個人的に個人サイトと他の文章プラットフォームの使い分けに悩んでいたのですごくしっくりきました。

今後はもっとこのブログを育てていきたい、そう思わせてくれる登壇でした。YAPC::Hiroshima で [yusukebe](https://twitter.com/yusukebe) さんが発表していた Hono v4 に書き換えたりなど、やりたいことはいくつかあるので盆栽精神でやっていきたいですね。

### 杜甫々さんキーノート
とほほのWWW入門の作者である杜甫々さんのキーノートで、杜甫々さんのこれまでのキャリアやとほほのWWW入門を書く経緯、どんなものをこれまで書いてきたのかのお話でした。

登壇から伝わってくる圧巻の執筆、発信量はもちろんですが、興味の幅と深さやなど、とても印象深いセッションでした。
特にとほほのWWW入門で意識していることの話はとても勉強になりました。
1ページで書くことで検索しやすくしたり、必要最低限のサンプルコードと短い説明を交互に書いたりすることを意識しているとおっしゃっていて、
自分が今後技術的な記事を書くときの参考にしたいと思いました。

杜甫々さんはとほほのWWW入門をいつも参照してプログラムを書いたりしていると言っていて、自分で作ったものを自分で使うことによる効用をすごく感じました。
自分は自分用に Obsidian というノートアプリを使ってメモを取っていて、少し前までノートが死蔵されてしまうことが課題だったのですが、Random note で頻繁に見返すようにしてから死蔵を防げており、自分で見返すことで書く行動が促進されるのを身を持って感じています。
とほほのWWW入門でも同様の事が起きているのかもしれないと勝手に共感していました。

最後の質問コーナーで「なぜそんなに続けられる・書けるのですか？」という質問に対して杜甫々さんが「単純に好きだからですね」と淡々と答えていたのがかっこよすぎる & 今回の YAPC のテーマである「What you like」とどんぴしゃすぎて勝手に感動で震えてました。

最高のセッションでした。

### YAPC 以外
初の広島だったので色々行きました！

宮島、呉、尾道と大満足でした！

![厳島神社の大鳥居](/img/miyajima.jpg)

![呉のてつのくじら館](/img/kure.jpg)

## まとめ
今回の YAPC は自分のやっていることをもっとやっていこうと再認識させてくれたそんなカンファレンスでした！次回の情報はまだですが、次回も参加したいと思います！最後になりましたが YAPC の運営の皆様、登壇者の皆様、スポンサーの皆様、良いカンファレンスをつくっていただきありがとうございました！
]]></description>
            <content:encoded><![CDATA[<p><a href="https://yapcjapan.org/2024hiroshima/">YAPC::Hiroshima2024</a> の参加レポート！</p>
<h2 id="参加よもやま">参加よもやま</h2>
<blockquote>
<p>YAPCはYet Another Perl Conferenceの略で、Perlを軸としたITに関わる全ての人のためのカンファレンスです。</p>
<p>by YAPC::Hiroshima2024</p>
</blockquote>
<p>[<a href="https://yapcjapan.org/2024hiroshima/:embed%5D">https://yapcjapan.org/2024hiroshima/:embed]</a></p>
<p>YAPC は去年の京都に引き続き２回目の参加です。京都に参加してとてもよかったので今年も参加しました。
去年の自分はどうやらブログ書いてないみたいですね。反省。</p>
<p>こういうときに去年のブログを書いていれば振り返って去年との感じ方の差分を残していけるからもっとブログ書くべきだと思いますね。
（毎度ブログもっと書くべきって言ってる気がする）</p>
<p>今年の YAPC のテーマは「what you like」ということでそれぞれのお好みを語るというテーマでした。
じぶんは好きなものを表明するのをためらっていた時期もあり、お好みを自覚するのがあまり得意ではないのでこのテーマはちょっとドキッとしました。</p>
<p>今回参加して自分のお好みがはっきりしたと共に、もっと尖らせていこうと思ったので筆をとりました。</p>
<h2 id="セッション感想">セッション感想</h2>
<p>今回の YAPC ではプログラムの話よりもコミュニティや発信など、ソフトスキル的なセッションが多かったように感じました。
というよりも自分がそういうセッションが好きで重点的に聞いていたというだけの説はあります。</p>
<p>前回はメインの会場と他の会場の階が違っていて結構階段移動が大変だったイメージなんですが、今回はすべての会場が同じ階にあったので楽ちんでした。
廊下やホワイエが広く、椅子も多かったのでそこで作業してる人や会話を楽しんでいる人が多くいて印象的でした。</p>
<p>いくつか自分がとても印象的だったセッションについて書きます</p>
<h3 id="コミュニティと共に生きる---キャリアの螺旋"><a href="https://speakerdeck.com/soudai/live-with-community">コミュニティと共に生きる - キャリアの螺旋</a></h3>
<p>[<a href="https://speakerdeck.com/soudai/live-with-community:embed%5D">https://speakerdeck.com/soudai/live-with-community:embed]</a></p>
<p><a href="https://twitter.com/soudai1025">そーだい</a> さんがコミュニティでの活動を通してキャリアを前に進めてきたお話でした。
最初から最後までそーだいさん自身の人生が変わった言葉、出来事がちりばめられていて、<a href="https://www.rgf-professional.jp/insights/2020-06-what-is-planned-happenstance-theory-how-to-create-a-career-contingency-career-plan">計画的偶発性理論</a>によるキャリアの成長を完全に体現していることをありありと感じられたセッションでした。</p>
<p>自分はまだまだこれからですが、いろいろな人と話したりブログ書いたりする理由の一つにこれもあるよなと思って大きく頷いて聞いていました。</p>
<p>思い返すと自分の人生の転機も結局偶然の出来事が多かったように思っていて、今後もよりいろいろな人と会って、本を読んでコード書いてやっていこうと決意を新たにさせてくれるセッションでした。</p>
<p>余談ですが、自分の所属するフリー株式会社が去年開催した「<a href="https://www.freee.co.jp/event/freee-tech-day-2023/">freee 技術の日</a>」で、自分も<a href="https://speakerdeck.com/hayaokimura/work-happily-by-tweeting">仕事がしやすくなる社内発信のすすめ</a>という題で登壇していました。
このときの登壇を YAPC::Hiroshima の SmartHR のスポンサーブースの方が聴いていて、覚えてくださっていました。そーだいさんの登壇と相まってとても嬉しかったです。今後も良いコンテンツを作りたいと思いました。</p>
<h3 id="blogを作り、育み、慈しむ--blog-hacks-2024"><a href="https://junkyard.song.mu/slides/yapc-hiroshima-2024">Blogを作り、育み、慈しむ ~ Blog Hacks 2024</a></h3>
<p>[<a href="https://junkyard.song.mu/slides/yapc-hiroshima-2024:embed%5D">https://junkyard.song.mu/slides/yapc-hiroshima-2024:embed]</a></p>
<p><a href="https://twitter.com/songmu">soungmu</a>さんの、Blog を中心としたエンジニアの発信についての登壇でした。
特に個人サイト、個人ブログの良さについて多く語られていました。</p>
<p>このブログも個人サイトの一つです。そのため、 songmu さんがコントロールしたいものの話はすごく共感できました。
また、「個人サイトは家、SNSは社交場」という話はすごく印象的でした。
個人的に個人サイトと他の文章プラットフォームの使い分けに悩んでいたのですごくしっくりきました。</p>
<p>今後はもっとこのブログを育てていきたい、そう思わせてくれる登壇でした。YAPC::Hiroshima で <a href="https://twitter.com/yusukebe">yusukebe</a> さんが発表していた Hono v4 に書き換えたりなど、やりたいことはいくつかあるので盆栽精神でやっていきたいですね。</p>
<h3 id="杜甫々さんキーノート">杜甫々さんキーノート</h3>
<p>とほほのWWW入門の作者である杜甫々さんのキーノートで、杜甫々さんのこれまでのキャリアやとほほのWWW入門を書く経緯、どんなものをこれまで書いてきたのかのお話でした。</p>
<p>登壇から伝わってくる圧巻の執筆、発信量はもちろんですが、興味の幅と深さやなど、とても印象深いセッションでした。
特にとほほのWWW入門で意識していることの話はとても勉強になりました。
1ページで書くことで検索しやすくしたり、必要最低限のサンプルコードと短い説明を交互に書いたりすることを意識しているとおっしゃっていて、
自分が今後技術的な記事を書くときの参考にしたいと思いました。</p>
<p>杜甫々さんはとほほのWWW入門をいつも参照してプログラムを書いたりしていると言っていて、自分で作ったものを自分で使うことによる効用をすごく感じました。
自分は自分用に Obsidian というノートアプリを使ってメモを取っていて、少し前までノートが死蔵されてしまうことが課題だったのですが、Random note で頻繁に見返すようにしてから死蔵を防げており、自分で見返すことで書く行動が促進されるのを身を持って感じています。
とほほのWWW入門でも同様の事が起きているのかもしれないと勝手に共感していました。</p>
<p>最後の質問コーナーで「なぜそんなに続けられる・書けるのですか？」という質問に対して杜甫々さんが「単純に好きだからですね」と淡々と答えていたのがかっこよすぎる &amp; 今回の YAPC のテーマである「What you like」とどんぴしゃすぎて勝手に感動で震えてました。</p>
<p>最高のセッションでした。</p>
<h3 id="yapc-以外">YAPC 以外</h3>
<p>初の広島だったので色々行きました！</p>
<p>宮島、呉、尾道と大満足でした！</p>
<p><img src="/img/miyajima.jpg" alt="厳島神社の大鳥居"></p>
<p><img src="/img/kure.jpg" alt="呉のてつのくじら館"></p>
<h2 id="まとめ">まとめ</h2>
<p>今回の YAPC は自分のやっていることをもっとやっていこうと再認識させてくれたそんなカンファレンスでした！次回の情報はまだですが、次回も参加したいと思います！最後になりましたが YAPC の運営の皆様、登壇者の皆様、スポンサーの皆様、良いカンファレンスをつくっていただきありがとうございました！</p>
]]></content:encoded>
        </item>
    </channel>
</rss>