<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>やわらかテック</title>
    <link>https://www.okb-shelf.work/</link>
    <description>Recent content on やわらかテック</description>
    <generator>Hugo</generator>
    <language>ja</language>
    <lastBuildDate>Tue, 05 May 2026 11:07:26 +0900</lastBuildDate>
    <atom:link href="https://www.okb-shelf.work/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Secure by Designを読んだ</title>
      <link>https://www.okb-shelf.work/entry/secure_by_design/</link>
      <pubDate>Tue, 05 May 2026 11:07:26 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/secure_by_design/</guid>
      <description>&lt;p&gt;社内で設計に明るい方がオススメされていたので読んでみました。&lt;/p&gt;
&lt;p&gt;この生成 AI 時代では勝手にセキュアなデータがコミットされてしまっていたり、インジェクション攻撃が可能なコードが知らぬ間に実装されてしまっていたりと、よりセキュリティに対して意識を強くもたねばなりません。
かなり分厚い書籍ですが、翻訳書に多い海外のジョークや癖のある言い回しもほとんどなく、簡潔な表現がされており読みやすかったです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>4月の振り返り</title>
      <link>https://www.okb-shelf.work/entry/202604_retro/</link>
      <pubDate>Mon, 04 May 2026 11:01:04 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/202604_retro/</guid>
      <description>&lt;p&gt;もう暑い&amp;hellip;&lt;/p&gt;
&lt;p&gt;春はどこへ行ってしまったのかと思いきや、急に冷える日もあり服装に迷う日々です。
ありがたいことに体調を崩すこともなく元気に過ごしています。ギリ汗をかかない心地よい気温なので散歩が捗るのですが、少し前に話題になったセブンイレブンの紅茶マシーンが家の近所？（徒歩30分）にも設置されて、定番の散歩コースになりつつあります。数百円でこのクオリティーはすごい。&lt;/p&gt;</description>
    </item>
    <item>
      <title>3月の振り返り</title>
      <link>https://www.okb-shelf.work/entry/202603_retro/</link>
      <pubDate>Sat, 04 Apr 2026 17:19:25 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/202603_retro/</guid>
      <description>&lt;p&gt;ようやく過ごしやすい季節になってきましたね。&lt;/p&gt;
&lt;p&gt;やや寒さを感じるものの、何枚も着込んで外に出ていたのが嘘のように暖かくなりました。すっかりと外の様子も変わり、早咲きの桜は散り、枝垂れ桜が花を咲かせていました。美しい&amp;hellip;&lt;/p&gt;</description>
    </item>
    <item>
      <title>UPDATEクエリの実行時間をどう予測するか</title>
      <link>https://www.okb-shelf.work/entry/estimate_update_query/</link>
      <pubDate>Mon, 23 Mar 2026 19:17:39 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/estimate_update_query/</guid>
      <description>&lt;h2 id=&#34;実行時間を知りたい&#34;&gt;実行時間を知りたい&lt;/h2&gt;
&lt;p&gt;サービスの運用中には、テーブル構造を変更するマイグレーションがよく発生します。&lt;/p&gt;
&lt;p&gt;頻出なのは新規カラムを追加するケースでしょうか。テーブルに新たなカラムを nullable で追加して、DDL の完了後に手動で&lt;code&gt;UPDATE&lt;/code&gt;を実行して null を埋めるような対応です。
その際に、対象となるレコードが 100万件を超えるような場合、どれぐらいクエリの実行時間が必要なのかを事前に把握して、ユーザー影響が少ないように実行タイミングの判断をする必要があります。&lt;/p&gt;</description>
    </item>
    <item>
      <title>2月の振り返り</title>
      <link>https://www.okb-shelf.work/entry/202602_retro/</link>
      <pubDate>Wed, 04 Mar 2026 23:03:00 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/202602_retro/</guid>
      <description>&lt;p&gt;少し暖かさを感じるようになりましたね。&lt;/p&gt;
&lt;p&gt;最近は目的地に向かう時は徒歩で。帰りはシェアサイクルを使って自転車で帰ってくるという遊びをしています。だいたい 5km 程度であれば、徒歩移動の対象としています。何よりも交通費が節約できるのと、歩くのが気持ち良いです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>レガシーコード改善ガイドを読んだ</title>
      <link>https://www.okb-shelf.work/entry/working_effectively_with_legacy_code/</link>
      <pubDate>Mon, 23 Feb 2026 09:05:42 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/working_effectively_with_legacy_code/</guid>
      <description>&lt;p&gt;最近、書評をあまり書いていなかったので久しぶりに書いてみようと思います。&lt;/p&gt;
&lt;p&gt;というのも LLM が発達した今日、個人が書評を書くことにあまり提供できる価値を感じていなかったのですが、将来の自分のために知識をまとめておきたいと思います。&lt;/p&gt;</description>
    </item>
    <item>
      <title>1月の振り返りとAI環境整備</title>
      <link>https://www.okb-shelf.work/entry/2026_01_review/</link>
      <pubDate>Mon, 09 Feb 2026 08:56:23 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/2026_01_review/</guid>
      <description>&lt;p&gt;早いもので1月があっという間に終わってしまいました。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://okb-shelf.hatenablog.com/entry/2026_goal&#34;&gt;2026年の目標 - やわらかテック&lt;/a&gt; を計画していたので、振り返りつつ、開発環境の話題にも触れておきたいと思います。&lt;/p&gt;</description>
    </item>
    <item>
      <title>2026年の目標</title>
      <link>https://www.okb-shelf.work/entry/2026_goal/</link>
      <pubDate>Sun, 11 Jan 2026 18:30:54 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/2026_goal/</guid>
      <description>&lt;p&gt;新年、あけましておめでとうございます🎍&lt;/p&gt;
&lt;p&gt;毎年恒例では全くないのですが、2026 年の目標について記しておこうと思います。
というのも、歳を取るにつれて何となく目の前の仕事や好きなことに取り組んでいるだけで良いんだっけ？という思いが強くなってきました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>昔からの道具を使う</title>
      <link>https://www.okb-shelf.work/entry/since_long_ago_tools/</link>
      <pubDate>Thu, 18 Dec 2025 08:28:26 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/since_long_ago_tools/</guid>
      <description>&lt;p&gt;この記事は Henry アドベントカレンダー 2025 18日目の投稿です。&lt;/p&gt;
&lt;p&gt;昨日の記事は &lt;a href=&#34;https://x.com/aki_hiro0038&#34;&gt;damさん&lt;/a&gt; の &lt;a href=&#34;https://note.com/akihiro0038/n/n611707d2145c&#34;&gt;AIが考えた思考を自分の成果物にするプロセスについて&lt;/a&gt; でした。本日は少し遊び心も出しながら、私 okbee が普段の生活で使っている昔からの道具たちについて紹介したいと思います。&lt;/p&gt;</description>
    </item>
    <item>
      <title>イベントソーシングではテーブルを正規化しない理由</title>
      <link>https://www.okb-shelf.work/entry/event_sourcing_no__normalize/</link>
      <pubDate>Mon, 01 Sep 2025 08:34:39 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/event_sourcing_no__normalize/</guid>
      <description>&lt;p&gt;最近、イベントソーシングについて調べていて RDB でテーブルの正規化を行なっている実装例があまりないことに驚きました。そして、正規化をしない理由について、言及している情報があまりなかった。&lt;/p&gt;</description>
    </item>
    <item>
      <title>GraphQLのQueryはどの単位で定義すれば良いのか</title>
      <link>https://www.okb-shelf.work/entry/2025/08/12/GraphQL%E3%81%AEQuery%E3%81%AF%E3%81%A9%E3%81%AE%E5%8D%98%E4%BD%8D%E3%81%A7%E5%AE%9A%E7%BE%A9%E3%81%99%E3%82%8C%E3%81%B0%E8%89%AF%E3%81%84%E3%81%AE%E3%81%8B/</link>
      <pubDate>Tue, 12 Aug 2025 08:51:23 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/2025/08/12/GraphQL%E3%81%AEQuery%E3%81%AF%E3%81%A9%E3%81%AE%E5%8D%98%E4%BD%8D%E3%81%A7%E5%AE%9A%E7%BE%A9%E3%81%99%E3%82%8C%E3%81%B0%E8%89%AF%E3%81%84%E3%81%AE%E3%81%8B/</guid>
      <description>&lt;p&gt;長らく REST API を活用してきたため、実務で GraphQL の経験がありませんでした。
特に困ったのが &lt;strong&gt;Query をどの単位で定義すれば良いのか？&lt;/strong&gt;という点です。簡単そうな問題に感じますが、執筆前の自分では言語化するのが難しい状態でした。&lt;/p&gt;</description>
    </item>
    <item>
      <title>開発環境2025 summer</title>
      <link>https://www.okb-shelf.work/entry/2025/07/09/%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%832025_summer_/</link>
      <pubDate>Wed, 09 Jul 2025 23:38:48 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/2025/07/09/%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%832025_summer_/</guid>
      <description>&lt;p&gt;最近、色々とツール周りを更新したので、自分の開発環境を以下の記事に習って記録しておきます。
生産性への投資は本当に大事。後回しになりがちなので、しっかりと改善していきたい所 &amp;hellip;&lt;/p&gt;</description>
    </item>
    <item>
      <title>作業速度を上げ続ける</title>
      <link>https://www.okb-shelf.work/entry/2024/12/04/%E4%BD%9C%E6%A5%AD%E9%80%9F%E5%BA%A6%E3%82%92%E4%B8%8A%E3%81%92%E7%B6%9A%E3%81%91%E3%82%8B/</link>
      <pubDate>Wed, 04 Dec 2024 08:53:18 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/2024/12/04/%E4%BD%9C%E6%A5%AD%E9%80%9F%E5%BA%A6%E3%82%92%E4%B8%8A%E3%81%92%E7%B6%9A%E3%81%91%E3%82%8B/</guid>
      <description>&lt;p&gt;この記事は&lt;a href=&#34;https://qiita.com/advent-calendar/2024/henry&#34;&gt;株式会社ヘンリー - Qiita Advent Calendar 2024&lt;/a&gt;の4日目の記事です。&lt;/p&gt;
&lt;p&gt;先日は&lt;a href=&#34;http://blog.hatena.ne.jp/take7010/&#34;&gt;id:take7010&lt;/a&gt;さんの「&lt;a href=&#34;https://note.com/n_takehata/n/n1e68c27cc41b?sub_rt=share_pw&#34;&gt;採用の時に見るべきポイント 面接偏&lt;/a&gt;」でした。&lt;/p&gt;
&lt;p&gt;今回は「作業速度を上げ続ける」をテーマに書きます。&lt;/p&gt;
&lt;p&gt;ちょっとした作業を早く完了できるかは、１つ１つは小さなことですが、日々の積み重ねによって結果的に膨大な時間の差が生まれます。
良いエンジニアは、&lt;strong&gt;そういった時間を生み出し、もっと重要なことに時間を使っています。 &lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>明日からDIできちゃうKoin入門</title>
      <link>https://www.okb-shelf.work/entry/koin_entry/</link>
      <pubDate>Mon, 07 Oct 2024 08:47:04 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/koin_entry/</guid>
      <description>&lt;p&gt;&lt;code&gt;RubyOnRails&lt;/code&gt;からやってきた自分にとってKotlinやJavaで、しばしば行われるDI(Dependency Injection: 依存性の注入)は一般的なものではなく、名前は聞いたことがあるけど使ったことはあまりないというものでした。現職では&lt;code&gt;Koin&lt;/code&gt;というKotlin向けのDI用のライブラリを使っているのですが、初めはどこでレポジトリの実装クラスのインスタンスを作ってるんだ&amp;hellip;と混乱したものです。今でも&lt;code&gt;Koin&lt;/code&gt;の使い方・仕組みがよく分かっていなかったので、実際にコードを動かしながら理解を進めてみました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>技術の話題が怖くてエモい話に逃げていた</title>
      <link>https://www.okb-shelf.work/entry/not_emo/</link>
      <pubDate>Tue, 27 Aug 2024 09:05:04 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/not_emo/</guid>
      <description>&lt;p&gt;Xでこのツイートを見た瞬間に、雷に撃たれたような衝撃を受けました。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;「個人的には」「技術力がないからエモに走るのは止めたい」とは思っていて、求められたとき以外は技術の話をするように心がけています。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Coroutines入門とThreadLocalとの併用に気を付けるべし</title>
      <link>https://www.okb-shelf.work/entry/coroutines_or_else/</link>
      <pubDate>Mon, 19 Aug 2024 21:24:34 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/coroutines_or_else/</guid>
      <description>&lt;p&gt;早いものでKotlinを仕事で書き始めて3ヶ月が経ちました。&lt;/p&gt;
&lt;p&gt;ありがたい？ことにKotlinの非同期処理の扱いについて全く知らないな&amp;hellip;と反省した機会に恵まれたので、色々と調べてみた結果、Kotlinで非同期処理を行う場合には大きく2つの選択肢があることが分かりました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【書評】脳に収まるコードの書き方とは結局、何なのか</title>
      <link>https://www.okb-shelf.work/entry/code_that_fits_in_your_head/</link>
      <pubDate>Tue, 23 Jul 2024 08:50:40 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/code_that_fits_in_your_head/</guid>
      <description>&lt;p&gt;オライリーから発売された「脳に収まるコードの書き方」という書籍を読了しました。&lt;/p&gt;
&lt;p&gt;発売されるまで全く情報をキャッチできていなかったのですが、自分の近辺でこの書籍を購入している方がちらほらといて、特に内容・目次を精査することもなくノリで買ってしまいました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>明日から使えるgRPC入門</title>
      <link>https://www.okb-shelf.work/entry/2024/05/08/%E6%98%8E%E6%97%A5%E3%81%8B%E3%82%89%E4%BD%BF%E3%81%88%E3%82%8BgRPC%E5%85%A5%E9%96%80/</link>
      <pubDate>Wed, 08 May 2024 22:32:50 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/2024/05/08/%E6%98%8E%E6%97%A5%E3%81%8B%E3%82%89%E4%BD%BF%E3%81%88%E3%82%8BgRPC%E5%85%A5%E9%96%80/</guid>
      <description>&lt;p&gt;業務でgRPCを使う機会があるのですが、個人で軽く触ったことがある程度で正しく理解できているか不安だったので、改めてインプットし直しました。この記事はさくらインターネットさんが公開されている記事から特に重要だと感じた箇所を抽出して、自身の備忘録として短くまとめたものです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【書評】データ指向アプリケーションデザインを読了して見える世界</title>
      <link>https://www.okb-shelf.work/entry/data_application_design/</link>
      <pubDate>Tue, 26 Mar 2024 10:08:31 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/data_application_design/</guid>
      <description>&lt;p&gt;1ヶ月ほど読み進めていた「データ指向アプリケーションデザイン」を読了しました。&lt;/p&gt;
&lt;p&gt;オライリーから出版されている本の中でも、かなり分厚い部類の書籍だったのと、章ごとの情報量が凄かったので結構、時間がかかってしまいました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SELECTの結果から複数のデータを複数INSERTする</title>
      <link>https://www.okb-shelf.work/entry/insert_select_many/</link>
      <pubDate>Thu, 15 Feb 2024 09:00:07 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/insert_select_many/</guid>
      <description>&lt;p&gt;SQLで初期データを作成したいというのは、よくあるケースかなと思います。&lt;/p&gt;
&lt;p&gt;例えば全ての企業(companies)に対して初期ユーザー(users)を1件登録する必要があるとします。企業とユーザーは1対多の関係にあり、以下のように&lt;code&gt;INSERT&lt;/code&gt;と&lt;code&gt;SELECT&lt;/code&gt;を組み合わせることで簡単に全ての企業に対して初期ユーザーの追加が完了します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>AWS クラウドプラクティショナー(CLF-C02)に合格しました</title>
      <link>https://www.okb-shelf.work/entry/pass_aws_clf/</link>
      <pubDate>Mon, 05 Feb 2024 10:53:48 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/pass_aws_clf/</guid>
      <description>&lt;p&gt;先日、AWS公式が開催しているAWS Certified Cloud Practitioner(CLF-C02)に合格しました。&lt;/p&gt;
&lt;p&gt;学習期間は1週間ほど。市販のテキストを読みつつ、無料で問題を解くことができるサイトを利用させて頂きました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>2023年度のブログ活動の振り返り</title>
      <link>https://www.okb-shelf.work/entry/2023_blog_lookback/</link>
      <pubDate>Sun, 31 Dec 2023 18:28:46 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/2023_blog_lookback/</guid>
      <description>&lt;p&gt;あっという間に今年も残り数時間で終わろうとしていますね。&lt;/p&gt;
&lt;p&gt;今年度もありがとうございました。今年は多くの方に記事を読んで頂けて嬉しい限りです。&lt;/p&gt;
&lt;p&gt;実は報告などはしていなかったのですが、2023年はある目標を立ててブログ(アウトプット)を続けてきました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>2023年に読んで良かった本</title>
      <link>https://www.okb-shelf.work/entry/2023_good_books/</link>
      <pubDate>Thu, 28 Dec 2023 08:59:32 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/2023_good_books/</guid>
      <description>&lt;p&gt;気づいたらクリスマスが終わっていました。本当に早いですね&amp;hellip;。&lt;/p&gt;
&lt;p&gt;前回、公開した「2023年に買って良かったもの」に引き続き、年末恒例の「~年に読んで良かった本」についても紹介していきたいと思います。&lt;/p&gt;</description>
    </item>
    <item>
      <title>今更ながらMATERIALIZED VIEW(マテリアライズドビュー)について学ぶ</title>
      <link>https://www.okb-shelf.work/entry/what_materialized_view/</link>
      <pubDate>Tue, 26 Dec 2023 08:43:59 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/what_materialized_view/</guid>
      <description>&lt;p&gt;アプリケーションにおいて高負荷になりやすい処理の一つにレポート・データ集計があります。&lt;/p&gt;
&lt;p&gt;リアルタイム性が求められる場合もあれば、ある時点までに集計されたデータを見れればOKなど、要件はさまざまですが、一般的にはデータベースに対して複雑なクエリや複数テーブルに対しての結合を行う必要があります。そのためデータ量に依存しやすく、リリース当初は問題なくレポートが見れていたのに、サービスの運用期間が長くなるとレポートが見えなくなったという話をよく聞きます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>2023年に買って良かったもの</title>
      <link>https://www.okb-shelf.work/entry/2023_good_items/</link>
      <pubDate>Fri, 22 Dec 2023 08:47:01 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/2023_good_items/</guid>
      <description>&lt;p&gt;早いもので2023年も終わろうとしています。&lt;/p&gt;
&lt;p&gt;いやー、今年もあっという間でしたね。今年もたくさん記事を書いてきましたが、どうでしたでしょうか。&lt;/p&gt;
&lt;p&gt;読者の皆さんをはじめ、僕の記事を読んでくださる方には頭が上がりません。本当にいつもありがとうございます。年末なので毎年恒例(?)の「〜年に買って良かったもの」の記事を書きたいと思います。&lt;/p&gt;</description>
    </item>
    <item>
      <title>NULL値が含まれるカラムにインデックスは有効なのか</title>
      <link>https://www.okb-shelf.work/entry/null_with_index/</link>
      <pubDate>Wed, 20 Dec 2023 08:58:08 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/null_with_index/</guid>
      <description>&lt;p&gt;データベースで&lt;code&gt;0対N&lt;/code&gt;のモデルを表現する際に、よく外部キー制約とNULL許容の制約を定義することがあります。&lt;/p&gt;
&lt;p&gt;値は特定のテーブルのIDもしくは&lt;code&gt;NULL&lt;/code&gt;のどちらかを持つことになります。これを出版社(publishers)と書籍(books)のモデルをテーブルに落とし込んでみると以下のようになります。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ruby3.4で追加されるブロックパラメーター&#34;it&#34;について</title>
      <link>https://www.okb-shelf.work/entry/ruby34_about_it/</link>
      <pubDate>Mon, 18 Dec 2023 11:17:35 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/ruby34_about_it/</guid>
      <description>&lt;p&gt;先週、届いたRuby Weeklyに面白そうなトピックが紹介されていました。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Ruby 3.4 Will Have &amp;lsquo;it&amp;rsquo; &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;— There’s never been any doubt: Ruby has it. But now as well as the ‘it’ factor,&lt;/p&gt;
&lt;p&gt;it really will have it. Confused? it is a nicer looking shortcut to the first parameter in a block (a la _1) – e.g. arr.each { puts it }.&lt;/p&gt;</description>
    </item>
    <item>
      <title>データベースにおけるJSON型のカラムの使い所</title>
      <link>https://www.okb-shelf.work/entry/db_json_column/</link>
      <pubDate>Thu, 14 Dec 2023 10:57:59 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/db_json_column/</guid>
      <description>&lt;p&gt;最近、データベースのテーブル設計を担当したり、既存のテーブル設計を見ることが多いです。&lt;/p&gt;
&lt;p&gt;テーブルの設計書を見てみると&lt;code&gt;JSON&lt;/code&gt;型が指定されているカラムが目につくことがあります。既存のテーブルでも&lt;code&gt;JSON&lt;/code&gt;型が使われている箇所がありました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>HonoのNode.jsランタイムにマージされた神PRを見てみる</title>
      <link>https://www.okb-shelf.work/entry/hono_god_pr/</link>
      <pubDate>Mon, 11 Dec 2023 09:08:25 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/hono_god_pr/</guid>
      <description>&lt;p&gt;先日、Twitterにて素晴らしいツイートを見かけました。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;うおおお。&lt;a href=&#34;https://twitter.com/usualoma?ref_src=twsrc%5Etfw&#34;&gt;@usualoma&lt;/a&gt; さんの神PRをマージしたぞ。&lt;/p&gt;
&lt;p&gt;これでHonoがNode.js上で3倍近く速くなった！これはFastifyよりかは少し遅いけど、他のフレームワークと比べると十分速いレベルで、Node.jsの世界においてもHonoは第一選択肢に入ってもいい存在になった。&lt;a href=&#34;https://t.co/mcAmUsQcUZ&#34;&gt;https://t.co/mcAmUsQcUZ&lt;/a&gt; &lt;a href=&#34;https://t.co/pZiKy913rv&#34;&gt;pic.twitter.com/pZiKy913rv&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>エアコンの分解洗浄をして内部の汚さに衝撃を受けた</title>
      <link>https://www.okb-shelf.work/entry/2023/12/07/%E3%82%A8%E3%82%A2%E3%82%B3%E3%83%B3%E3%81%AE%E5%88%86%E8%A7%A3%E6%B4%97%E6%B5%84%E3%82%92%E3%81%97%E3%81%A6%E5%86%85%E9%83%A8%E3%81%AE%E6%B1%9A%E3%81%95%E3%81%AB%E8%A1%9D%E6%92%83%E3%82%92%E5%8F%97/</link>
      <pubDate>Thu, 07 Dec 2023 08:55:20 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/2023/12/07/%E3%82%A8%E3%82%A2%E3%82%B3%E3%83%B3%E3%81%AE%E5%88%86%E8%A7%A3%E6%B4%97%E6%B5%84%E3%82%92%E3%81%97%E3%81%A6%E5%86%85%E9%83%A8%E3%81%AE%E6%B1%9A%E3%81%95%E3%81%AB%E8%A1%9D%E6%92%83%E3%82%92%E5%8F%97/</guid>
      <description>&lt;p&gt;ある日のこと、ポストに「エアコンの分解洗浄しませんか？」という旨のチラシが入っていました。&lt;/p&gt;
&lt;p&gt;今までこういったチラシが入っていたことはなくて、どうもエリアを移動しながら洗浄を行なっているようで、今回、たまたま自分の住んでいる場所が洗浄エリアになったようです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>中間テーブルへのデータ更新(削除・追加)を効率的に行う方法</title>
      <link>https://www.okb-shelf.work/entry/many_to_many_reassign/</link>
      <pubDate>Mon, 04 Dec 2023 09:15:05 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/many_to_many_reassign/</guid>
      <description>&lt;p&gt;以下のようなテーブルがあったとします。&lt;/p&gt;
&lt;p&gt;ユーザーは記事(posts)に対して、自由にタグ(tags)を設定することが可能です。&lt;/p&gt;
&lt;p&gt;記事とタグは多対多の関係にあるため、中間テーブル(post_tags)にて記事へ設定したタグの一覧を管理しています。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cloud Run上でのexpressとhonoのパフォーマンス比較</title>
      <link>https://www.okb-shelf.work/entry/express_vs_hono/</link>
      <pubDate>Thu, 30 Nov 2023 12:04:45 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/express_vs_hono/</guid>
      <description>&lt;p&gt;最近、JavaScript界隈の盛り上がりがすごいですね。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;zig&lt;/code&gt;で作られたJavaScriptのランタイムである&lt;code&gt;bun&lt;/code&gt;は、その便利さ・パフォーマンスの良さから驚くような勢いで広まっています。その一方で新たな軽量WEBフレームワーク&lt;code&gt;hono&lt;/code&gt;も非常に注目されています。&lt;/p&gt;</description>
    </item>
    <item>
      <title>毎朝、味噌汁を飲んでます(一汁一菜でよいという提案...を読んで)</title>
      <link>https://www.okb-shelf.work/entry/everymorning_miso_soup/</link>
      <pubDate>Mon, 27 Nov 2023 09:12:52 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/everymorning_miso_soup/</guid>
      <description>&lt;p&gt;少し前から、ずっと調子が良かった肌が荒れてしまいました。&lt;/p&gt;
&lt;p&gt;元々、敏感肌で弱いアトピー持ちで季節の変わり目や花粉が飛ぶ季節になると、肌が荒れることがあったのですが、今年は今まで以上に肌の調子が悪くなりました。さまざまな要因があるため「これが原因だ&amp;hellip;」という断定は難しいのですが、原因の一つに食事があるのではないかと感じていました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>サブクエリとLEFT JOINのパフォーマンス比較(集計編)</title>
      <link>https://www.okb-shelf.work/entry/subquery_left_join/</link>
      <pubDate>Fri, 24 Nov 2023 11:49:13 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/subquery_left_join/</guid>
      <description>&lt;p&gt;業務で集計処理を書く予定があるのですが、サブクエリと&lt;code&gt;LEFT JOIN&lt;/code&gt;のどちらを使って集計した方が良いのかを判断できませんでした。もちろん、データ量やデータ特性、トレードオフなどを踏まえて判断する必要がありますが、今後、同じような場面に遭遇した際にデファクトスタンダートとなるのはどちらかなのかをハッキリとさせておきたいです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>今更ながらHTTPのRFC(Status Code Definitions)を読んでみる</title>
      <link>https://www.okb-shelf.work/entry/http_rfc/</link>
      <pubDate>Tue, 21 Nov 2023 08:59:33 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/http_rfc/</guid>
      <description>&lt;p&gt;みなさんはRFC読んでますか&amp;hellip;🤔&lt;/p&gt;
&lt;p&gt;自分は普段、ガッツリと読む機会はないのですが、新しいプロトコルを触るような場合に読んだことがある程度です。&lt;/p&gt;</description>
    </item>
    <item>
      <title>sequelizeで全テーブルに対してTRUNCATEを実行する</title>
      <link>https://www.okb-shelf.work/entry/truncate_all_table/</link>
      <pubDate>Fri, 17 Nov 2023 17:02:53 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/truncate_all_table/</guid>
      <description>&lt;p&gt;業務で&lt;code&gt;sequelize&lt;/code&gt;というNode.js製のORMマッパーを触る機会がありました。&lt;/p&gt;
&lt;p&gt;単体テストを実行する度に、データベース(MySQL)のテーブルをクリア(全削除)するために制約を無視して&lt;code&gt;TRUNCATE&lt;/code&gt;を全テーブルに対して実行したいのですが&lt;code&gt;sequelize&lt;/code&gt;では対応するメソッドは提供されていませんでした。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【コピペでOK】はてなブログでソーシャルボタン一覧に「読者になる」を追加する</title>
      <link>https://www.okb-shelf.work/entry/custom_subscribe/</link>
      <pubDate>Mon, 13 Nov 2023 08:56:23 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/custom_subscribe/</guid>
      <description>&lt;p&gt;前回の記事でブログのデザインを一新したとお伝えしました。&lt;/p&gt;
&lt;p&gt;その対応の一部として、はてなブログの「読者になる」ボタンをソーシャルボタンの一覧に表示するという対応を行なっています。
この位置を採用したのは、記事を読み終えた後にアクションを行うボタン群をまとめて表示したかったからです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rubyの新たなテストフレームワークtldrの紹介</title>
      <link>https://www.okb-shelf.work/entry/ruby_gem_tldr/</link>
      <pubDate>Thu, 09 Nov 2023 08:01:30 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/ruby_gem_tldr/</guid>
      <description>&lt;p&gt;またもや&lt;a href=&#34;https://rubyweekly.com/&#34;&gt;Ruby Weekly&lt;/a&gt;で面白そうなgemが紹介されていました。&lt;/p&gt;
&lt;p&gt;Ruby製の新たなテストフレームワークtldrというものです。すでにRspecやMinitestが人気を博している中、なぜ新しいテストフレームワークの実装を始めたのでしょうか。気になったので色々と調べつつ、試してみました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ミノウラ DS-2200が自転車縦置きの夢を叶えてくれた</title>
      <link>https://www.okb-shelf.work/entry/stand_up_bicycle/</link>
      <pubDate>Mon, 06 Nov 2023 08:59:15 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/stand_up_bicycle/</guid>
      <description>&lt;p&gt;移動手段として自転車(シクロクロス)を使っているのですが、防犯の都合で室内で保管しています。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.okb-shelf.work/entry/stand_up_bicycle/20231028113959.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;ただ、部屋に自転車を置いてみると、その存在感には驚かされます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>弊社の技術ブログに「Rubyで簡単なCSVパーサーを作ってみる」を投稿しました</title>
      <link>https://www.okb-shelf.work/entry/post_csv_parser/</link>
      <pubDate>Fri, 03 Nov 2023 09:20:11 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/post_csv_parser/</guid>
      <description>&lt;p&gt;先日、ﾍｲｼｬの技術ブログに記事を投稿しました。&lt;/p&gt;
&lt;p&gt;簡単に内容を紹介すると、RubyでCSVファイルをパースして標準ライブラリ&lt;code&gt;csv&lt;/code&gt;が提供している&lt;code&gt;CSV.read&lt;/code&gt;と同じように最終的に二次元配列に変換する処理系をフルスクラッチで実装するというものです。コードは最終的には50行程度で、簡単なCSVパーサーが完成します。簡単のためオプションには対応していないです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ブログのデザインを一新しました</title>
      <link>https://www.okb-shelf.work/entry/update_design/</link>
      <pubDate>Wed, 01 Nov 2023 19:20:09 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/update_design/</guid>
      <description>&lt;p&gt;すでにお気づきの方もいるかもしれませんが、ブログのデザインを一新しました。&lt;/p&gt;
&lt;p&gt;元々は&lt;code&gt;Epic&lt;/code&gt;というテーマを使っていたのですが、悩みに悩んだ結果、新しくkewpiedesignさんが公開されている&lt;a href=&#34;https://blog.hatena.ne.jp/-/store/theme/8599973812282948714&#34;&gt;gray&lt;/a&gt;にテーマを変更しました。
今回、テーマを変更するにあたってシンプルな 1 カラムのテーマに対象に絞りました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>RubyでGUIが触れるglimmer-dsl-libuiの紹介と内部実装について</title>
      <link>https://www.okb-shelf.work/entry/ruby_with_gui/</link>
      <pubDate>Mon, 30 Oct 2023 09:17:21 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/ruby_with_gui/</guid>
      <description>&lt;p&gt;先日、Subscribeしている&lt;a href=&#34;https://rubyweekly.com/&#34;&gt;Ruby Weekly&lt;/a&gt;からメールが届きました。&lt;/p&gt;
&lt;p&gt;何やらRubyでGUIが触れる「glimmer-dsl-libui」たる、とても面白そうなgemが紹介されていました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>知ってるようで知らない$PATHについて調べてみた</title>
      <link>https://www.okb-shelf.work/entry/what_is_path/</link>
      <pubDate>Fri, 27 Oct 2023 09:03:35 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/what_is_path/</guid>
      <description>&lt;p&gt;プログラミングを始めたばかりの頃、Python3をインストールするべく環境構築に取り組んでいました。&lt;/p&gt;
&lt;p&gt;その際によく見かけたのは&lt;strong&gt;「パス(&lt;code&gt;$PATH&lt;/code&gt;)を通す」&lt;/strong&gt;という言葉です。当時の自分には何のことだか全く分からず「なんでプログラミングのインストールにバスケじゃあるまいし、パスが必要なんだろう&amp;hellip;」と思ったものです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>RubyでgRPCをサクッと試してみた</title>
      <link>https://www.okb-shelf.work/entry/ruby_with_grpc/</link>
      <pubDate>Thu, 26 Oct 2023 18:20:19 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/ruby_with_grpc/</guid>
      <description>&lt;p&gt;最近はマイクロサービスを検討することが多いです。&lt;/p&gt;
&lt;p&gt;マイクロサービスにおいて、よく問題となるのはサービス同士のやりとりをどのように行うかです。オーソドックスな選択肢としてはAPIを作成してHTTP通信で呼び出すという方法が候補に上がりますが、リクエスト数・量が増えてくれば、通信のオーバーヘッド、データ効率といった点で苦しくなってきます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>今更ながら「オブジェクト指向でなぜ作るのか」を読んだ</title>
      <link>https://www.okb-shelf.work/entry/review_why_oop/</link>
      <pubDate>Mon, 23 Oct 2023 09:32:21 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/review_why_oop/</guid>
      <description>&lt;p&gt;今年は昨年度と比べるとあまり技術書を読んでいませんでした。&lt;/p&gt;
&lt;p&gt;というのも今年はとにかくコードを書くこと、実装をすることに重きを置いていたからです。ただ、最近、活字が頭にスッ&amp;hellip;と入ってこないのを自覚しており、読書リハビリしないとダメだなと思っていました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>MarkdownパーサーをWeb Assemblyにして公開しました</title>
      <link>https://www.okb-shelf.work/entry/markdown_wasm/</link>
      <pubDate>Fri, 20 Oct 2023 09:02:17 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/markdown_wasm/</guid>
      <description>&lt;p&gt;先日、以下の記事を公開しました。&lt;/p&gt;
&lt;p&gt;タイトルの通り、Golangを使ってMarkdownをHtmlに変換するパーサーを作ってみたよ〜という記事です。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Markdownをhtmlに変換するパーサーを作った</title>
      <link>https://www.okb-shelf.work/entry/markdown_parser/</link>
      <pubDate>Wed, 18 Oct 2023 09:20:21 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/markdown_parser/</guid>
      <description>&lt;p&gt;最近はパーサーの実装にハマっており、直近だとRubyでJSONパーサー(json形式のテキストをRubyのハッシュに変換)を作りました。&lt;/p&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://www.okb-shelf.work/entry/ruby_json_parser&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-image&#34;&gt;
    &lt;img src=&#34;https://www.okb-shelf.work/entry/ruby_json_parser/20230909112039.jpg&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;
  &lt;/span&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;RubyでJSONパーサーを作ってみた - やわらかテック&lt;/span&gt;
    &lt;span class=&#34;linkcard-desc&#34;&gt;最近、パーサーを実装したい欲が高まっています。 というのもRui Ueyamaさんの「 低レイヤを知りたい人のためのCコンパイラ作成入門 」を読み進めて、再帰下降構文解析をはじめとしてパワフルな実装に非常に魅力を感じているからです。 資料に…&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;www.okb-shelf.work&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;少し間が空いてしまいましたが、今回はMarkdown形式のテキストをhtmlに変換するパーサーを作ってみました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rails7.10にて提案した内容がリリースされた</title>
      <link>https://www.okb-shelf.work/entry/release_my_issue/</link>
      <pubDate>Mon, 16 Oct 2023 09:57:11 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/release_my_issue/</guid>
      <description>&lt;p&gt;少し前にはなりますが、RailsのDiscussionに問題提起を行いました。&lt;/p&gt;
&lt;p&gt;その後、Discussionで「Issueを作成して良いよ〜」とお許しを頂いたのでIssueを作成した所、修正PRが作成されてマージされるという&amp;hellip;とんでもない出来事がありました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>PNGファイルの中身(バイナリー)を覗いてみる</title>
      <link>https://www.okb-shelf.work/entry/read_png_binary/</link>
      <pubDate>Mon, 09 Oct 2023 10:29:22 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/read_png_binary/</guid>
      <description>&lt;p&gt;みなさんはバイナリデータの中身を覗いたことがありますか。&lt;/p&gt;
&lt;p&gt;僕は普段、WEBアプリケーションの開発に携わっているのですが、どうしてもこういった領域とは接点がありません。一度、WireSharkというアプリケーションを使って自身のPCから外部に送信されているパケット(バイナリデータ)の中身を覗いたことがあるぐらいです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>無印良品の白桃グリーンティーが廃盤になっていた</title>
      <link>https://www.okb-shelf.work/entry/discontinued_peach_greentea/</link>
      <pubDate>Thu, 05 Oct 2023 09:00:00 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/discontinued_peach_greentea/</guid>
      <description>&lt;p&gt;無印良品から発売されている「白桃グリーンティー」が好きでよく飲んでいました。&lt;/p&gt;
&lt;p&gt;ところが先日、白桃グリーンティーのストックがなくなってしまったので、無印に買いに行くと&amp;hellip;なんと白桃グリーンティーがどこにもありません。&lt;/p&gt;</description>
    </item>
    <item>
      <title>TCP経由で音声(mp3)を配信してクライアントで再生させてみた</title>
      <link>https://www.okb-shelf.work/entry/send_mp3_by_tcp/</link>
      <pubDate>Mon, 02 Oct 2023 09:11:05 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/send_mp3_by_tcp/</guid>
      <description>&lt;p&gt;以前、システムコールを利用して簡単なTCPサーバーを実装しました。&lt;/p&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://www.okb-shelf.work/entry/_first_time_system_call&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-image&#34;&gt;
    &lt;img src=&#34;https://www.okb-shelf.work/entry/_first_time_system_call/20230923224935.jpg&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;
  &lt;/span&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;【はじめてのシステムコール】ソケットでTCPサーバーを実装する - やわらかテック&lt;/span&gt;
    &lt;span class=&#34;linkcard-desc&#34;&gt;みなさんはシステムコールについてご存知でしょうか。 システムコールを一言で説明すると、OSのサービスを利用する際に呼び出しされる機構のことです。 普段、WEBアプリケーションの開発をしている自分にとってシステムコールは、あまり馴染みのあるも…&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;www.okb-shelf.work&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;&lt;code&gt;hello world&lt;/code&gt;という文字列が返るだけのジンプルな実装になっていましたが、他にも音声や動画といったデータをTCPを通じて送れるのか気になりました(&amp;hellip;送れると思います)。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【OBSで使用可能】スプラトゥーン3の武器をランダムで表示するサービスを公開しました</title>
      <link>https://www.okb-shelf.work/entry/splatoon3_weapon_random/</link>
      <pubDate>Thu, 28 Sep 2023 09:48:23 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/splatoon3_weapon_random/</guid>
      <description>&lt;p&gt;最近、Twitchでスプラトゥーン3のプレイを配信しています。&lt;/p&gt;
&lt;p&gt;その中でただプレイするだけだと面白くないので、武器をランダムで選択してバンカラマッチ(対戦)できたら面白いかも&amp;hellip;と思ったのですが、配信でいい感じに使える武器をランダムに選択してくれるサービス・ツールを見つけることができませんでした。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【はじめてのシステムコール】ソケットでTCPサーバーを実装する</title>
      <link>https://www.okb-shelf.work/entry/_first_time_system_call/</link>
      <pubDate>Tue, 26 Sep 2023 08:37:44 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/_first_time_system_call/</guid>
      <description>&lt;p&gt;みなさんはシステムコールについてご存知でしょうか。&lt;/p&gt;
&lt;p&gt;システムコールを一言で説明すると、OSのサービスを利用する際に呼び出しされる機構のことです。&lt;/p&gt;
&lt;p&gt;普段、WEBアプリケーションの開発をしている自分にとってシステムコールは、あまり馴染みのあるものではありません。しかし、システムコールを自分で直接、呼び出していないだけで、ファイル操作やディレクトリ変更(&lt;code&gt;cd&lt;/code&gt;)を行うと裏側ではシステムコールが発行されています。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pythonでデータ処理・グラフ描画できると業務の幅が広がる</title>
      <link>https://www.okb-shelf.work/entry/usefull_data_processing/</link>
      <pubDate>Mon, 25 Sep 2023 08:53:37 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/usefull_data_processing/</guid>
      <description>&lt;p&gt;僕がプログラミングを始めたばかりの頃はPythonを使って、データ処理・分析、機械学習といった内容に取り組んでいました。
当時、業務(アルバイト)ではCSVファイルを&lt;code&gt;pandas&lt;/code&gt;で読み込んで、前処理をして&lt;code&gt;matplotlib&lt;/code&gt;を使ってグラフを描画して&amp;hellip;というサイクルをひたすらに繰り返していたものです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Elixirでシンプルなロードバランサーを実装してみた</title>
      <link>https://www.okb-shelf.work/entry/load_balancer_with_elixir/</link>
      <pubDate>Fri, 22 Sep 2023 11:37:51 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/load_balancer_with_elixir/</guid>
      <description>&lt;p&gt;先日、Twitterを見ていると面白そうな記事が紹介されていました。&lt;/p&gt;
&lt;p&gt;少し古い記事ですが、シンプルなロードバランサーをRustで実装してみたとのこと。凄いですね&amp;hellip;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rubyでパフォーマンス(メモリ使用量・実行速度)を計測する</title>
      <link>https://www.okb-shelf.work/entry/messure_performance_ruby/</link>
      <pubDate>Wed, 20 Sep 2023 08:50:30 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/messure_performance_ruby/</guid>
      <description>&lt;p&gt;先日、Rails製のアプリケーションのパフォーマンス検証をする機会がありました。&lt;/p&gt;
&lt;p&gt;計測したいのはメモリ使用量と実行時間の2つです。後者の実行時間に関してはRubyが標準ライブラリとして提供している&lt;code&gt;benchmark&lt;/code&gt;を使えば事足りますが、前者のメモリ使用量となるとRubyでは計測する方法が限られてきます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ロジクールのイェティXはとんでもない高性能マイクだった</title>
      <link>https://www.okb-shelf.work/entry/buy_blue_yeti_x/</link>
      <pubDate>Mon, 18 Sep 2023 09:54:42 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/buy_blue_yeti_x/</guid>
      <description>&lt;p&gt;一週間前にロジクールの&lt;strong&gt;Blue Yeti X&lt;/strong&gt;というマイクを購入しました。&lt;/p&gt;
&lt;p&gt;今まで通話にはiPhoneに付属してくるイヤホンマイクをずっと愛用しており、音質には全くこだわりがありませんでした。むしろ、iPhone付属のイヤホンマイクで十分だと思っています。&lt;/p&gt;</description>
    </item>
    <item>
      <title>RubyでJSONパーサーを作ってみた</title>
      <link>https://www.okb-shelf.work/entry/ruby_json_parser/</link>
      <pubDate>Thu, 14 Sep 2023 09:59:11 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/ruby_json_parser/</guid>
      <description>&lt;p&gt;最近、パーサーを実装したい欲が高まっています。&lt;/p&gt;
&lt;p&gt;というのもRui Ueyamaさんの「&lt;a href=&#34;https://www.sigbus.info/compilerbook#&#34;&gt;低レイヤを知りたい人のためのCコンパイラ作成入門&lt;/a&gt;」を読み進めて、再帰下降構文解析をはじめとしてパワフルな実装に非常に魅力を感じているからです。&lt;/p&gt;
&lt;p&gt;資料に合わせてCコンパイラを作るのは楽しいですが、どうしても写経になってしまうため、何か自分でパーサーを作りたいと思っていました。
先日は&lt;code&gt;bullet.log&lt;/code&gt;をパースするgemを作成してリリースしましたが、あっさりと作れてしまったので、もう少し難易度の高いテーマを探していました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>弊社の技術ブログに「OSSコードリーディング入門」を投稿しました</title>
      <link>https://www.okb-shelf.work/entry/post_howto_read_oss/</link>
      <pubDate>Tue, 12 Sep 2023 08:55:47 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/post_howto_read_oss/</guid>
      <description>&lt;p&gt;先日、弊社の技術ブログに久しぶりに記事を投稿しました。&lt;/p&gt;
&lt;p&gt;内容としてはOSSのコードを初めて読む人に向けて、どのような流れでコードを読んでいくのかを実際のOSS(&lt;code&gt;gimei&lt;/code&gt;)を用いて紹介していくという記事です。&lt;/p&gt;</description>
    </item>
    <item>
      <title>JOIN高速化のためにインデックスを作成しても効果はないのか</title>
      <link>https://www.okb-shelf.work/entry/join_performance/</link>
      <pubDate>Thu, 07 Sep 2023 08:42:45 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/join_performance/</guid>
      <description>&lt;p&gt;業務中に以前、自分が書いた記事を読み返す機会がありました。&lt;/p&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://www.okb-shelf.work/entry/join_table_with_index&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-image&#34;&gt;
    &lt;img src=&#34;https://www.okb-shelf.work/entry/join_table_with_index/20230309104839.jpg&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;
  &lt;/span&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;中間テーブルには複合インデックスと単一インデックスどちらを作成すれば良いのか - やわらかテック&lt;/span&gt;
    &lt;span class=&#34;linkcard-desc&#34;&gt;データベースの設計において正規化の結果、中間テーブルを作ることがよくあると思います。 以下のようなテーブル群があったとします。登録されたユーザーと登録された商品を誰が出品した商品なのかを中間テーブルへ記録しています。 users produ…&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;www.okb-shelf.work&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;JOINを使っているSQLを高速化できないかと思って新規インデックスの作成を検討をしていました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>sidekiq.ymlファイルの文字列に環境変数を埋め込む</title>
      <link>https://www.okb-shelf.work/entry/env_in_sidekiq/</link>
      <pubDate>Tue, 05 Sep 2023 09:00:47 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/env_in_sidekiq/</guid>
      <description>&lt;p&gt;sidekiq.ymlではERBがサポートされており、環境変数を指定することが可能です。&lt;/p&gt;
&lt;p&gt;よく環境変数が使われるのは、並行度(concurrency)の値やタイムアウトの秒数などでしょうか。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Jupyter NotebookでRubyを実行する</title>
      <link>https://www.okb-shelf.work/entry/ruby_on_jupyter/</link>
      <pubDate>Thu, 31 Aug 2023 08:58:15 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/ruby_on_jupyter/</guid>
      <description>&lt;p&gt;少し前のRubyWeeklyの中に、非常に面白そうな記事が記載されていました。&lt;/p&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://nithinbekal.com/posts/ruby-jupyter-notebooks/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;Ruby and Jupyter Notebooks&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;nithinbekal.com&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;Jupiter Notebook上でRubyのコードが実行する方法が紹介されていました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>スプラトゥーンにおける自責と他責</title>
      <link>https://www.okb-shelf.work/entry/2023/08/29/%E3%82%B9%E3%83%97%E3%83%A9%E3%83%88%E3%82%A5%E3%83%BC%E3%83%B3%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E8%87%AA%E8%B2%AC%E3%81%A8%E4%BB%96%E8%B2%AC/</link>
      <pubDate>Tue, 29 Aug 2023 07:19:05 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/2023/08/29/%E3%82%B9%E3%83%97%E3%83%A9%E3%83%88%E3%82%A5%E3%83%BC%E3%83%B3%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E8%87%AA%E8%B2%AC%E3%81%A8%E4%BB%96%E8%B2%AC/</guid>
      <description>&lt;p&gt;最近はスプラトゥーン3にハマっていて毎日、1時間ぐらいコンスタントにプレイしています。&lt;/p&gt;
&lt;p&gt;一人でやることも多いのですが、同居人と一緒にプレイすることもあります。過去作と比べるとラグがひどかったり&amp;hellip;と賛否両論あるようですが、個人的にはとても楽しくプレイしています。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【書評】ソフトウェアアーキテクチャの基礎はアーキテクト最初の一冊にピッタリ</title>
      <link>https://www.okb-shelf.work/entry/software_architecture_review/</link>
      <pubDate>Thu, 24 Aug 2023 08:59:04 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/software_architecture_review/</guid>
      <description>&lt;p&gt;先日、オライリーより出版されている「ソフトウェアアーキテクチャの基礎」を読了しました。&lt;/p&gt;
&lt;p&gt;ページ数はそこそこの書籍でしたが、少しずつ少しずつ&amp;hellip;読み進めて約1ヶ月で読了することができました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>bulletのログファイルをパースするgemをリリースしました</title>
      <link>https://www.okb-shelf.work/entry/bullet_parser_release/</link>
      <pubDate>Mon, 21 Aug 2023 09:05:41 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/bullet_parser_release/</guid>
      <description>&lt;p&gt;ActiveRecord上のN+1問題を検知する&lt;code&gt;bullet&lt;/code&gt;というgemがあります。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;bullet&lt;/code&gt;を仕込んでおく事で&lt;code&gt;bullet.log&lt;/code&gt;ファイルに該当箇所でN+1問題が発生している旨のログが出力されるようになります。どんな対応をすれば良いかまで提案してくれる&amp;hellip;非常に賢いですね。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ピュアなRubyだけで複数のLoggerに出力する</title>
      <link>https://www.okb-shelf.work/entry/multilogger_ruby/</link>
      <pubDate>Thu, 17 Aug 2023 08:53:30 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/multilogger_ruby/</guid>
      <description>&lt;p&gt;RubyにはLoggerクラスが組み込みライブラリとして提供されていて、ログをいい感じに出力することができます。&lt;/p&gt;
&lt;p&gt;しかし、複数のロガーに対してログを出力することはLoggerクラスだけでは出来ません。Railsであれば&lt;code&gt;ActiveSupport::Logger.broadcast&lt;/code&gt;が使えるそうですが、ピュアなRubyでも同じことがやりたいです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rubyにおける並行処理と使い分けについて</title>
      <link>https://www.okb-shelf.work/entry/concurrency_with_ruby/</link>
      <pubDate>Tue, 15 Aug 2023 11:11:52 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/concurrency_with_ruby/</guid>
      <description>&lt;p&gt;Rubyで並行処理をしたい場合、いくつか選択肢が考えられます。&lt;/p&gt;
&lt;p&gt;自分がパッっと思いつくものを列挙しただけでも、これだけの選択肢が出てきました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Thread&lt;/li&gt;
&lt;li&gt;Process&lt;/li&gt;
&lt;li&gt;Fiber&lt;/li&gt;
&lt;li&gt;Async&lt;/li&gt;
&lt;li&gt;Ractor&lt;/li&gt;
&lt;li&gt;Concurrent Ruby&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;単一サーバーにおける並行処理では基本的にはスレッドかプロセスを使う方法が一般的かと思いますが、これだけ選択肢を出されてしまうと一体、何を使えば良いのか分からなくなってしまいます。事実、僕もRailsで並行処理をするようなケースでは毎回、調べては選定をしています。&lt;/p&gt;</description>
    </item>
    <item>
      <title>書籍「君たちはどう生きるか」は子供に読んでほしい本だった</title>
      <link>https://www.okb-shelf.work/entry/kimitachi_ha_douikiruka/</link>
      <pubDate>Fri, 11 Aug 2023 11:47:27 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/kimitachi_ha_douikiruka/</guid>
      <description>&lt;p&gt;先日、スタジオジブリ最新作の「君たちはどう生きるか」を見てきました。&lt;/p&gt;
&lt;p&gt;映画の感想については賛否両論あるようですが、僕の感想としてはポニョやハウルのようなストーリー面での楽しさはないものの、さまざまな謎や問いが劇中でされており「君はどう思う？」と感じました。これが面白いという感覚なのかは分からないです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>コントローラーの単体テストをファットにしないRspecテストの書き方</title>
      <link>https://www.okb-shelf.work/entry/rspec_args_test/</link>
      <pubDate>Mon, 07 Aug 2023 08:59:29 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/rspec_args_test/</guid>
      <description>&lt;p&gt;Rails製のアプリケーションのコントローラーの単体テストを見ていると内部で使用しているクラスやモジュールの観点・パターンまでを網羅したファットな単体テストが書かれているものを見かけます。しかしながらコントローラーの単体テストはあくまでコントローラーの責務について注目して書かれるべきであって、内部で使用しているクラスやモジュールの観点・パターンにまで踏み込む必要はありません。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【ええな〜コード】irbから定義された関数のソースコードを表示する</title>
      <link>https://www.okb-shelf.work/entry/structure_of_method_source/</link>
      <pubDate>Fri, 04 Aug 2023 08:40:53 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/structure_of_method_source/</guid>
      <description>&lt;p&gt;irbの実行環境から定義されている関数のソースコードが見たいなぁ&amp;hellip;と思いMethodクラスのドキュメントを眺めていたのですが、そのようなメソッドは提供されていませんでした。代わりではありませんが&lt;code&gt;source_location&lt;/code&gt;たる関数が定義されているファイル名と定義された箇所の行数を配列で返すメソッドを発見しました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rubyにおけるカリー化(Method.curry)と関数合成(&lt;&lt;)</title>
      <link>https://www.okb-shelf.work/entry/ruby_with_curry/</link>
      <pubDate>Tue, 01 Aug 2023 08:09:07 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/ruby_with_curry/</guid>
      <description>&lt;p&gt;RubyのMethodクラスの公式ドキュメントを読んでいた所、面白いメソッドを発見しました。&lt;/p&gt;
&lt;p&gt;なんとメソッドをカリー化してProcにした値を返してくれる&lt;code&gt;curry&lt;/code&gt;というメソッドがありました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>OpenStructの存在に気づいた時にはすでに非推奨だった</title>
      <link>https://www.okb-shelf.work/entry/about_open_struct/</link>
      <pubDate>Thu, 27 Jul 2023 08:57:30 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/about_open_struct/</guid>
      <description>&lt;p&gt;Rubyを業務で書き始めて3年目になりますが、まだまだ知らないことばかりだなぁと思わされます。&lt;/p&gt;
&lt;p&gt;先々週に届いたRubyWeeklyに構造体(struct)について解説している記事が紹介されており、気になったので記事を読んでみると&lt;code&gt;OpenStruct&lt;/code&gt;という自分が全く知らない構造体が登場しているではありませんか。&lt;/p&gt;</description>
    </item>
    <item>
      <title>インスタンス作成時の値によって関数の定義を変える方法</title>
      <link>https://www.okb-shelf.work/entry/custom_func_definition/</link>
      <pubDate>Tue, 25 Jul 2023 08:40:54 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/custom_func_definition/</guid>
      <description>&lt;p&gt;ある日のこと、業務中にチームメンバーから非常に面白い質問がありました。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;「インスタンス作成時の値によって関数の定義を変えることって可能ですかね？」 &lt;/strong&gt;&amp;hellip;とのことです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>「Aを変更したらBも変更してね」コメントはいらない</title>
      <link>https://www.okb-shelf.work/entry/unnecessary_todo_comment/</link>
      <pubDate>Fri, 21 Jul 2023 08:54:31 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/unnecessary_todo_comment/</guid>
      <description>&lt;p&gt;いつものようにプロダクトのコードを読んでいた時のことです。&lt;/p&gt;
&lt;p&gt;コード内に&lt;strong&gt;「Aを変更したらBも変更してね」&lt;/strong&gt;という旨のコメントがいくつか記載されていることに気づきました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>RuboCopに勝手にオレオレCopを実装してみる</title>
      <link>https://www.okb-shelf.work/entry/impl_original_cop/</link>
      <pubDate>Tue, 18 Jul 2023 08:41:07 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/impl_original_cop/</guid>
      <description>&lt;p&gt;前回、RuboCopの処理を追いかけました。&lt;/p&gt;
&lt;p&gt;長い旅になりましたが、なんとかRuboCopのコマンドが実行されてから画面に結果が出力されるまでの流れを完全に理解しました。せっかくコードを読んだわけなので何かしらの変更が出来ないか試してみたいと思います。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rubyの出力関数(p pp puts print printf)の違い</title>
      <link>https://www.okb-shelf.work/entry/ruby_output_functions/</link>
      <pubDate>Fri, 14 Jul 2023 09:01:30 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/ruby_output_functions/</guid>
      <description>&lt;p&gt;Rubyには標準出力するための関数が複数、用意されています。&lt;/p&gt;
&lt;p&gt;今更感はありますが、自分が把握しているだけでも5つも関数がなり、一体、何が違うのやら&amp;hellip;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rubyのバージョンアップによってエラーが発生するようになった</title>
      <link>https://www.okb-shelf.work/entry/caused_error_from_versionup/</link>
      <pubDate>Wed, 12 Jul 2023 08:51:18 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/caused_error_from_versionup/</guid>
      <description>&lt;p&gt;バージョンアップによって既存コードが動かなくなる(エラーになる)という現象に初めて遭遇しました。&lt;/p&gt;
&lt;p&gt;話には聞くものの、経験したことがなかったので「本当にあるんだ&amp;hellip;」と謎に嬉しい気持ちになりました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【Part2 / 2】RuboCopの結果が出力されるまでの実装を追ってみる</title>
      <link>https://www.okb-shelf.work/entry/rubocop_how_works_2/</link>
      <pubDate>Mon, 10 Jul 2023 09:00:14 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/rubocop_how_works_2/</guid>
      <description>&lt;p&gt;※この記事はRuboCopの内部実装を読んでみるシリーズの第2記事です。&lt;/p&gt;
&lt;p&gt;前回の記事でターミナルで&lt;code&gt;rubocop&lt;/code&gt;コマンドを実行するとRuboCop::CLIクラスのrunが呼び出されて、紆余曲折あって各Copのチェックがコールバックとして呼び出されていることが判明しました。そのまま処理を追いたかったのですが、記事が長くなり過ぎたので2つに分割しました。本稿を読んで頂くにあたって前回の記事の内容が深く関わってくるので、ぜひ前回の記事もご覧ください。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【Part1 / 2】RuboCopの結果が出力されるまでの実装を追ってみる</title>
      <link>https://www.okb-shelf.work/entry/rubocop_how_works_1/</link>
      <pubDate>Fri, 07 Jul 2023 08:46:41 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/rubocop_how_works_1/</guid>
      <description>&lt;p&gt;※この記事はRuboCopの内部実装を読んでみるシリーズの第1記事です。&lt;/p&gt;
&lt;p&gt;ある日のこと、いつものようにRuboCopに怒られた際に「RuboCopってどうやって作られてるのかな&amp;hellip;」と唐突に気になってしまったのでコードを読んでみることにしました。最初は数日あれば終わるかなと思って始めたのですが、甘かったです&amp;hellip;。気づけば二週間も時間が過ぎていました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>RubyでArrayクラスを継承させると面白いことが起きる</title>
      <link>https://www.okb-shelf.work/entry/inheritance_array/</link>
      <pubDate>Tue, 04 Jul 2023 09:21:41 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/inheritance_array/</guid>
      <description>&lt;p&gt;後に改めて記事を書きますが、最近はRubocopのコードを読み進めています。&lt;/p&gt;
&lt;p&gt;そんな中で「面白いなぁ&amp;hellip;」と感じたコードがあったので紹介がてら動作を確認してみたい思います。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ruby東海 第79回 勉強会に参加してきました</title>
      <link>https://www.okb-shelf.work/entry/ruby_tokai_report/</link>
      <pubDate>Sat, 01 Jul 2023 20:33:28 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/ruby_tokai_report/</guid>
      <description>&lt;p&gt;昨日、Ruby東海 第79回 勉強会に参加させて頂きました。&lt;/p&gt;
&lt;p&gt;主催者・参加者のみなさん、お疲れ様でした。非常に楽しい時間を過ごさせて頂きました。&lt;/p&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://rubytokai.doorkeeper.jp/events/157203&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;Ruby東海 第79回 勉強会&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;rubytokai.doorkeeper.jp&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;オフラインの勉強会に最後に行ったのが、コロナウイルスが流行り出す前だったので実に約3年ぶりの参加でした。
会場が弥生株式会社さんのセミナールーム(木曽川)で、なんと過去に清流elixirの勉強会を開催していた頃に一度、利用させて頂いたことがあります。その節は本当にありがとうございました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ステータスを返すだけのAPIをほぼ無料・爆速でCloud Runに作成する</title>
      <link>https://www.okb-shelf.work/entry/server_on_cloudrun/</link>
      <pubDate>Thu, 29 Jun 2023 08:56:42 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/server_on_cloudrun/</guid>
      <description>&lt;p&gt;ただスタータスを返すだけのAPIが別のホストに必要になったので作ってみました。&lt;/p&gt;
&lt;p&gt;多くのケースではPrismでモックサーバーを立てれば十分ですが、ヘッダーに&lt;code&gt;Prefer&lt;/code&gt;の指定ができない上に固定のステータスが返ってくれば良いだけだったので自分で作ることにしました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>gemにbinding.irbを仕込んでデバッグする方法</title>
      <link>https://www.okb-shelf.work/entry/binding_in_gem/</link>
      <pubDate>Tue, 27 Jun 2023 08:48:41 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/binding_in_gem/</guid>
      <description>&lt;p&gt;OSSのコードを読むときは基本的にgithub.devを使っていますが、最近、限界を感じています。&lt;/p&gt;
&lt;p&gt;というのも巨大なコードベースを持つOSSの場合は処理を追うだけで大変です。その上、この変数には〇〇クラスのインスタンスが&amp;hellip;。この関数の引数には△△が指定されて&amp;hellip;と自分の脳(揮発性メモリ)では非常に辛い作業です。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ChatGPTがついた嘘をはじめて見抜けなかった</title>
      <link>https://www.okb-shelf.work/entry/chatgpt_tell_lie/</link>
      <pubDate>Fri, 23 Jun 2023 09:46:00 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/chatgpt_tell_lie/</guid>
      <description>&lt;p&gt;以前より「嘘は嘘であると見抜ける人でないと(ChatGPTを使うのは)難しい」と言われています。&lt;/p&gt;
&lt;p&gt;例えば「スラムダンクはサッカー漫画です」というような、明らかな嘘であれば簡単に見抜くことが出来ることができますが、微妙な嘘の場合はどうでしょうか。&lt;/p&gt;</description>
    </item>
    <item>
      <title>話題のコグナビ転職(cognavi)を使ってみた感想</title>
      <link>https://www.okb-shelf.work/entry/cognavi_review/</link>
      <pubDate>Mon, 19 Jun 2023 09:02:26 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/cognavi_review/</guid>
      <description>&lt;p&gt;よく「エンジニア」というキーワードと関連して検索されている単語をGoogle広告で見ています。&lt;/p&gt;
&lt;p&gt;最近「コグナビ」というキーワードが頻出していることに気づきました。「コグナビって何だろう？」と気になったので調べてみると、2019年頃にリリースされたエンジニアをメインターゲットにした主に理工系向けの新卒・転職サービスでした。LPには長澤まさみさんやガンダムにシャア・アズナブルが起用されており気合いを感じます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>「達人プログラマー」を読了したら感謝の気持ちに辿り着いた</title>
      <link>https://www.okb-shelf.work/entry/the_pragmatic_programmer/</link>
      <pubDate>Thu, 15 Jun 2023 08:53:29 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/the_pragmatic_programmer/</guid>
      <description>&lt;p&gt;先日、しばらく積読してしていた「達人プログラマー 第2版」を読了しました。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.okb-shelf.work/entry/the_pragmatic_programmer/20230612203258.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.ohmsha.co.jp/book/9784274226298/&#34;&gt;達人プログラマー（第2版） 熟達に向けたあなたの旅 | Ohmsha&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;この書籍について改めて自分が語る必要がないぐらい有名な書籍で、著者は伝説のプラグラマーであるDave Thomas(デイブ・トーマス)とAndrew Hunt(アンドリュー・ハント)の二人です。何よりも驚くべきなのは「達人プログラマー(The Pragmatic Programmer)」は20年も前に書かれた書籍であるという点です。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rubyで演算子の順序を入れ替えるとエラーになるのはなぜか</title>
      <link>https://www.okb-shelf.work/entry/why_error_exchange__operation/</link>
      <pubDate>Mon, 12 Jun 2023 08:59:39 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/why_error_exchange__operation/</guid>
      <description>&lt;p&gt;先日、Rubyで文字列を指定数分だけ繰り返す処理を書いていた所、面白い現象に遭遇しました。&lt;/p&gt;
&lt;p&gt;文字列を繰り返すために&lt;code&gt;*&lt;/code&gt;を使ったのですが「文字列 * 数値」の場合はエラーが発生せずに望み通りの値が返るものの、順序を逆にして「数値 * 文字列」とするとエラーが発生します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【ええな〜コード】フェイクデータ作成gemのfakerはどのようにして作られているのか</title>
      <link>https://www.okb-shelf.work/entry/faker_how_to_work/</link>
      <pubDate>Fri, 09 Jun 2023 10:28:04 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/faker_how_to_work/</guid>
      <description>&lt;p&gt;僕は技術のキャッチアップのために、定期的にgithubのトレンドを見ています。&lt;/p&gt;
&lt;p&gt;最近、Rubyのカテゴリで「faker」という昔から使われているフェイクデータを作成するgemがよくトレンドに上がっており、リリースも今現在(2023年6月)も活発にされているようです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>RailsにIssueを立てたらPRが作成されてマージされた</title>
      <link>https://www.okb-shelf.work/entry/merge_rails_first_issue/</link>
      <pubDate>Wed, 07 Jun 2023 08:30:56 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/merge_rails_first_issue/</guid>
      <description>&lt;p&gt;とんでもないことが起こりました。まじでやばいです。&lt;/p&gt;
&lt;p&gt;前回の記事で共有したように「RailsのgithubにIssueとして気軽に立てて良いよ〜」という旨の返信をJean Boussierさんから頂いたので、RailsのIssueを作成してから3日ほど経過しました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>リモートワーカーがジムに通って筋トレを始めたら生活の質が上がった</title>
      <link>https://www.okb-shelf.work/entry/remoteworker_goto_gym/</link>
      <pubDate>Mon, 05 Jun 2023 09:44:00 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/remoteworker_goto_gym/</guid>
      <description>&lt;p&gt;早いものでリモートワークが始まって3年になります。&lt;/p&gt;
&lt;p&gt;リモートワークが始まる以前は当然ですが毎日、オフィスに出勤していました。特に駅までの片道30分の自転車移動が大変だったのですが、今になって思うと非常に良い運動習慣になっていましたし、大学生の頃からずっと駅まで自転車で行っていたので寂しさもあります。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rails Discussionに投稿したら返信が来てgithubにIssueを作成した</title>
      <link>https://www.okb-shelf.work/entry/rails_discussion_reply/</link>
      <pubDate>Fri, 02 Jun 2023 09:04:56 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/rails_discussion_reply/</guid>
      <description>&lt;p&gt;早いもので一年も折り返し&amp;hellip;。東海地方もいよいよ梅雨入りしてジメジメした季節になりました。&lt;/p&gt;
&lt;p&gt;先日、&lt;code&gt;cache_store&lt;/code&gt;の設定に環境変数を指定してInterger型に変換しないと、キャッシュの書き込み時にエラーが出るという現象を確認しました。この振る舞いに疑問を感じたので、RailsのコントリビュートガイドにならってRails Discussionに投稿をしてみました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rails Discussionに投稿をしてみた</title>
      <link>https://www.okb-shelf.work/entry/post_rails_discussion/</link>
      <pubDate>Tue, 30 May 2023 08:28:19 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/post_rails_discussion/</guid>
      <description>&lt;p&gt;「今年こそは&amp;hellip;今年こそは&amp;hellip;OSSに貢献するぞ&amp;hellip;！」と思い気づけはや3年。&lt;/p&gt;
&lt;p&gt;気持ちだけが先行して何をしたら良いのか分からず。結局、それらしいことは何もしていませんでした。&lt;/p&gt;</description>
    </item>
    <item>
      <title>コーチングがない組織が行き着く先はBADENDでしかない</title>
      <link>https://www.okb-shelf.work/entry/team_statement/</link>
      <pubDate>Mon, 29 May 2023 09:11:49 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/team_statement/</guid>
      <description>&lt;p&gt;最近はチームビルディングについて思い悩まされる日々を過ごしています。僕は過去に外部メンターの方からマネジメントにおいて重要なのは「ティーチングとコーチングの違いを理解すること」だと教えて頂きました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>PostgreSQLでboolean型のカラムを持つレコードを取得するとt, fとなる</title>
      <link>https://www.okb-shelf.work/entry/postgresql_t_f/</link>
      <pubDate>Fri, 26 May 2023 22:23:49 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/postgresql_t_f/</guid>
      <description>&lt;p&gt;Rubyでpg gemを使って、postgresqlに接続してクエリの実行結果を見ていたところ、boolean型のカラムの戻り値がTRUEの場合に&lt;code&gt;t&lt;/code&gt;、FALSEの場合に&lt;code&gt;f&lt;/code&gt;となる現象を確認しました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>binding.irbでdebugコマンドが使えないのはirbのバージョンが古いため</title>
      <link>https://www.okb-shelf.work/entry/cant_irb_with_debug/</link>
      <pubDate>Thu, 25 May 2023 08:27:46 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/cant_irb_with_debug/</guid>
      <description>&lt;p&gt;僕はRubyで何かしら開発をする時に&lt;code&gt;binding.pry&lt;/code&gt;というデバッグツールを愛用してきました。&lt;/p&gt;
&lt;p&gt;Rubyを書き始めたのが確か、2.3系の頃で当時から&lt;code&gt;binding.pry&lt;/code&gt;は非常に人気のデバッグツールでした。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ファイルをオープン(open)したらクローズ(close)しないといけない理由について</title>
      <link>https://www.okb-shelf.work/entry/why_file_close/</link>
      <pubDate>Wed, 24 May 2023 09:00:13 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/why_file_close/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.okb-shelf.work/entry/why_file_close/20230523230631.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;僕がプログラミングを始めたばかりの頃、よく「ファイルをクローズし忘れてるよ」と指摘されていました。&lt;/p&gt;
&lt;p&gt;当時は「ファイルはオープンしたらクローズするもの&amp;hellip;」と反射的にファイルをクローズするようにしていました。しかし、今になって思うと「なぜオープンしたファイルをクローズしなければならないのか」を疑問に思うべきでした。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【Ruby】なぜeach関数よりもfor inが遅いのか</title>
      <link>https://www.okb-shelf.work/entry/for_in_vs_each/</link>
      <pubDate>Fri, 19 May 2023 10:31:34 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/for_in_vs_each/</guid>
      <description>&lt;p&gt;先日、以下の記事を公開しました。&lt;/p&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://www.okb-shelf.work/entry/gen_hash_performance&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-image&#34;&gt;
    &lt;img src=&#34;https://www.okb-shelf.work/entry/gen_hash_performance/20230516222644.jpg&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;
  &lt;/span&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;【Ruby】配列からハッシュを生成する4つの方法と速度比較 - やわらかテック&lt;/span&gt;
    &lt;span class=&#34;linkcard-desc&#34;&gt;Rubyで開発をしていると配列からハッシュ(連想配列)を生成するコードを書くことがあります。 個人的にはreduce関数を使ってバシッと書くのが気持ちよくて好きなのですが、最近、人によってこの処理の書き方が違うことに気づきました。 4つの書…&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;www.okb-shelf.work&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;Rubyで配列からハッシュを作る際に、どの方法が一番パフォーマンスが良いのかを計測したのですが、過去にJavaScriptで似たような計測をした時はシンプルなfor文が最速だったので、Rubyでも同じような結果になると思っていたら&lt;code&gt;for in&lt;/code&gt;が最も遅く、each関数が最も速いという結果になりました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【Ruby】配列からハッシュを生成する4つの方法と速度比較</title>
      <link>https://www.okb-shelf.work/entry/gen_hash_performance/</link>
      <pubDate>Thu, 18 May 2023 08:57:24 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/gen_hash_performance/</guid>
      <description>&lt;p&gt;Rubyで開発をしていると配列からハッシュ(連想配列)を生成するコードを書くことがあります。&lt;/p&gt;
&lt;p&gt;個人的にはreduce関数を使ってバシッと書くのが気持ちよくて好きなのですが、最近、人によってこの処理の書き方が違うことに気づきました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Elm Architectureに感銘を受けた</title>
      <link>https://www.okb-shelf.work/entry/elm_beginner/</link>
      <pubDate>Wed, 17 May 2023 08:31:22 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/elm_beginner/</guid>
      <description>&lt;p&gt;最近、Elmを学びはじめました。&lt;/p&gt;
&lt;p&gt;Elmの存在は元から認知していて、Haskellに似た文法を持つ関数型言語にカテゴリーされる言語だそうで、そんな言語でフロントエンドが作れるとのこと&amp;hellip;で非常に興味がありました。また、個人でアプリケーションを作るにあたってフロントエンドの開発は避けて通ることが難しいです。現時点で一番の選択肢として考えられるのはReact.jsですが、業務で散々書いたので個人的にはもういいかなと感じています。何か新しいことをやりたいなぁ&amp;hellip;と思っていたので、Elmを選択しました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>あなたのチームに悪者はいない。だから対話が必要なんだ</title>
      <link>https://www.okb-shelf.work/entry/no_bad_guys/</link>
      <pubDate>Fri, 12 May 2023 08:51:52 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/no_bad_guys/</guid>
      <description>&lt;p&gt;チームの人数がだんだんと増えてきてポジションが明確化されて来た今、「対話が必要だ&amp;hellip;」と思わされる日々を過ごしています。
何年も前に「ポジションは役割に過ぎない」という記事が話題になりました。当時、ポジションというのは上下関係を構築するものだと思っていたのですが、記事の通りポジションは役割でしかなく、人と人の間に上下関係を構築するものではないという学びがありました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>第8波にてはじめてコロナになりました</title>
      <link>https://www.okb-shelf.work/entry/coronavirus__infection/</link>
      <pubDate>Wed, 10 May 2023 22:47:57 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/coronavirus__infection/</guid>
      <description>&lt;p&gt;しばらく更新が止まってしまい申し訳ありません。&lt;/p&gt;
&lt;p&gt;事後報告になりますが、コロナウイルスに感染して5日間ほど寝込んでいました。とても記事を書ける状態ではありませんでした。まさかのGW真っ最中での感染&amp;hellip;によって、全ての予定が吹き飛びました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>「アジャイルなチームをつくるふりかえりガイドブック」のすすめ</title>
      <link>https://www.okb-shelf.work/entry/agile_retrospective/</link>
      <pubDate>Fri, 28 Apr 2023 11:39:59 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/agile_retrospective/</guid>
      <description>&lt;p&gt;いつものように書店を徘徊していると、良さげな本を発見。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.okb-shelf.work/entry/agile_retrospective/20230428121144.jpg&#34;&gt;
同じシリーズの書籍である「SCRUM BOOT CAMP THE BOOK」を過去に読んだことがあったので「この表紙は！」と思い気づいたら購入していました。はい、いつもの衝動買いです。自分は書店で紙媒体のものを購入したのですが、なんと今、電子書籍版がセールで2023/05/12まで半額で購入可能なようです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>無知であることを体験することの重要さ</title>
      <link>https://www.okb-shelf.work/entry/camp_misstakes/</link>
      <pubDate>Wed, 26 Apr 2023 09:07:40 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/camp_misstakes/</guid>
      <description>&lt;p&gt;最近、みなさんは全くやったことがない・知識がなかったことを新しく始めたりされているでしょうか。&lt;/p&gt;
&lt;p&gt;僕は先日、同居人と人生ではじめてのキャンプに行きました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>何気ない一言は人を変えることがある</title>
      <link>https://www.okb-shelf.work/entry/change_a_person/</link>
      <pubDate>Mon, 24 Apr 2023 09:15:52 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/change_a_person/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.okb-shelf.work/entry/change_a_person/20230423082419.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;よく「人を変えることはできない」という意見を耳にします。&lt;/p&gt;
&lt;p&gt;この意見に対しては自分も完全同意で、人を変えることへ労力をかけるのであれば、悲しきかな自分を取り巻く環境を変えてしまった方が圧倒的に簡単でコスパが良いです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rspec&#43;Railsを使ったconcernの単体テストの書き方</title>
      <link>https://www.okb-shelf.work/entry/concern_with_spec/</link>
      <pubDate>Fri, 21 Apr 2023 09:49:27 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/concern_with_spec/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.okb-shelf.work/entry/concern_with_spec/20230419221015.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;Railsの開発にてmodelやcontrollerの共通処理をconcernとして切り出すことはよくあるパターンです。&lt;/p&gt;
&lt;p&gt;modelやcontrollerはクラス(class)として表現するものの、concernは&lt;code&gt;ActiveSupport::Concern&lt;/code&gt;を&lt;code&gt;extend&lt;/code&gt;したモジュール(module)として定義する必要があります。&lt;/p&gt;</description>
    </item>
    <item>
      <title>部活動という構造が権限委譲の素晴らしいモデルなのではないか</title>
      <link>https://www.okb-shelf.work/entry/analyze_club_structure/</link>
      <pubDate>Tue, 18 Apr 2023 14:14:18 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/analyze_club_structure/</guid>
      <description>&lt;p&gt;最近は社内の輪読会で「エンジニア組織論への招待」を読んでいます。&lt;/p&gt;
&lt;p&gt;著者の広木さんが書かれた素晴らしい内容に影響されて、組織構造について考える時間がとても増えました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Class.new内部の関数定義へ変数を受け渡す方法について</title>
      <link>https://www.okb-shelf.work/entry/class_new_ruby/</link>
      <pubDate>Sat, 15 Apr 2023 14:18:22 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/class_new_ruby/</guid>
      <description>&lt;p&gt;Rspecでモックを作りたくて動的なクラスを&lt;code&gt;Class.new&lt;/code&gt;で生成していた時のことです。&lt;/p&gt;
&lt;p&gt;関数で受け取った配列を&lt;code&gt;.map&lt;/code&gt;で処理していたところ、&lt;code&gt;do |student|&lt;/code&gt;で定義したブロック変数が&lt;code&gt;Class.new&lt;/code&gt;内部に定義した関数のスコープ外になるという現象に遭遇しました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>日本(Asia/Tokyo)の今日の日付をelixirで取得する</title>
      <link>https://www.okb-shelf.work/entry/nowdate_with_elixir/</link>
      <pubDate>Sat, 15 Apr 2023 14:17:42 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/nowdate_with_elixir/</guid>
      <description>&lt;p&gt;何回も書く機会があるので、まとめておこうと思います。&lt;/p&gt;
&lt;p&gt;何も外部ライブラリをインストールしていない状態では&lt;code&gt;Etc/UTC&lt;/code&gt;以外のタイムゾーンを使用することができません。自分のように&lt;code&gt;Asia/Tokyo&lt;/code&gt;を使いたい人は&lt;code&gt;Tzdata&lt;/code&gt;や&lt;code&gt;Timex&lt;/code&gt;といった外部ライブラリをインストールする必要があります。&lt;/p&gt;</description>
    </item>
    <item>
      <title>卒論の時に作ったアプリケーションのアーキテクチャを考え直してみた</title>
      <link>https://www.okb-shelf.work/entry/rearchitecture_old_app/</link>
      <pubDate>Wed, 12 Apr 2023 10:25:04 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/rearchitecture_old_app/</guid>
      <description>&lt;p&gt;僕は卒論でVB.netを使って「センサーで計測したひずみ値を描画・記録するアプリケーションの作成」を行いました。学部では土木・建築を専攻しましたが、先生が「プログラミングを極めたい」という僕の気持ちを汲んでくれたことを今でも感謝しています。目的を持ってプログラムを書くことがとても楽しかったです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>コードを書かない日があってもいいんじゃないかと思った話</title>
      <link>https://www.okb-shelf.work/entry/cant_write_code/</link>
      <pubDate>Mon, 10 Apr 2023 08:46:24 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/cant_write_code/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.okb-shelf.work/entry/cant_write_code/20230408165650.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;最近のことですが、コードを全く書かない・書こうと思わない日がやってくることに気づきました。&lt;/p&gt;
&lt;p&gt;新卒で現職に就いてからこんなことを感じたことはほとんどなかったので、自分でも驚いていますし、本当にショックです。ついに自分にも無気力期間がやってきてしまったか&amp;hellip;と現実を受け止めつつ、なぜそうなってしまったのか振り返ってみようと思います。&lt;/p&gt;</description>
    </item>
    <item>
      <title>無名ブロック(anonymous block)によってRuboCopがコケるようになった</title>
      <link>https://www.okb-shelf.work/entry/rubocop_anonymous_block/</link>
      <pubDate>Thu, 06 Apr 2023 09:03:15 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/rubocop_anonymous_block/</guid>
      <description>&lt;p&gt;2023年3月31日をもってRuby2.7がEOL(EndOfLife)となりました。安らかにお眠りください&amp;hellip;🪦&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.okb-shelf.work/entry/rubocop_anonymous_block/20230402165401.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://endoflife.date/ruby&#34;&gt;Ruby | endoflife.date&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;業務でRubyを触り始めたのが、ちょうど2.3~2.7系の時だったので感慨深いものがあります。&lt;/p&gt;</description>
    </item>
    <item>
      <title>技術ブログを始めて5年目に突入して思うこと</title>
      <link>https://www.okb-shelf.work/entry/fourth_anniversary_blog/</link>
      <pubDate>Mon, 03 Apr 2023 08:14:06 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/fourth_anniversary_blog/</guid>
      <description>&lt;p&gt;はてなブログから素敵なメールが届きました。なんとブログを開設してから早くも４年が経過したそうです。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.okb-shelf.work/entry/fourth_anniversary_blog/20230330225550.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;開設したのは学部を卒業して新卒になる前の２０１９年３月のこと。&lt;/p&gt;</description>
    </item>
    <item>
      <title>「夜と霧」を読んで「人はなぜ生きるのか」には答えがないことが分かった</title>
      <link>https://www.okb-shelf.work/entry/yoru_to_kiri/</link>
      <pubDate>Thu, 30 Mar 2023 07:53:33 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/yoru_to_kiri/</guid>
      <description>&lt;p&gt;最近は技術書だけではなく、さまざまな書籍を読むようになりました。&lt;/p&gt;
&lt;p&gt;今回はヴィクトール・E・フランクル著の「夜と霧」を読みました。今更、自分が紹介するまでもなく名著して語り継がれている書籍です。著者のフランクルが第二次世界大戦渦にて、ユダヤ人してアウシュヴィッツに収容された経験を元に「人間とは何か」というテーマとなっています。&lt;/p&gt;</description>
    </item>
    <item>
      <title>mastdonからServiceクラスの作り方を学ぶ</title>
      <link>https://www.okb-shelf.work/entry/service_class_design/</link>
      <pubDate>Tue, 28 Mar 2023 09:30:25 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/service_class_design/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.okb-shelf.work/entry/service_class_design/20230323190909.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;みなさんはRailsの開発にて、サービスクラス(ServiceObject)を使っているでしょうか。&lt;/p&gt;
&lt;p&gt;モデルやコントローラーがファットになるのを防ぐために導入される設計方法で、ドメイン知識におけるサービス(eg: 商品の購入処理)の一連の処理をまとめたクラスを作成することで、可用性が高くテストがしやすいコードを書くことが可能です。&lt;/p&gt;</description>
    </item>
    <item>
      <title>トランザクションがあれば安心ではないのでRailsでもロックをかけたい</title>
      <link>https://www.okb-shelf.work/entry/db_lock_to_rails/</link>
      <pubDate>Sat, 25 Mar 2023 19:21:03 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/db_lock_to_rails/</guid>
      <description>&lt;p&gt;Railsでトランザクションを扱いたい時は&lt;code&gt;ActiveRecord&lt;/code&gt;に実装された&lt;code&gt;transaction&lt;/code&gt;メソッドを呼び出します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;no&#34;&gt;ActiveRecord&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;no&#34;&gt;Base&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;transaction&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;今までRailsでトランザクションのブロックを宣言した時は、他のトランザクションからデータの取得、更新は出来ないと思っていましたが、先日、勘違いであることに気づきました。更新はトランザクションの待機によってすぐには実行されませんが、データの取得は可能です。取得もさせたくないのであれば排他制御を行い明示的にロックの宣言をする必要があります。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ミヒャイル・エンデ作のモモは現代の大人こそ読むべき本だった</title>
      <link>https://www.okb-shelf.work/entry/momo_review/</link>
      <pubDate>Wed, 22 Mar 2023 10:25:54 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/momo_review/</guid>
      <description>&lt;p&gt;昨日、ミヒャイル・エンデ作の「モモ」という書籍を読了しました。&lt;/p&gt;
&lt;p&gt;この本は児童文学として書かれているので、普段の自分とは縁もゆかりもない書籍です。一週間前にアップロードされたアバタローさんの解説動画を見て「何だこの本は&amp;hellip;面白そう」と思い、いつものように衝動買いをしました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Railsのマイグレーションファイルでt.stringを使うときはlimitを指定してほしい</title>
      <link>https://www.okb-shelf.work/entry/unlimit_varchar/</link>
      <pubDate>Mon, 20 Mar 2023 09:25:12 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/unlimit_varchar/</guid>
      <description>&lt;p&gt;Railsではマイグレーションファイルを作成してマイグレートを実行することで、テーブルが作成されます。&lt;/p&gt;
&lt;p&gt;非常に便利で手軽にテーブルの定義・作成ができるのですが、マイグレートされた結果、どのような型が選択されるのかが隠蔽化されるという問題があると思っています。一例として、&lt;code&gt;t.string&lt;/code&gt;と&lt;code&gt;t.text&lt;/code&gt;でそれぞれカラムを定義した場合に実際にテーブルで採用される型はどうなるでしょうか。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【書評】単体テストの考え方 / 使い方 を読了しました</title>
      <link>https://www.okb-shelf.work/entry/review_unit_test/</link>
      <pubDate>Wed, 15 Mar 2023 09:14:57 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/review_unit_test/</guid>
      <description>&lt;p&gt;2022/12/28に「Manning Publishing: Unit Testing Principles, Practices, and Patterns」の翻訳書である「単体テストの考え方/使い方」という書籍が発売されました。買うか迷っていたのですが、TDD(テスト駆動開発)で有名なt_wadaさんがツイートされているのをお見かけして、いつものように衝動買いをしました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>小さな声で話し出すことがリモートワークのミーティングを加速させた</title>
      <link>https://www.okb-shelf.work/entry/small_voice__accelerate_mtg/</link>
      <pubDate>Mon, 13 Mar 2023 09:56:50 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/small_voice__accelerate_mtg/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.okb-shelf.work/entry/small_voice__accelerate_mtg/20230310091255.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;日々のリモートワークでミーティングをしていると、相手と同時のタイミングで話し始めてしまうことがよくあります。特に自分から話を振ってから、返答を待ってる間に何かを追加で自分が話し出した時なんかひどいもので、せっかく相手が話しだしてくれたのに遮ってしまった時は申し訳なさすぎて消えたくなります。&lt;/p&gt;</description>
    </item>
    <item>
      <title>中間テーブルには複合インデックスと単一インデックスどちらを作成すれば良いのか</title>
      <link>https://www.okb-shelf.work/entry/join_table_with_index/</link>
      <pubDate>Fri, 10 Mar 2023 09:24:16 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/join_table_with_index/</guid>
      <description>&lt;p&gt;データベースの設計において正規化の結果、中間テーブルを作ることがよくあると思います。&lt;/p&gt;
&lt;p&gt;以下のようなテーブル群があったとします。登録されたユーザーと登録された商品を誰が出品した商品なのかを中間テーブルへ記録しています。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rubyで巨大な配列を扱う時はEnumeratorを使うのが良さそう</title>
      <link>https://www.okb-shelf.work/entry/enumerator_in_ruby/</link>
      <pubDate>Mon, 06 Mar 2023 09:08:14 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/enumerator_in_ruby/</guid>
      <description>&lt;p&gt;先日、Rubyで巨大な配列(Array)を扱うことがありました。&lt;/p&gt;
&lt;p&gt;気になるのは巨大な配列を宣言したときのメモリ使用量です。試しに、要素数が10,000個の配列を宣言してみると&lt;code&gt;89,712Byte&lt;/code&gt;ほどメモリを使用していることが分かります。&lt;/p&gt;</description>
    </item>
    <item>
      <title>オレオレRspecを自作して覚えるRubyのブロック引数について</title>
      <link>https://www.okb-shelf.work/entry/my_rspec_with_blockarg/</link>
      <pubDate>Fri, 03 Mar 2023 09:20:46 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/my_rspec_with_blockarg/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.okb-shelf.work/entry/my_rspec_with_blockarg/20230226135431.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;Rubyのブロック引数についてご存じでしょうか。&lt;/p&gt;
&lt;p&gt;非常に便利な機能で皆さんもよく使っている、正確にはブロック引数に対してブロックを渡していますが、ブロック引数を定義する機会がほとんどない方も多いでしょう。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【Ruby】boolean型の値を渡すだけの関数にはキーワード引数を付与してあげよう</title>
      <link>https://www.okb-shelf.work/entry/need_keyword_arguments/</link>
      <pubDate>Tue, 28 Feb 2023 10:10:00 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/need_keyword_arguments/</guid>
      <description>&lt;p&gt;ある日のこと。Rubyのコードを読んでいるとboolean型の値が引数となる関数の呼び出し処理を見て「なんじゃこりゃ&amp;hellip;」という気持ちになりました。簡単な例を紹介します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>母の誕生日にヒエログリフのメッセージを送ったら解読してくれた</title>
      <link>https://www.okb-shelf.work/entry/happy_birthday_mother/</link>
      <pubDate>Mon, 27 Feb 2023 09:27:49 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/happy_birthday_mother/</guid>
      <description>&lt;p&gt;僕は毎年、母の誕生日に「知識は力なり」という&amp;hellip;思いを込めて何かしらの本をプレゼントしています。&lt;/p&gt;
&lt;p&gt;過去には「フランス人は１０着しか本を持たない」や「52ヘルツのクジラたち」などジャンルを問わず様々な本をセレクトしてきました。「今年は何にしようかな&amp;hellip;」と考えていたところ、母が古代エジプトの文明が大好きであることを思い出しました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>「RubyでつくるRuby」を読んだら簡単なRubyインタプリタが作れた</title>
      <link>https://www.okb-shelf.work/entry/made_ruby_by_ruby/</link>
      <pubDate>Fri, 24 Feb 2023 09:54:33 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/made_ruby_by_ruby/</guid>
      <description>&lt;p&gt;「RubyでつくるRuby ゼロから学ぶなおすプログラミング言語入門」を読了しました。&lt;/p&gt;
&lt;p&gt;非常にチャレンジングな本で、なんとRuby初心者の方に向けてRubyを動かすプログラム、つまりRubyインタプリタを作ってみようという本です。「え、そんなのプログラミング初心者にできるの！？」と気になり、いつのまにかポチっていました(つまり衝動買い)。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【経験者が語る】エンジニア向けはじめての副業の探し方</title>
      <link>https://www.okb-shelf.work/entry/howto_find_subwork/</link>
      <pubDate>Wed, 22 Feb 2023 09:28:31 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/howto_find_subwork/</guid>
      <description>&lt;ul&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;</description>
    </item>
    <item>
      <title>お題「オタクグッズの処分方法を教えてください」へのミニマリストの回答</title>
      <link>https://www.okb-shelf.work/entry/item_dispose/</link>
      <pubDate>Thu, 16 Feb 2023 09:19:50 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/item_dispose/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://blog.hatena.ne.jp/-/odai/4207112889940460556&#34;&gt;お題「オタクグッズの処分方法を教えてください。金額を考えてふと我に返ってるところです。」&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;面白いお題を見つけたので元グッズ集めアニメオタク、現ミニマリストの自分も「オタクグッズが処分できない！」とお困りの方に自分のグッズ処分経験を書いてみようと思います。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【Ruby】配列が特定の要素を含むかを判定するならany?ではなくinclude?を使うべし</title>
      <link>https://www.okb-shelf.work/entry/should_use_include/</link>
      <pubDate>Wed, 15 Feb 2023 10:00:51 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/should_use_include/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.okb-shelf.work/entry/should_use_include/20230211103408.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;ある日のこと。Rubyのコードを読んでいると配列の要素が特定の値を含んでいるかどうかの判定に&lt;code&gt;include?&lt;/code&gt;を使っている箇所と&lt;code&gt;any?&lt;/code&gt;を使っている箇所があることに気づきました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【ええな〜コード】作って学ぶRailsのenumの仕組みについて</title>
      <link>https://www.okb-shelf.work/entry/enum_how_to_work/</link>
      <pubDate>Tue, 14 Feb 2023 09:53:34 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/enum_how_to_work/</guid>
      <description>&lt;p&gt;Railsを使っていて何かと便利なのが「enum」です。&lt;/p&gt;
&lt;p&gt;他の言語では列挙型(Enumerable)と呼ばれることがありますが、実態としてはActiveRecordに定義されたenumという関数です。modelファイルの中でカラム値のバリエーションを指定することが出来るのが非常に便利です。&lt;/p&gt;</description>
    </item>
    <item>
      <title>スプラトゥーン3のER図について考える【キャラクター編】</title>
      <link>https://www.okb-shelf.work/entry/table_design_splatoon/</link>
      <pubDate>Mon, 13 Feb 2023 09:40:06 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/table_design_splatoon/</guid>
      <description>&lt;p&gt;こちらの記事を見て、自分も別のテーマでやってみたいと思います。&lt;/p&gt;
&lt;p&gt;ちょうど同じ任天堂のスプラトゥーン3にドハマりしているので、スプラトゥーン3を題材にやってみます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>僕のマインドを支える「恩送り」という考え方について</title>
      <link>https://www.okb-shelf.work/entry/give_kindness/</link>
      <pubDate>Thu, 09 Feb 2023 09:45:19 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/give_kindness/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.okb-shelf.work/entry/give_kindness/20230208203145.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;今回は少し照れくさいですが、自分のマインドを支える「恩送り」という考えについて紹介しようと思います。&lt;/p&gt;
&lt;p&gt;そもそも「恩送り」という言葉をご存知でしょうか。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【書評】現場で役立つシステム設計の原則はオブジェクト指向の入門によさげな本だった</title>
      <link>https://www.okb-shelf.work/entry/entry_oop_books_review/</link>
      <pubDate>Tue, 07 Feb 2023 21:23:10 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/entry_oop_books_review/</guid>
      <description>&lt;p&gt;Amazonを徘徊していたところ、面白そうな本を見つけました。&lt;/p&gt;
&lt;div class=&#34;amazon-card&#34;&gt;
  &lt;a href=&#34;https://www.amazon.co.jp/dp/B073GSDBGT?tag=matuko110-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34; class=&#34;amazon-card-image&#34; target=&#34;_blank&#34; rel=&#34;sponsored noopener&#34;&gt;
    &lt;img src=&#34;https://m.media-amazon.com/images/I/51F-XAQ7V6L._SL500_.jpg&#34; alt=&#34;現場で役立つシステム設計の原則 〜変更を楽で安全にするオブジェクト指向の実践技法&#34; loading=&#34;lazy&#34;&gt;
  &lt;/a&gt;
  &lt;div class=&#34;amazon-card-info&#34;&gt;
    &lt;p class=&#34;amazon-card-title&#34;&gt;
      &lt;a href=&#34;https://www.amazon.co.jp/dp/B073GSDBGT?tag=matuko110-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34; target=&#34;_blank&#34; rel=&#34;sponsored noopener&#34;&gt;現場で役立つシステム設計の原則 〜変更を楽で安全にするオブジェクト指向の実践技法&lt;/a&gt;
    &lt;/p&gt;</description>
    </item>
    <item>
      <title>アウトプットの達人・伊藤淳一さんは人助けの達人だった</title>
      <link>https://www.okb-shelf.work/entry/2023/02/04/%E3%82%A2%E3%82%A6%E3%83%88%E3%83%97%E3%83%83%E3%83%88%E3%81%AE%E9%81%94%E4%BA%BA%E3%83%BB%E4%BC%8A%E8%97%A4%E6%B7%B3%E4%B8%80%E3%81%95%E3%82%93%E3%81%AF%E4%BA%BA%E5%8A%A9%E3%81%91%E3%81%AE%E9%81%94/</link>
      <pubDate>Sat, 04 Feb 2023 12:28:00 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/2023/02/04/%E3%82%A2%E3%82%A6%E3%83%88%E3%83%97%E3%83%83%E3%83%88%E3%81%AE%E9%81%94%E4%BA%BA%E3%83%BB%E4%BC%8A%E8%97%A4%E6%B7%B3%E4%B8%80%E3%81%95%E3%82%93%E3%81%AF%E4%BA%BA%E5%8A%A9%E3%81%91%E3%81%AE%E9%81%94/</guid>
      <description>&lt;p&gt;昨日、社内の公開勉強会であるMeets Professionalになんと！あの伊藤淳一さんにご登壇を頂きました。&lt;/p&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://n2i-engineer.connpass.com/event/271398/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;Qiita 1位のアウトプットの達人が語る、良質な技術記事を量産する秘訣 (2023/02/03 18:30〜)&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;n2i-engineer.connpass.com&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;MeetsProfessionalとは活躍されているプロフェッショナルな方々をお招きし、これからのキャリア、ビジネス論、仕事の考え方、組織論などを教えてもらう勉強会です。伊藤さんといえば、Qiita1位、チェリー本、読者数2000人越え&amp;hellip;とアウトプットの達人としてエンジニアでは知らない人はいないのではないかという方です。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ノンカフェインでも美味しかったオススメのお茶５選</title>
      <link>https://www.okb-shelf.work/entry/no__caffeine_teas/</link>
      <pubDate>Tue, 31 Jan 2023 09:04:55 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/no__caffeine_teas/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.okb-shelf.work/entry/no__caffeine_teas/20230115145237.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;紅茶や緑茶にはもちろん、カフェインが含まれています。&lt;/p&gt;
&lt;p&gt;元々はカフェインの含有量なんて気にしたことはなかったのですが、今は彼女と同棲をしており、彼女が生理の日にはカフェインの摂取量に気をつけています。&lt;/p&gt;</description>
    </item>
    <item>
      <title>いつでもどこでも仕事が出来る持ち運びガジェットポーチの中身を大公開</title>
      <link>https://www.okb-shelf.work/entry/carrying_gadget_bag/</link>
      <pubDate>Thu, 26 Jan 2023 09:19:05 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/carrying_gadget_bag/</guid>
      <description>&lt;p&gt;普段は家でリモートワークをしていますが、オフィスに出社したり、実家に帰ったり、外で作業したりと家以外の場所で仕事やPCで作業をすることが割とあったりします。&lt;/p&gt;</description>
    </item>
    <item>
      <title>4人以上のミーティングってほとんどいらない説</title>
      <link>https://www.okb-shelf.work/entry/max_humans_at_meeting/</link>
      <pubDate>Mon, 23 Jan 2023 09:25:38 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/max_humans_at_meeting/</guid>
      <description>&lt;p&gt;少し前にShopifyのCOO(最高執行責任者)のカズ(Kaz)さんが以下のツイートをされていました。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Meetings are a bug. Today, we shipped a fix to this bug at &lt;a href=&#34;https://twitter.com/Shopify?ref_src=twsrc%5Etfw&#34;&gt;@Shopify&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To start 2023, we&amp;rsquo;re cancelling all Shopify meetings with more than two people. Let&amp;rsquo;s give people back their maker time. Companies are for builders. Not managers.&lt;a href=&#34;https://t.co/aw7BJxwmC6&#34;&gt;https://t.co/aw7BJxwmC6&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>関数型言語とはどんな言語なのかChatGPTに聞いてみた</title>
      <link>https://www.okb-shelf.work/entry/what_functional_programing/</link>
      <pubDate>Fri, 20 Jan 2023 09:14:22 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/what_functional_programing/</guid>
      <description>&lt;p&gt;近年、ハードの発展に伴って関数型言語の名前をよく聞くようになりました。&lt;/p&gt;
&lt;p&gt;当時、何も知らなかった自分は「バグが出ないコードが書ける」という噂を聞きつけて、elixirというプログラミング言語に出会いました。その後、Haskellの学習を通じて関数型言語といわれる言語がどのような特徴を備えているのかを身をもって体験しました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>大学生の時にプログラミングのアルバイトをして良かったこと・悪かったこと</title>
      <link>https://www.okb-shelf.work/entry/programing_arbeit__merit_demerit/</link>
      <pubDate>Mon, 16 Jan 2023 09:24:41 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/programing_arbeit__merit_demerit/</guid>
      <description>&lt;p&gt;前回の記事で、大学生でも出来るプログラミングのアルバイトをする方法を紹介しました。&lt;/p&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://www.okb-shelf.work/entry/arbeit_for_programming&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-image&#34;&gt;
    &lt;img src=&#34;https://www.okb-shelf.work/entry/arbeit_for_programming/20230112221749.jpg&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;
  &lt;/span&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;【経験者は語る】大学生でも出来るプログラミングのアルバイトをする方法 - やわらかテック&lt;/span&gt;
    &lt;span class=&#34;linkcard-desc&#34;&gt;「プログラミングが出来るアルバイトを探してるんだけど、全然見つからない」 こんな話を昨日、友人から聞きました。 確かに、そのようなアルバイトをやりたくて実際には募集があまりないのが現状です。Yahoo知恵袋などでも同じような悩みを持った方が…&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;www.okb-shelf.work&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;本当は合わせて「自分が大学生の時にプログラミングのアルバイトをして良かったこと・悪かったこと」を紹介したかったのですが、記事が長くなりそうっだったので別の記事としてこの記事を書いています。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【経験者は語る】大学生でも出来るプログラミングのアルバイトをする方法</title>
      <link>https://www.okb-shelf.work/entry/arbeit_for_programming/</link>
      <pubDate>Sat, 14 Jan 2023 12:19:33 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/arbeit_for_programming/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;「プログラミングが出来るアルバイトを探してるんだけど、全然見つからない」&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;こんな話を昨日、友人から聞きました。&lt;/p&gt;
&lt;p&gt;確かに、そのようなアルバイトをやりたくて実際には募集があまりないのが現状です。Yahoo知恵袋などでも同じような悩みを持った方が多いようです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>異世界転生してエンジニア騎士とクエリの魔女のSQL問題を全問解いてみた感想</title>
      <link>https://www.okb-shelf.work/entry/paiza_de_isekai/</link>
      <pubDate>Thu, 12 Jan 2023 22:38:02 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/paiza_de_isekai/</guid>
      <description>&lt;p&gt;以前、SQLについて勉強したという話をしました。&lt;/p&gt;
&lt;p&gt;狙いは&lt;code&gt;ActiveRecord&lt;/code&gt;たるORMによってSQLを直接書く必要がないためRDBとのやりとりが隠蔽されており、自分の書いたコードから発行されるSQLがパフォーマンスの良いものか悪いものかが判断出来なかったからです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>モニター出力に対応した最高のtype-cケーブルを購入した</title>
      <link>https://www.okb-shelf.work/entry/display_typec_cable/</link>
      <pubDate>Mon, 09 Jan 2023 10:34:45 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/display_typec_cable/</guid>
      <description>&lt;p&gt;前回の記事で、ずっとごちゃついて気になっていたモニターの配線をtype-c出力対応の&lt;code&gt;BenQ GW2785TC&lt;/code&gt;を購入した結果、配線を圧倒的に排除することに成功しました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【書評】［試して理解］Linuxのしくみがちょうど良いレベル感で分かりやすかった</title>
      <link>https://www.okb-shelf.work/entry/review_howto_work_linux/</link>
      <pubDate>Fri, 06 Jan 2023 09:57:56 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/review_howto_work_linux/</guid>
      <description>&lt;p&gt;2023年になって、最初に読んだ本がこちらになります。&lt;/p&gt;
&lt;div class=&#34;amazon-card&#34;&gt;
  &lt;a href=&#34;https://www.amazon.co.jp/dp/B0BG8J5QJ1?tag=matuko110-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34; class=&#34;amazon-card-image&#34; target=&#34;_blank&#34; rel=&#34;sponsored noopener&#34;&gt;
    &lt;img src=&#34;https://m.media-amazon.com/images/I/51izRvQo69L._SL500_.jpg&#34; alt=&#34;［試して理解］Linuxのしくみ　―実験と図解で学ぶOS、仮想マシン、コンテナの基礎知識【増補改訂版】&#34; loading=&#34;lazy&#34;&gt;
  &lt;/a&gt;
  &lt;div class=&#34;amazon-card-info&#34;&gt;
    &lt;p class=&#34;amazon-card-title&#34;&gt;
      &lt;a href=&#34;https://www.amazon.co.jp/dp/B0BG8J5QJ1?tag=matuko110-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34; target=&#34;_blank&#34; rel=&#34;sponsored noopener&#34;&gt;［試して理解］Linuxのしくみ　―実験と図解で学ぶOS、仮想マシン、コンテナの基礎知識【増補改訂版】&lt;/a&gt;
    &lt;/p&gt;</description>
    </item>
    <item>
      <title>2022年に読んでよかった本・ベスト3</title>
      <link>https://www.okb-shelf.work/entry/2022_best_books/</link>
      <pubDate>Wed, 04 Jan 2023 18:05:42 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/2022_best_books/</guid>
      <description>&lt;p&gt;みなさん、あけましておめでとうございます。早いもので2023年がスタートしました。&lt;/p&gt;
&lt;p&gt;昨年度は本業のエンジニアリングや技術に関連する本からインテリア、植物、お料理と様々なジャンルの本を読みました。正確にカウントしていませんが、漫画も含めれば60冊程度は本を読んでいると思います。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【ええな〜コード】OSSのコードから学ぶ設定値(configure)の作り方</title>
      <link>https://www.okb-shelf.work/entry/howto_make_configure/</link>
      <pubDate>Thu, 29 Dec 2022 11:29:09 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/howto_make_configure/</guid>
      <description>&lt;p&gt;こちらは「ええな〜コード」の記念すべき第一本目の記事です。「ええな〜コード」とはOSSのコードから勉強・参考になる箇所を抜粋して、記事として紹介するという趣旨の不定期シリーズです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>type-c対応のモニター(BenQ GW2785TC)を買ったら配線が消え去った</title>
      <link>https://www.okb-shelf.work/entry/benq_new_monitor/</link>
      <pubDate>Tue, 27 Dec 2022 09:32:05 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/benq_new_monitor/</guid>
      <description>&lt;h2 id=&#34;ついに買いました&#34;&gt;ついに買いました&lt;/h2&gt;
&lt;p&gt;以前の記事でモニターの配置を紹介しつつ「実はtype-c対応の外部モニターが欲しい！」と記載しました。&lt;/p&gt;
&lt;p&gt;結局、記事を書いてたらめちゃくちゃ欲しくなってしまって、その日に衝動的に買ってしまいました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>日々、自分のベストプラクティスは変化している</title>
      <link>https://www.okb-shelf.work/entry/fluid_bestpractice/</link>
      <pubDate>Sat, 24 Dec 2022 14:53:50 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/fluid_bestpractice/</guid>
      <description>&lt;p&gt;ある日のこと、久しぶりに過去に自分が実装した機能のコードを見ていると「何だこのコードは&amp;hellip;」と悪い意味で驚愕しました。内容はデータベースから取ってきたデータをひたすら加工し、集計して最終的に画面に表示するというものです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Nature Remo mini 2をコンセントへ直挿しすることに成功した</title>
      <link>https://www.okb-shelf.work/entry/nature_remo_direct/</link>
      <pubDate>Wed, 21 Dec 2022 09:28:10 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/nature_remo_direct/</guid>
      <description>&lt;p&gt;師走のせいか、最近はよく買い物の衝動に駆られています。とはいっても服や趣味のものを買ったりではなく、相変わらず配線をスッキリするためのアイディアを試行錯誤しています。前回の記事でモニターの配置についての話と、type-cに対応した外部モニターが欲しいから買ったという話をしました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>リモートワーク3年目のエンジニアがたどり着いた最強のモニター配置</title>
      <link>https://www.okb-shelf.work/entry/monitor_position/</link>
      <pubDate>Sun, 18 Dec 2022 10:06:38 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/monitor_position/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.okb-shelf.work/entry/monitor_position/20221217132124.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;近年、多くの方がリモートワークをされているかと思います。自分もその一人で、WEBアプリケーションの開発を担当しているエンジニアですが、2019年にリモートワークへの移行が決定して、すでに3年の月日が経ちました。当時は自宅に職場と同等、それ以上の作業環境がなかったので、急いでデスクや、オフィスチェア、外部モニターなどを買い揃えました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>社内で毎日開催している輪読会を紹介して頂きました</title>
      <link>https://www.okb-shelf.work/entry/intro_reading_metting/</link>
      <pubDate>Thu, 15 Dec 2022 20:01:03 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/intro_reading_metting/</guid>
      <description>&lt;p&gt;自分が主催して、運営している社内輪読会についてインタビューを受けて、Wantedlyの記事にして頂きました。「運営している」と言いましたが、すでに形式化されて、参加メンバーがファシリテーターをしてくれるので、自分がやっていることはもうほとんどなかったりします。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【ActiveRecord】レコード数を取得するにはlengthやcountではなくsizeを使っておけば良さそう</title>
      <link>https://www.okb-shelf.work/entry/activerecord_count_record/</link>
      <pubDate>Thu, 08 Dec 2022 09:37:30 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/activerecord_count_record/</guid>
      <description>&lt;p&gt;単体テストのコードを見ていて、対象のテーブルに存在するレコード数を取得する際の記述が統一されていないことを発見しました。ある箇所では&lt;code&gt;User.all.size&lt;/code&gt;と記述されており、ある箇所では&lt;code&gt;User.count&lt;/code&gt;と記述されており、どの方法で取得するのが効率が良いのか気になったので調べてみました。僕としては&lt;code&gt;SELECT COUNT(*) FROM users&lt;/code&gt;というSQLが発行されてくれればOKです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>idの絞り込みにfindを使わずfind_by!を使っていたのはなぜなのか</title>
      <link>https://www.okb-shelf.work/entry/why_find_by/</link>
      <pubDate>Sat, 03 Dec 2022 11:42:24 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/why_find_by/</guid>
      <description>&lt;p&gt;コードレビューをしていていた日のこと。あるテーブル(users)から&lt;code&gt;id&lt;/code&gt;で絞り込んでレコードを1件取得する際に、以下のようなコードが頻出していることに気づきました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rspecのモック(double)はどのように作られているのか</title>
      <link>https://www.okb-shelf.work/entry/mock_how_to_work/</link>
      <pubDate>Fri, 02 Dec 2022 09:49:03 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/mock_how_to_work/</guid>
      <description>&lt;p&gt;普段の業務でrspecのモック機能には非常にお世話になっています。使い方は非常に簡単で、既存クラスに定義された関数の振る舞いを変更することが出来ます。
(※実際に既存クラスの定義が書き変わるわけではありません)&lt;/p&gt;</description>
    </item>
    <item>
      <title>vec型に対してiter関数からslice::Iterが返ってくるのはなぜか</title>
      <link>https://www.okb-shelf.work/entry/vec_iter/</link>
      <pubDate>Sun, 13 Nov 2022 20:23:18 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/vec_iter/</guid>
      <description>&lt;p&gt;&lt;code&gt;Rust&lt;/code&gt;の学習を進めています。前回に引き続き、イテレーターの章で気になった結果を発見しました。&lt;code&gt;vec&lt;/code&gt;型の値に対して&lt;code&gt;into_iter&lt;/code&gt;関数を実行した場合には&lt;code&gt;vec&lt;/code&gt;型に定義された構造体&lt;code&gt;vec::into_iter::IntoIter&lt;/code&gt;が返るのですが、&lt;code&gt;iter&lt;/code&gt;関数を実行すると&amp;hellip;&lt;code&gt;slice&lt;/code&gt;型に定義された構造体&lt;code&gt;slice::iter::Iter&lt;/code&gt;が返るのです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>未経験エンジニアにインフラエンジニアを勧めているのマジか</title>
      <link>https://www.okb-shelf.work/entry/beginner_infra/</link>
      <pubDate>Sat, 05 Nov 2022 21:34:54 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/beginner_infra/</guid>
      <description>&lt;h2 id=&#34;yahoo知恵袋にて回答中&#34;&gt;yahoo知恵袋にて回答中&lt;/h2&gt;
&lt;p&gt;ちょっとした気分転換や「誰かの役に立てれば」という思いで、不定期でyahoo知恵袋にて質問へ回答をしています。自分が回答しているのは、回答がない・少ない質問が主です。こういった質問は内容が複雑であったり、文章量が多い、答えを提示しにくいものが多いため、自分の中で挑戦と思い回答しています。&lt;/p&gt;</description>
    </item>
    <item>
      <title>リモートワークの一番のデメリットは「見て盗む」がやりづらいこと</title>
      <link>https://www.okb-shelf.work/entry/stolen_tech/</link>
      <pubDate>Sat, 29 Oct 2022 16:20:16 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/stolen_tech/</guid>
      <description>&lt;p&gt;自分は、いわゆるビジネス書というのはあまり読みませんが、立ち寄った書店でいつもは通らない棚をふらふらしていたところ、僕が尊敬してやまない落合博満さんの書籍「決断=実行」を見かけたので即購入しました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ActiveRecordにてSELECT * FROM table_nameを避ける方法について</title>
      <link>https://www.okb-shelf.work/entry/activerecord_select/</link>
      <pubDate>Fri, 28 Oct 2022 09:04:38 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/activerecord_select/</guid>
      <description>&lt;p&gt;ActiveRecordって本当に便利ですよね。SQLを隠蔽して、データベースへのCRUD操作をオブジェクトとメソッドで完結させることが出来ます。一例として、&lt;code&gt;users&lt;/code&gt;テーブルから権限(authority)が&lt;code&gt;admin&lt;/code&gt;のレコード一覧を取得する操作は以下のようになります。
(※分かり易さのため、authorityはstring型にしてあります)&lt;/p&gt;</description>
    </item>
    <item>
      <title>ActiveSupportのtravel_toの仕組みについて</title>
      <link>https://www.okb-shelf.work/entry/impl_travel_to/</link>
      <pubDate>Sun, 23 Oct 2022 17:25:28 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/impl_travel_to/</guid>
      <description>&lt;p&gt;&lt;code&gt;ActiveSupport&lt;/code&gt;には、時間を固定することが可能な便利な&lt;code&gt;travel_to&lt;/code&gt;という関数があります(よく単体テストでお世話になっています)。&lt;code&gt;travel_to&lt;/code&gt;を呼び出した後に&lt;code&gt;Time.now&lt;/code&gt;で現在時刻を取得してみると、何と&lt;code&gt;travel_to&lt;/code&gt;で指定した日時が取得されるではありませんか。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rails外でActiveSupportのtravel_toが使えない時の解決方法</title>
      <link>https://www.okb-shelf.work/entry/user_travel_to/</link>
      <pubDate>Sun, 23 Oct 2022 17:25:05 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/user_travel_to/</guid>
      <description>&lt;h2 id=&#34;前提条件&#34;&gt;前提条件&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Rails外でActiveSupportを使用している&lt;/li&gt;
&lt;li&gt;テストフレームワークにRspecを使用している&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;エラーについて&#34;&gt;エラーについて&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Rails&lt;/code&gt;ではなく&lt;code&gt;sinatra&lt;/code&gt;を使ったAPIを書いていて、時間停止の便利関数&lt;code&gt;travel_to&lt;/code&gt;を呼び出そうと思ったら以下のようなエラーが出て&lt;code&gt;ActiveSupport&lt;/code&gt;に定義されている&lt;code&gt;travel_to&lt;/code&gt;関数が使えませんでした。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【Rust】for文でiter関数を使う時に&amp;(参照)をなぜ書くのか</title>
      <link>https://www.okb-shelf.work/entry/rust_iter_dereference/</link>
      <pubDate>Mon, 17 Oct 2022 09:17:16 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/rust_iter_dereference/</guid>
      <description>&lt;p&gt;rustの公式ドキュメントである&lt;a href=&#34;https://doc.rust-jp.rs/book-ja/ch10-01-syntax.html&#34;&gt;The Rust Programming Language 日本語版&lt;/a&gt;を読み進めていると、第10章のジェネリックなデータ型の章で、以下のコードが記載されていました。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-rust&#34; data-lang=&#34;rust&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;fn&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;largest_i32&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;list&lt;/span&gt;: &lt;span class=&#34;kp&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;i32&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;-&amp;gt; &lt;span class=&#34;kt&#34;&gt;i32&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;mut&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;largest&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;in&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;iter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;largest&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;largest&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;largest&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;処理内容はシンプルで引数に与えられたスライスから最大値を線形探索して返すというものです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>OSSのコードを読んでたらコードの書き方が変わった</title>
      <link>https://www.okb-shelf.work/entry/reading_oss/</link>
      <pubDate>Mon, 10 Oct 2022 17:19:39 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/reading_oss/</guid>
      <description>&lt;p&gt;最近はRubyとRubyOnRailsを使って仕事をしています。RubyやRailsは日本語の情報量が特に多く、やりたいことの多くはGoogleで調べると既に誰かがやっていたり、ライブラリがあったりと誰かが作ったありがたい&amp;hellip;コードを使わせて頂くことがよくあります。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rustの標準でプライベートとする考え方に感銘を受けた</title>
      <link>https://www.okb-shelf.work/entry/rust_default_private/</link>
      <pubDate>Sat, 10 Sep 2022 13:50:03 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/rust_default_private/</guid>
      <description>&lt;h2 id=&#34;rustを学び中のこと&#34;&gt;Rustを学び中のこと&amp;hellip;&lt;/h2&gt;
&lt;p&gt;最近、ぼちぼちをRustを書き始めました。とはいったものの、まだFizzbuzzを見ずに書ける程度で理解はまだまだの状態です。&lt;/p&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://doc.rust-jp.rs/book-ja/title-page.html&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;The Rust Programming Language 日本語版 - The Rust Programming Language 日本語版&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;doc.rust-jp.rs&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;上記の公式コミュニティが運営しているドキュメントを見ながら学習を進めているのですが、非常に驚いたことがありました。それはRustは関数、モジュール、構造体の定義など、あらゆるものを標準でプライベートにしている点です。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【書評】メンタルが弱い人こそ「いい人戦略」を読むべきだと思った</title>
      <link>https://www.okb-shelf.work/entry/2022/08/29/good_natured_person/</link>
      <pubDate>Mon, 29 Aug 2022 23:22:15 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/2022/08/29/good_natured_person/</guid>
      <description>&lt;p&gt;こちらの書籍は現在(2023年11月)、Amazonプライムの会員であれば無料で読むことが出来ます。以下のリンクからぜひ、ご一読ください。
プライム会員ではない方は&lt;a href=&#34;https://www.amazon.co.jp/amazonprime?is-secure=true&amp;amp;&#34;&gt;こちら&lt;/a&gt;から。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【書評】「リーダーの作法」は当たり前のことを当たり前にやろうという本だった</title>
      <link>https://www.okb-shelf.work/entry/the_art_of_leadership/</link>
      <pubDate>Tue, 16 Aug 2022 09:57:43 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/the_art_of_leadership/</guid>
      <description>&lt;h2 id=&#34;リーダーの作法ってどんな本&#34;&gt;リーダーの作法ってどんな本&lt;/h2&gt;
&lt;p&gt;2022年6月にオライリーから「リーダーの作法 ささいなことをていねいに」という書籍が発売されました。表紙はミツバチです。&lt;/p&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://www.oreilly.co.jp/books/9784873119892/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;リーダーの作法&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;www.oreilly.co.jp&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;元々、海外では「The Art of Leadership small things, done well」という名前で発売されていた書籍の訳書です。Netscape-&amp;gt;Apple-&amp;gt;Slackでエンジニアのマネジメントを担当したロップさんが自身の経験から得た30のエッセンスをまとめた書籍です。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rustのトレイト(trait)に衝撃を受けた</title>
      <link>https://www.okb-shelf.work/entry/rust_trait/</link>
      <pubDate>Thu, 04 Aug 2022 09:38:34 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/rust_trait/</guid>
      <description>&lt;h2 id=&#34;トレイトtraitすごい&#34;&gt;トレイト(trait)すごい&lt;/h2&gt;
&lt;p&gt;「コンセプトから理解するRust」を読んで衝撃を受けました&amp;hellip;。&lt;/p&gt;
&lt;p&gt;トレイト(trait)は今まで自分が出会ったことがない概念です。&lt;/p&gt;
&lt;div class=&#34;amazon-card&#34;&gt;
  &lt;a href=&#34;https://www.amazon.co.jp/dp/B09RQGMYKZ?tag=matuko110-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34; class=&#34;amazon-card-image&#34; target=&#34;_blank&#34; rel=&#34;sponsored noopener&#34;&gt;
    &lt;img src=&#34;https://m.media-amazon.com/images/I/51CTnaTcJtL._SL500_.jpg&#34; alt=&#34;コンセプトから理解するRust&#34; loading=&#34;lazy&#34;&gt;
  &lt;/a&gt;
  &lt;div class=&#34;amazon-card-info&#34;&gt;
    &lt;p class=&#34;amazon-card-title&#34;&gt;
      &lt;a href=&#34;https://www.amazon.co.jp/dp/B09RQGMYKZ?tag=matuko110-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34; target=&#34;_blank&#34; rel=&#34;sponsored noopener&#34;&gt;コンセプトから理解するRust&lt;/a&gt;
    &lt;/p&gt;</description>
    </item>
    <item>
      <title>そもそも疑問に思うことがないという事実</title>
      <link>https://www.okb-shelf.work/entry/no_question/</link>
      <pubDate>Wed, 01 Jun 2022 21:52:02 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/no_question/</guid>
      <description>&lt;h2 id=&#34;心理的安全性の重要性について知る&#34;&gt;心理的安全性の重要性について知る&lt;/h2&gt;
&lt;p&gt;日々の開発の中で、お互いに新機能に対して意見を言い合うことなどがあるかと思いますが、自分が所属するチームではなかなか、意見が出ずに意見交流が発生しないことが多々ありました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>M1mac&#43;homebrewでpostgresql.confがある場所</title>
      <link>https://www.okb-shelf.work/entry/where_psql_conf/</link>
      <pubDate>Wed, 01 Jun 2022 21:09:21 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/where_psql_conf/</guid>
      <description>&lt;h2 id=&#34;探してみるも見つからず&#34;&gt;探してみるも見つからず&lt;/h2&gt;
&lt;p&gt;SQLの統計情報の記録の設定しようと思い、以下を参考に&lt;code&gt;postgresql.conf&lt;/code&gt;を探してみるも見つからず&amp;hellip;&lt;/p&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://stackoverflow.com/questions/33015471/cannot-find-pg-hba-conf-and-postgreql-conf-file-on-os-x&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;Cannot find pg_hba.conf and postgreql.conf file on OS X?&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;stackoverflow.com&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;&lt;code&gt;homebrew&lt;/code&gt;を使っているところは同じようだけど、どうやらOSが違う、いやM1macなのが原因かと思い調べているとやはりそうだった。&lt;/p&gt;</description>
    </item>
    <item>
      <title>postgresqlにおけるテーブルスキャンの実行例</title>
      <link>https://www.okb-shelf.work/entry/table_scan_eg/</link>
      <pubDate>Mon, 30 May 2022 11:12:30 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/table_scan_eg/</guid>
      <description>&lt;h2 id=&#34;テーブルスキャン&#34;&gt;テーブルスキャン&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;postgresql&lt;/code&gt;では、テーブルスキャンに該当する演算子が5つあります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Seq scan: インデックスを使用せず、全件を検索&lt;/li&gt;
&lt;li&gt;Index scan: インデックスを使用してスキャン&lt;/li&gt;
&lt;li&gt;Bitmap scan: ビットマップを使用してスキャン&lt;/li&gt;
&lt;li&gt;Index only scan: 問い合わせがインデックスに含まれるカラムのみで完結する場合のスキャン&lt;/li&gt;
&lt;li&gt;Tid scan: 検索条件がタプルID(ctid)のスキャン&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以下より引用&lt;/p&gt;</description>
    </item>
    <item>
      <title>【SQL】結合によって結合元テーブルの行数が増えるケースについて</title>
      <link>https://www.okb-shelf.work/entry/join_increase_record/</link>
      <pubDate>Sun, 22 May 2022 12:04:06 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/join_increase_record/</guid>
      <description>&lt;h2 id=&#34;質問サイトを巡回中に発見&#34;&gt;質問サイトを巡回中に発見&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;LEFT JOIN&lt;/code&gt;を実行した際に、&lt;code&gt;NULL&lt;/code&gt;の値を持つレコードが増えるケースについては認知していましたが、ただの&lt;code&gt;JOIN&lt;/code&gt;の時にもレコード数が増えることを経験しました。
SQLに詳しい方から見れば、当たり前でしょと思われるかもしれませんが、遭遇したのが初めて、例を見かけなかったので記事にしてみました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>スッキリわかるSQL第3版の発売に合わせて手元PCで実行できるようになっていた</title>
      <link>https://www.okb-shelf.work/entry/able_const_beginnersql/</link>
      <pubDate>Mon, 16 May 2022 09:34:51 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/able_const_beginnersql/</guid>
      <description>&lt;h2 id=&#34;sqlの習得にはスッキリわかるsqlでしょ&#34;&gt;SQLの習得にはスッキリわかるSQLでしょ&lt;/h2&gt;
&lt;p&gt;私がSQLが全く分からなかった時に非常にお世話になったのがインプレスから出版されている「スッキリわかるSQL入門」という書籍です。&lt;/p&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://www.okb-shelf.work/entry/why_learn_database&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-image&#34;&gt;
    &lt;img src=&#34;https://www.okb-shelf.work/entry/why_learn_database/20220320202101.jpg&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;
  &lt;/span&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;モチベーションがなくなった結果、データベースについて2ヶ月間勉強した - やわらかテック&lt;/span&gt;
    &lt;span class=&#34;linkcard-desc&#34;&gt;概要 新卒4年目にして業務の慢性化、スキルアップの実感の無さからモチベーションが低下した 得た知識が業務で高確率で役に立つ知識(投資効果の高い)を得ようと思い立つ 投資効果の高いスキルはほぼ100%どのプロジェクトでも使われるデータベースだ…&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;www.okb-shelf.work&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;対話形式で図やイラストが多く、SQLをほとんど全く知らなかった自分でもスラスラと読み進めることが出来ました。第2版では各章に練習問題が。最終章で練習問題が4つの大問に分けて222問も用意されており、覚えた内容を実践することが出来ます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>「恐れのない組織」はリーダー必読の本だった</title>
      <link>https://www.okb-shelf.work/entry/fearless_team/</link>
      <pubDate>Tue, 10 May 2022 09:35:11 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/fearless_team/</guid>
      <description>&lt;h2 id=&#34;心理的安全性を求めて&#34;&gt;心理的安全性を求めて&lt;/h2&gt;
&lt;p&gt;自分は開発チームのマネージャー(EM)的なポジションをやっていた時に「何か意見がありますか」とか「質問はありますか」とメンバーに投げかける場面がよくありました。しかしながら、メンバーからは沈黙が返ってくるだけで、自分が期待するような議論や意見の交換は発生しませんでした。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pythonからはじめるアルゴリズムトレードはトレード入門者向けの本ではない</title>
      <link>https://www.okb-shelf.work/entry/python_trading/</link>
      <pubDate>Sat, 07 May 2022 22:19:32 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/python_trading/</guid>
      <description>&lt;h2 id=&#34;衝動買いをした&#34;&gt;衝動買いをした&lt;/h2&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.okb-shelf.work/entry/python_trading/20220503143848.jpg&#34;&gt;&lt;/p&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://www.oreilly.co.jp/books/9784873119793/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;Pythonからはじめるアルゴリズムトレード&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;www.oreilly.co.jp&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;著者作成のレポジトリ&lt;/p&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://github.com/yhilpisch/py4at&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;GitHub - yhilpisch/py4at: Jupyter Notebooks and code for the book Python for Algorithmic Trading (O&amp;#39;Reilly) by Yves Hilpisch.&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;github.com&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;2022年の4月のNewBooksに記載されており、前から気になっていたPythonからはじめるアルゴリズムトレード。立ち寄った書店に置いてあったので、衝動買いをした。&lt;/p&gt;</description>
    </item>
    <item>
      <title>pandasでの保存形式はcsv、h5、pklでどれが良いのか</title>
      <link>https://www.okb-shelf.work/entry/is_best_h5/</link>
      <pubDate>Thu, 05 May 2022 21:02:11 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/is_best_h5/</guid>
      <description>&lt;h2 id=&#34;h5というファイル形式があることを知る&#34;&gt;h5というファイル形式があることを知る&lt;/h2&gt;
&lt;p&gt;オライリーから発売されたpythonではじめるアルゴリズムトレードを読み進めていた所、金融の取引データを&lt;code&gt;pandas.DataFrame&lt;/code&gt;から&lt;code&gt;h5&lt;/code&gt;という形式のファイルに出力していました。&lt;code&gt;h5&lt;/code&gt;というファイルは階層的データを扱うためのデータ形式であり、ディレクトリのように階層を経由して値へのアクセスが可能なようです。5というの現在の最新バージョンが5系であるためでそうで、過去にはh4が使用されていたのだそう。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【2022年版】DB-ENGINESよりデータベースの人気ランキングを見てみる</title>
      <link>https://www.okb-shelf.work/entry/db_ranking/</link>
      <pubDate>Tue, 03 May 2022 10:45:14 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/db_ranking/</guid>
      <description>&lt;p&gt;海外の&lt;a href=&#34;https://db-engines.com/en/ranking&#34;&gt;DB-ENGINES&lt;/a&gt;というサイトで紹介されています。以下の画像は2022年5月度の集計結果です。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.okb-shelf.work/entry/db_ranking/20220502212424.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;データベースランキング&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Oracle&lt;/li&gt;
&lt;li&gt;MySQL&lt;/li&gt;
&lt;li&gt;Microsoft SQL Server&lt;/li&gt;
&lt;li&gt;PostgreSql&lt;/li&gt;
&lt;li&gt;MongoDB&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;1位から5位まではランキングにほとんど変更がないようで、ほとんどがRDBです。自分はWEBメインでPostgreSqlをずっと使っていたのですが、MySQLよりもランクが下だったのは驚きました。NoSQLではMongoDBがランクイン。Redisも6位に位置付けています。とはいえ、RDBが現在も確固たる立ち位置を確立していることが分かります。&lt;/p&gt;</description>
    </item>
    <item>
      <title>pythonでブルームフィルターを作って覚える</title>
      <link>https://www.okb-shelf.work/entry/what_bloom_filter/</link>
      <pubDate>Sun, 01 May 2022 12:48:45 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/what_bloom_filter/</guid>
      <description>&lt;h2 id=&#34;ブルームフィルターbloom-filterとは&#34;&gt;ブルームフィルター(Bloom Filter)とは&lt;/h2&gt;
&lt;p&gt;ブルームフィルターというのは1970年にブルームさんが作った確率的データ構造と呼ばれるデータ構造の1つです。&lt;/p&gt;
&lt;p&gt;データ構造というのは&lt;/p&gt;</description>
    </item>
    <item>
      <title>【エンジニア教育の壁】ティーチングとコーチングの違いを教えてもらった</title>
      <link>https://www.okb-shelf.work/entry/teaching_coaching/</link>
      <pubDate>Sat, 26 Mar 2022 22:56:10 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/teaching_coaching/</guid>
      <description>&lt;h2 id=&#34;どこまで教えてあげれば良いのか問題&#34;&gt;どこまで教えてあげれば良いのか問題&lt;/h2&gt;
&lt;p&gt;教育というのは非常に難しく、私が担当したエンジニア教育についても全く同じことが言えます。&lt;/p&gt;
&lt;p&gt;その一例として「どこまで教えてあげれば良いのか分からない」という問題があります。自分の中では答えがあるものの、相手が分かっていない時に、「ここはこうすると&amp;hellip;.」とか「そうするとこういう問題が起きてくるから&amp;hellip;こうしないと」というアドバイスをすることで相手の成長、やる気を奪ってしまう可能性があります。&lt;/p&gt;</description>
    </item>
    <item>
      <title>初めてOSSにPRを出したらマージされた</title>
      <link>https://www.okb-shelf.work/entry/first_pr_to_oss/</link>
      <pubDate>Wed, 23 Mar 2022 09:39:01 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/first_pr_to_oss/</guid>
      <description>&lt;h2 id=&#34;githubトレンドを徘徊中のこと&#34;&gt;Githubトレンドを徘徊中のこと&lt;/h2&gt;
&lt;p&gt;技術トレンドを追うために定期的にGithubのトレンドを月単位で集計されたものを見ています。&lt;/p&gt;
&lt;p&gt;最近、データベースにお熱なのですが、何やら「sqlmap」という面白そうなレポジトリを発見しました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>モチベーションがなくなった結果、データベースについて2ヶ月間勉強した</title>
      <link>https://www.okb-shelf.work/entry/why_learn_database/</link>
      <pubDate>Mon, 21 Mar 2022 22:35:50 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/why_learn_database/</guid>
      <description>&lt;h2 id=&#34;概要&#34;&gt;概要&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;新卒4年目にして業務の慢性化、スキルアップの実感の無さからモチベーションが低下した&lt;/li&gt;
&lt;li&gt;得た知識が業務で高確率で役に立つ知識(投資効果の高い)を得ようと思い立つ&lt;/li&gt;
&lt;li&gt;投資効果の高いスキルはほぼ100%どのプロジェクトでも使われるデータベースだと考えた&lt;/li&gt;
&lt;li&gt;ロードマップを作って5冊の書籍を読み進めた&lt;/li&gt;
&lt;li&gt;理論、知識を身に付けたが実践が少なすぎる。もっと実践をせねば&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;新卒4年目にして何をやりたいのか分からなくなった&#34;&gt;新卒4年目にして何をやりたいのか分からなくなった&lt;/h2&gt;
&lt;p&gt;今年でエンジニアになって4年目になりました(学生時のインターンを含めると6年目)。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【悪質な代理店を見分ける】インターネット契約時に確認すべき3つのこと</title>
      <link>https://www.okb-shelf.work/entry/check_points_contract_internet/</link>
      <pubDate>Thu, 18 Nov 2021 09:58:56 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/check_points_contract_internet/</guid>
      <description>&lt;h2 id=&#34;この記事の概要&#34;&gt;この記事の概要📝&lt;/h2&gt;
&lt;p&gt;&lt;img alt=&#34;f&amp;#x1f194;takamizawa46:20210920103317p:plain&#34; loading=&#34;lazy&#34; src=&#34;https://www.okb-shelf.work/entry/check_points_contract_internet/20210920103317.png&#34;&gt; 新規でインターネットを契約する時は、今から申し込みしようとしているサイトが信頼できるサイトかどうか必ず確認することをオススメします。必ず確認するべき点は3つあります。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【新卒でベンチャーを考えている人向け】ベンチャー企業で5年働いて辛かったこと7つ</title>
      <link>https://www.okb-shelf.work/entry/bad_points_venture/</link>
      <pubDate>Thu, 18 Nov 2021 09:53:26 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/bad_points_venture/</guid>
      <description>&lt;h2 id=&#34;この記事の概要&#34;&gt;この記事の概要✒️&lt;/h2&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.okb-shelf.work/entry/bad_points_venture/20210919222712.png&#34;&gt;
新卒で大手企業に入社するか、ベンチャー企業に入社するか迷っている方がそこそこ多いようで、過去にも何度か相談に乗ったことがあります。&lt;/p&gt;
&lt;p&gt;自分は新卒でITのベンチャー企業に就職しました。今年で社員としては3年目になりましたが、実態は大学3年生の時からほぼ社員さんと同じ仕事をしていたので、合計勤務年数は5年になります。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【JavaScript】setIntervalでawaitをする方法</title>
      <link>https://www.okb-shelf.work/entry/able_await_in_interval/</link>
      <pubDate>Thu, 18 Nov 2021 09:28:59 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/able_await_in_interval/</guid>
      <description>&lt;h2 id=&#34;setintervalでawaitが効かない&#34;&gt;setIntervalでawaitが効かない&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;setInterval&lt;/code&gt;は&lt;code&gt;Promise&lt;/code&gt;のオブジェクトではないため、&lt;code&gt;await&lt;/code&gt;させて実行終了を待つことが出来ません。例えば、3秒毎にカウントを1ずつ増やしていく処理を&lt;code&gt;setInterval&lt;/code&gt;で実装をすると以下のようになります。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【JavaScript】連番の配列を生成する4つの方法と速度比較</title>
      <link>https://www.okb-shelf.work/entry/range_list_in_javascript/</link>
      <pubDate>Thu, 18 Nov 2021 09:25:11 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/range_list_in_javascript/</guid>
      <description>&lt;h2 id=&#34;連番の生成に関して&#34;&gt;連番の生成に関して&lt;/h2&gt;
&lt;p&gt;意外と使用する頻度が高かったりします。他言語であればRange(eg: 1..10)のようなClassやデータ構造が定義されており、簡単に連番の配列を作成することが出来ます。しかし、&lt;code&gt;JavaScript&lt;/code&gt; には連番の配列を簡単に生成するための機能が提供されていないので、一工夫してあげる必要があります。色々と試して結果、4つの方法を思いつきました。内、1つは&lt;code&gt;Qiita&lt;/code&gt;で紹介されたいた書き方なので元記事のURLを貼っておきます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【2022/7月更新】WEB開発エンジニアがM1 MacbookAirを購入して使い続けた感想</title>
      <link>https://www.okb-shelf.work/entry/review_m1_by_engineer/</link>
      <pubDate>Thu, 18 Nov 2021 09:20:49 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/review_m1_by_engineer/</guid>
      <description>&lt;h2 id=&#34;m1-macbookを買うかどうか&#34;&gt;M1 Macbookを買うかどうか&lt;/h2&gt;
&lt;p&gt;4年前にずっと愛用していたWindowsからMacbookに乗り換えました。当時、アルバイトしていた開発会社がMacbookをメインに使っていたので、その流れに乗ったという感じです。早いものでMacbookを使い始めてから4年の歳月が流れておりました。元々、自分が使っていたMacbookは2016年のMacbookProでした。詳しいスペックについては省きますが、当時、なけなしのお金をかき集めて買った思い出ある一台です。&lt;/p&gt;</description>
    </item>
    <item>
      <title>あえて無言でいたら怒っていると勘違いされた</title>
      <link>https://www.okb-shelf.work/entry/are_you_angry/</link>
      <pubDate>Fri, 05 Nov 2021 10:23:37 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/are_you_angry/</guid>
      <description>&lt;h2 id=&#34;この記事の概要&#34;&gt;この記事の概要📖&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[前回の記事] 沈黙が怖くて、自分からいつも喋り出してしまっていた&lt;/li&gt;
&lt;li&gt;自分ばかりが喋ることでメンバーの意欲をそいでしまっていた&lt;/li&gt;
&lt;li&gt;外部メンターの方からのアド&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%D0%A5%A4%A5%B9&#34;&gt;バイス&lt;/a&gt;を元に「あえて無言でいるウィーク」を行なった&lt;/li&gt;
&lt;li&gt;メンバーの意欲を引き出すことが出来たが、怒っていると勘違いされてしまった&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;あえて沈黙でいることが重要だと気づいた&#34;&gt;あえて沈黙でいることが重要だと気づいた🙇‍♂️&lt;/h2&gt;
&lt;p&gt;前回の記事で、「あえて沈黙でいることが重要」だということに気づいたという話をしました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【Elixirで実装】関数型言語でカプセル化をする方法</title>
      <link>https://www.okb-shelf.work/entry/kapsel_in_functional_programing/</link>
      <pubDate>Wed, 03 Nov 2021 12:04:53 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/kapsel_in_functional_programing/</guid>
      <description>&lt;h2 id=&#34;この記事の概要&#34;&gt;この記事の概要📖&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%B4%D8%BF%F4%B7%BF%B8%C0%B8%EC&#34;&gt;関数型言語&lt;/a&gt;の多くでは値は束縛されるため、不変である&lt;/li&gt;
&lt;li&gt;値を再束縛(≒再代入)することが出来ないため、値を更新する際には新たなデータを作る必要がある&lt;/li&gt;
&lt;li&gt;更新の度に新たなデータを作ることで、&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%B4%D8%BF%F4%B7%BF%B8%C0%B8%EC&#34;&gt;関数型言語&lt;/a&gt;でも&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%AB%A5%D7%A5%BB%A5%EB%B2%BD&#34;&gt;カプセル化&lt;/a&gt;をすることが可能になる&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;関数型言語では値は不変&#34;&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%B4%D8%BF%F4%B7%BF%B8%C0%B8%EC&#34;&gt;関数型言語&lt;/a&gt;では値は不変⏳&lt;/h2&gt;
&lt;p&gt;多くの&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%B4%D8%BF%F4%B7%BF%B8%C0%B8%EC&#34;&gt;関数型言語&lt;/a&gt;では値は不変であり、一度、宣言した変数に束縛されている値を変更することが出来ません。&lt;/p&gt;</description>
    </item>
    <item>
      <title>数学全然わからないけどElixirでEitherを作ってみる</title>
      <link>https://www.okb-shelf.work/entry/original_either/</link>
      <pubDate>Sat, 30 Oct 2021 23:39:13 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/original_either/</guid>
      <description>&lt;h2 id=&#34;概要&#34;&gt;概要📖&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Haskell&lt;/code&gt;ではエラーが発生した際に対応するために&lt;code&gt;Either&lt;/code&gt;という&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%E2%A5%CA%A5%C9&#34;&gt;モナド&lt;/a&gt;を使う&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Either&lt;/code&gt;は&lt;code&gt;Left(エラー時)&lt;/code&gt;と&lt;code&gt;Right(正常時)&lt;/code&gt;の2つの値を持ち、それぞれ別の型の値を受け取ることが可能(&lt;code&gt;Either = Left a | Right b&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Left&lt;/code&gt;には&lt;code&gt;String&lt;/code&gt;がよく用いられ、エラーメッセージを格納することが多い&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Either&lt;/code&gt;が必要なのは呼び出し元に、なぜエラーになったのかを伝えるため&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Maybe&lt;/code&gt;ではエラー、値なしの理由を呼び出しもとに伝えることが出来ない&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Elixir&lt;/code&gt;で実装するには&lt;code&gt;Tuple&lt;/code&gt;と&lt;code&gt;Atom&lt;/code&gt;を使うのが良さげ&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;前回までのあらすじ&#34;&gt;前回までのあらすじ📖&lt;/h2&gt;
&lt;p&gt;「入門&lt;a href=&#34;http://d.hatena.ne.jp/keyword/Haskell&#34;&gt;Haskell&lt;/a&gt;プログラミング」を読み進めながら、理解を深めるために&lt;code&gt;Elixir&lt;/code&gt;を使って&lt;code&gt;Haskell&lt;/code&gt;の&lt;code&gt;Functor&lt;/code&gt;と&lt;code&gt;Applicative&lt;/code&gt;, &lt;code&gt;Monad&lt;/code&gt;を実装しました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>あえて無言でいることが重要だと気づいた</title>
      <link>https://www.okb-shelf.work/entry/keep_silence/</link>
      <pubDate>Thu, 28 Oct 2021 10:55:41 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/keep_silence/</guid>
      <description>&lt;h2 id=&#34;この記事の概要&#34;&gt;この記事の概要📖&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;バグを減らすためにモブプログラミング(3人以上で1チームを作って開発を進める手法)を導入した&lt;/li&gt;
&lt;li&gt;積極的にアイディアや意見を出すメンバーとあまり喋らないメンバーに分かれてしまった&lt;/li&gt;
&lt;li&gt;沈黙の時間が訪れた時に「気まずいなぁ&amp;hellip;」と思い、自分がいつも話し出してしまっていた&lt;/li&gt;
&lt;li&gt;沈黙の時間に何かを考えていたりするので、いつも自分が話し出してしまうことで何とかしてくれるという雰囲気を作ってしまっていた&lt;/li&gt;
&lt;li&gt;あえて「無言」になることでメンバーの自主性を高めて、活性化することが出来る&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;モブプログラミングの導入が決定&#34;&gt;モブプログラミングの導入が決定🙆‍♂️&lt;/h2&gt;
&lt;p&gt;私が現在、所属している企業では運営しているプロダクトのアプリケーションの仕様がかなり複雑になり、バグが続出してしまいました。そのため、品質管理(QA)にもかなり力を入れています。&lt;/p&gt;</description>
    </item>
    <item>
      <title>型のある言語は一度は経験するべきだと思った出来事が起きた</title>
      <link>https://www.okb-shelf.work/entry/static_launage_ma/</link>
      <pubDate>Sat, 18 Sep 2021 10:26:08 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/static_launage_ma/</guid>
      <description>&lt;h2 id=&#34;型があるのが良いのか&#34;&gt;型があるのが良いのか🤔&lt;/h2&gt;
&lt;p&gt;この話題は度々、議題に上がり、多くの人が討論をしています。&lt;/p&gt;
&lt;p&gt;個人的な近年の傾向としては、&lt;code&gt;golang&lt;/code&gt;や&lt;code&gt;TypeScrpit&lt;/code&gt;の流行、&lt;code&gt;Python&lt;/code&gt;や&lt;code&gt;Ruby&lt;/code&gt;が型&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%A2%A5%CE%A5%C6%A1%BC%A5%B7%A5%E7%A5%F3&#34;&gt;アノテーション&lt;/a&gt;が導入されるなど、型のある言語(静的型付け言語)への需要が高まっているように思います。それ以前は&lt;code&gt;Ruby&lt;/code&gt;や&lt;code&gt;Python&lt;/code&gt;のような型のない言語(動的型付け言語)がトレンドだったと認識しています。&lt;/p&gt;</description>
    </item>
    <item>
      <title>数学全然わからないけどElixirでMonadを作ってみる</title>
      <link>https://www.okb-shelf.work/entry/original_monad/</link>
      <pubDate>Tue, 14 Sep 2021 21:59:28 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/original_monad/</guid>
      <description>&lt;h2 id=&#34;前回までのあらすじ&#34;&gt;前回までのあらすじ📖&lt;/h2&gt;
&lt;p&gt;「入門&lt;a href=&#34;http://d.hatena.ne.jp/keyword/Haskell&#34;&gt;Haskell&lt;/a&gt;プログラミング」を読み進めながら、理解を深めるために&lt;code&gt;Elixir&lt;/code&gt;を使って&lt;code&gt;Haskell&lt;/code&gt;の&lt;code&gt;Functor&lt;/code&gt;と&lt;code&gt;Applicative&lt;/code&gt;を再現してみました。&lt;/p&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://www.okb-shelf.work/entry/original_functor&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-image&#34;&gt;
    &lt;img src=&#34;https://www.okb-shelf.work/entry/original_functor/20210828085458.png&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;
  &lt;/span&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;数学全然わからないけどElixirでFunctorを作ってみる - やわらかテック&lt;/span&gt;
    &lt;span class=&#34;linkcard-desc&#34;&gt;きっかけ😲 最近、「入門 Haskell プログラミング」という書籍を読み進めています。 入門Haskellプログラミング 作者: Will Kurt 翔泳社 Amazon 毎日１章ずつと非常にスローペースではありますが、第27章の まで辿…&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;www.okb-shelf.work&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;a class=&#34;linkcard&#34; href=&#34;https://www.okb-shelf.work/entry/original_applicative&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-image&#34;&gt;
    &lt;img src=&#34;https://www.okb-shelf.work/entry/original_applicative/20210828085458.png&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;
  &lt;/span&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;数学全然わからないけどElixirでApplicativeを作ってみる - やわらかテック&lt;/span&gt;
    &lt;span class=&#34;linkcard-desc&#34;&gt;前回のあらすじ📖 www.okb-shelf.work 「入門 Haskell プログラミング」という書籍を読み続けながら、理解を深めるために自分で を実装してみました。今回は、 に引き続き、 に挑戦してみます。 先に結論ですが、 で を作…&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;www.okb-shelf.work&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;&lt;code&gt;Functor&lt;/code&gt;は上手く再現出来ましたが、&lt;code&gt;Applicative&lt;/code&gt;はデフォルトで部分適応されるという&lt;code&gt;Haskell&lt;/code&gt;の仕様がなければ、完全再現することが出来ず、カリー化した関数で近しいものを再現しました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【読書レビュー】「岩田さん 岩田聡はこんなことを話していた。」を読みました</title>
      <link>https://www.okb-shelf.work/entry/read_iwata_san/</link>
      <pubDate>Mon, 13 Sep 2021 08:42:11 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/read_iwata_san/</guid>
      <description>&lt;h2 id=&#34;どんな本なのか&#34;&gt;どんな本なのか📚&lt;/h2&gt;
&lt;p&gt;タイトルにもある「岩田さん」とは、とある人物の実名です。&lt;/p&gt;
&lt;p&gt;「岩田 聡」さんは皆さんがご存知の&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%C7%A4%C5%B7%C6%B2&#34;&gt;任天堂&lt;/a&gt;(Nintendo)の社長をされていた方で、我々がよく知る「&lt;a href=&#34;http://d.hatena.ne.jp/keyword/Nintendo%20DS&#34;&gt;Nintendo DS&lt;/a&gt;」や「Nintendo &lt;a href=&#34;http://d.hatena.ne.jp/keyword/Wii&#34;&gt;Wii&lt;/a&gt;」「&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%AB%A1%BC%A5%D3%A5%A3%A5%B7%A5%EA%A1%BC%A5%BA&#34;&gt;カービィシリーズ&lt;/a&gt;」「スマッシュブラザース」など、数多くの名作をこの世に生み出しました。&lt;/p&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://ja.wikipedia.org/wiki/%E5%B2%A9%E7%94%B0%E8%81%A1&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;岩田聡 - Wikipedia&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;ja.wikipedia.org&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;残念ながら、岩田さんは2015年に亡くなってしまいました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>数学全然わからないけどElixirでApplicativeを作ってみる</title>
      <link>https://www.okb-shelf.work/entry/original_applicative/</link>
      <pubDate>Fri, 10 Sep 2021 11:11:42 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/original_applicative/</guid>
      <description>&lt;h2 id=&#34;前回のあらすじ&#34;&gt;前回のあらすじ📖&lt;/h2&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://www.okb-shelf.work/entry/original_functor&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-image&#34;&gt;
    &lt;img src=&#34;https://www.okb-shelf.work/entry/original_functor/20210828085458.png&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;
  &lt;/span&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;数学全然わからないけどElixirでFunctorを作ってみる - やわらかテック&lt;/span&gt;
    &lt;span class=&#34;linkcard-desc&#34;&gt;きっかけ😲 最近、「入門 Haskell プログラミング」という書籍を読み進めています。 入門Haskellプログラミング 作者: Will Kurt 翔泳社 Amazon 毎日１章ずつと非常にスローペースではありますが、第27章の まで辿…&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;www.okb-shelf.work&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;「入門&lt;a href=&#34;http://d.hatena.ne.jp/keyword/Haskell&#34;&gt;Haskell&lt;/a&gt;プログラミング」という書籍を読み続けながら、理解を深めるために自分で&lt;code&gt;Functor&lt;/code&gt;を実装してみました。今回は、&lt;code&gt;Functor&lt;/code&gt;に引き続き、&lt;code&gt;Applicative&lt;/code&gt;に挑戦してみます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【JavaScriptで解説】部分適用って何？カリー化との違いは？</title>
      <link>https://www.okb-shelf.work/entry/partial_and_curry/</link>
      <pubDate>Thu, 09 Sep 2021 09:46:34 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/partial_and_curry/</guid>
      <description>&lt;h2 id=&#34;部分適用について&#34;&gt;部分適用について🤔&lt;/h2&gt;
&lt;p&gt;部分適用とは一言でいえば、&lt;code&gt;「関数の引数を一部だけ固定して、新しい関数を作るための仕組みの総称」&lt;/code&gt;です。&lt;/p&gt;
&lt;p&gt;よく混同されるカリー化とは別の言葉で、カリー化よりも広い意味を扱います。カリー化は部分適用を行う方法の1つです。その他にも部分適用を行う方法はいくつかあります。&lt;/p&gt;</description>
    </item>
    <item>
      <title>プロダクトにおいて営業と開発は対等であるという意識の重要さ</title>
      <link>https://www.okb-shelf.work/entry/equal_in_product/</link>
      <pubDate>Sun, 05 Sep 2021 13:12:01 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/equal_in_product/</guid>
      <description>&lt;h2 id=&#34;お客様の声&#34;&gt;お客様の声🎤&lt;/h2&gt;
&lt;p&gt;プロダクトが売れ始めて、ある程度、成長を続けていくとお客様から様々な声が上がってきます。&lt;/p&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://www.okb-shelf.work/entry/why_need_function&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-image&#34;&gt;
    &lt;img src=&#34;https://www.okb-shelf.work/entry/why_need_function/20210828114114.png&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;
  &lt;/span&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;ハッキリと「この機能必要ですかね」と言うことが一番重要だった話 - やわらかテック&lt;/span&gt;
    &lt;span class=&#34;linkcard-desc&#34;&gt;お客様が増えると要望は増え続けていく⏫ 現在、国内でHRテックのアプリケーションの開発を担当しています。 ありがたいことに、今となってはかなり多くのお客様に使って頂いておりまして、成長期を抜けて成熟期に突入しました。 www.nri.com…&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;www.okb-shelf.work&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;中でも最も多いのは新機能の開発要望です。小さな変更からプロダクトのコンセプトを覆してしまうような大きな変更まで大小様々です。そんな声を我々、開発者の元まで運んでくれるのが営業の仕事の1つです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ElixirのEnumモジュールがどのように作られているのか調べてみた</title>
      <link>https://www.okb-shelf.work/entry/how_enum_is_made/</link>
      <pubDate>Fri, 03 Sep 2021 22:43:22 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/how_enum_is_made/</guid>
      <description>&lt;p&gt;こちらは僕が主催している&lt;a href=&#34;https://elixir-sr.connpass.com/&#34;&gt;清流elixir - connpass&lt;/a&gt;で扱った内容の備忘録になります。&lt;/p&gt;
&lt;p&gt;現在は1ヶ月に一度を目処にオンラインで活動をしています。&lt;/p&gt;
&lt;p&gt;今回は愛用してやまない&lt;code&gt;Elixir&lt;/code&gt;のパワフルな&lt;code&gt;Enum&lt;/code&gt;モジュールについて、果たしてどのように作られているのか、すなわちどのようなコードが書かれているのかを掘り下げていきました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【コピペでOK】はてなブログでソースコードをエディタ風に表示するCSS</title>
      <link>https://www.okb-shelf.work/entry/original_pre_css/</link>
      <pubDate>Wed, 01 Sep 2021 13:19:44 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/original_pre_css/</guid>
      <description>&lt;h2 id=&#34;デフォルトのデザインが何ともいえない&#34;&gt;デフォルトのデザインが何ともいえない&amp;hellip;🤔&lt;/h2&gt;
&lt;p&gt;こちらが&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A4%CF%A4%C6%A4%CA%A5%D6%A5%ED%A5%B0&#34;&gt;はてなブログ&lt;/a&gt;に&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%BD%A1%BC%A5%B9%A5%B3%A1%BC%A5%C9&#34;&gt;ソースコード&lt;/a&gt;を&lt;code&gt;&amp;lt;pre&amp;gt;&lt;/code&gt;タグで表示した時に表示されるデフォルトの&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%BD%A1%BC%A5%B9%A5%B3%A1%BC%A5%C9&#34;&gt;ソースコード&lt;/a&gt;です。&lt;/p&gt;
&lt;p&gt;自分は&lt;code&gt;Markdown&lt;/code&gt;記法を使用していまして、バッククオート3つで囲うことで&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%BD%A1%BC%A5%B9%A5%B3%A1%BC%A5%C9&#34;&gt;ソースコード&lt;/a&gt;を記述しています。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;f&amp;#x1f194;takamizawa46:20210826204140p:plain&#34; loading=&#34;lazy&#34; src=&#34;https://www.okb-shelf.work/entry/original_pre_css/20210826204140.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;良くも悪くも何とも言えないですね&amp;hellip;。&lt;/p&gt;
&lt;p&gt;今までデフォルトのデザインのままブログを書いてきましたが、最近になってデザインが気になり始めました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ハッキリと「この機能必要ですかね」と言うことが一番重要だった話</title>
      <link>https://www.okb-shelf.work/entry/why_need_function/</link>
      <pubDate>Sun, 29 Aug 2021 09:59:29 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/why_need_function/</guid>
      <description>&lt;h2 id=&#34;お客様が増えると要望は増え続けていく&#34;&gt;お客様が増えると要望は増え続けていく⏫&lt;/h2&gt;
&lt;p&gt;現在、国内でHRテックのアプリケーションの開発を担当しています。&lt;/p&gt;
&lt;p&gt;ありがたいことに、今となってはかなり多くのお客様に使って頂いておりまして、成長期を抜けて成熟期に突入しました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【コスパ最強】Ankerのマグネットケーブルホルダーで机の配線を最終形態にしました</title>
      <link>https://www.okb-shelf.work/entry/purchase_anker_cable_holder/</link>
      <pubDate>Thu, 26 Aug 2021 20:22:19 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/purchase_anker_cable_holder/</guid>
      <description>&lt;h2 id=&#34;配線が見えなくなったものの&#34;&gt;配線が見えなくなったものの&amp;hellip;🙈&lt;/h2&gt;
&lt;p&gt;僕は配線が見えるのが嫌で、極力、配線が見えないようにしてします。&lt;/p&gt;
&lt;p&gt;今年の春頃に充電コード(lightning, type-c)やモニターの出力ケーブル(&lt;a href=&#34;http://d.hatena.ne.jp/keyword/HDMI&#34;&gt;HDMI&lt;/a&gt;)を可能な限り見えない状態にしました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>数学全然わからないけどElixirでFunctorを作ってみる</title>
      <link>https://www.okb-shelf.work/entry/original_functor/</link>
      <pubDate>Mon, 23 Aug 2021 21:00:47 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/original_functor/</guid>
      <description>&lt;h2 id=&#34;きっかけ&#34;&gt;きっかけ😲&lt;/h2&gt;
&lt;p&gt;最近、「入門&lt;a href=&#34;http://d.hatena.ne.jp/keyword/Haskell&#34;&gt;Haskell&lt;/a&gt;プログラミング」という書籍を読み進めています。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.amazon.co.jp/exec/obidos/ASIN/B07SFCMP66/matuko110-22/&#34;&gt;入門Haskellプログラミング&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;毎日１章ずつと非常にスローペースではありますが、第27章の&lt;code&gt;Functor&lt;/code&gt;まで辿り着きました。この&lt;code&gt;Functor&lt;/code&gt;というものが非常に面白かったので自分のメモがてらまとめておきます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>すごい人と比べて落ち込んでも続けるべき2つの理由</title>
      <link>https://www.okb-shelf.work/entry/continue_if_feeling_down/</link>
      <pubDate>Sat, 21 Aug 2021 20:44:14 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/continue_if_feeling_down/</guid>
      <description>&lt;h2 id=&#34;僕の一番の悩み&#34;&gt;僕の一番の悩み😔&lt;/h2&gt;
&lt;p&gt;ずーっと悩んできたことがあります。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;圧倒的にレベル差のある同僚から吸収し続けるにはどうすればいいんですかね&lt;/p&gt;
&lt;p&gt;— OKB (@sing_mascle69) &lt;a href=&#34;https://twitter.com/sing_mascle69/status/1127454093008498693?ref_src=twsrc%5Etfw&#34;&gt;2019年5月12日&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;本当に難しいのはやり始めることよりも、やり続けることだと実感する。初速のスピード感は負けていないとは思うが持続が出来ない。その点、いわゆるエリートは凄い。常にホット。&lt;/p&gt;</description>
    </item>
    <item>
      <title>怖いコードレビューを楽しくするために自分が使っている絵文字を集計してみた</title>
      <link>https://www.okb-shelf.work/entry/aggregate_emoji_in_review/</link>
      <pubDate>Mon, 16 Aug 2021 22:04:50 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/aggregate_emoji_in_review/</guid>
      <description>&lt;h2 id=&#34;コードレビューって怖いんだって&#34;&gt;コードレビューって&amp;hellip;怖いんだって😢&lt;/h2&gt;
&lt;p&gt;いつものように&lt;a href=&#34;http://d.hatena.ne.jp/keyword/Twitter&#34;&gt;Twitter&lt;/a&gt;を徘徊していると、&lt;code&gt;Ruby&lt;/code&gt;のチェリー本などで有名な伊藤淳一さんがこんなツイートをされていました。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;「なぜここで1を加算してるんでしょうか？」&lt;/p&gt;
&lt;p&gt;とか、&lt;/p&gt;
&lt;p&gt;「&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%B7%A5%E3%A5%C9%A1%BC%A5%A4%A5%F3%A5%B0&#34;&gt;シャドーイング&lt;/a&gt;ってご存じですか？」&lt;/p&gt;
&lt;p&gt;みたいなコードレビューコメントって、純粋な質問であっても受け取り方によっては詰問してるように聞こえたり、嫌味を言ってるように聞こえたりするので、テキストコミュニケーションって難しい。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ブログ飯を読んではじめて書いた記事をリライトしてみた</title>
      <link>https://www.okb-shelf.work/entry/rewrite_first_post/</link>
      <pubDate>Sat, 14 Aug 2021 16:38:42 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/rewrite_first_post/</guid>
      <description>&lt;h2 id=&#34;なぜリライトしたのか&#34;&gt;なぜリライトしたのか🤔&lt;/h2&gt;
&lt;p&gt;先日ですが、「PV増やしたいなぁ〜」という想いから色々なブログを散見していると「ブログ飯」という書籍を一度読んでみると良いよという意見が多いことに気づきました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【感想・まとめ】「関数型プログラミングなんもわからん。を考えよう」に参加してきました。</title>
      <link>https://www.okb-shelf.work/entry/feedback_dont_ununderstand_functional/</link>
      <pubDate>Sun, 08 Aug 2021 17:46:05 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/feedback_dont_ununderstand_functional/</guid>
      <description>&lt;h2 id=&#34;関数型プログラミングなんもわからんを考えようとは&#34;&gt;「&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%B4%D8%BF%F4%B7%BF%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0&#34;&gt;関数型プログラミング&lt;/a&gt;なんもわからん。を考えよう」とは🤔&lt;/h2&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://connpass.com/event/221190/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;関数型プログラミングなんもわからん。を考えよう (2021/08/07 13:00〜)&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;connpass.com&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;&lt;a href=&#34;https://twitter.com/ababupdownba&#34;&gt;ABAB↑↓BA (@ababupdownba) | Twitter&lt;/a&gt;さんが主催された&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%B4%D8%BF%F4%B7%BF%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0&#34;&gt;関数型プログラミング&lt;/a&gt;の疑問や質問について、ひたすら&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%CD%AD%BC%B1%BC%D4&#34;&gt;有識者&lt;/a&gt;の方々が丁寧に回答をしてくれる・ディスカッションする会です。&lt;code&gt;わかる枠&lt;/code&gt;と&lt;code&gt;わからない枠&lt;/code&gt;の2枠が用意されておりまして、初心者の方であっても気軽に参加することが出来ます。&lt;/p&gt;
&lt;p&gt;ただ、質問して積極的に参加した方がより楽しめると思いますので、初心者であっても聞きたいことはいくつか用意しておくと良さそうです。
「お、面白そう！」と思いノリと勢いを元に、今回は&lt;code&gt;わからない枠&lt;/code&gt;で参加させて頂きました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【配線スッキリ】macbookとswithへの給電が出来る最高のアダプターを購入した</title>
      <link>https://www.okb-shelf.work/entry/purchase_anker_adapter/</link>
      <pubDate>Thu, 05 Aug 2021 09:08:54 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/purchase_anker_adapter/</guid>
      <description>&lt;h2 id=&#34;ごちゃつく配線周り&#34;&gt;ごちゃつく配線周り😓&lt;/h2&gt;
&lt;p&gt;僕は配線が見えるという状態があまり好きではありません。というか嫌いです。生活感が出るのが嫌で、可能な限り配線が見えない状態を作るように、頑張ってきました。色々と配線周りの最適化を進めてきましたが、ずっと残ったままの課題が1つありました。それが業務とプライベートで使用している&lt;code&gt;macbook&lt;/code&gt;と&lt;code&gt;Nintendo switch&lt;/code&gt;の配線の共&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%C4%CC%B2%BD&#34;&gt;通化&lt;/a&gt;です。&lt;/p&gt;</description>
    </item>
    <item>
      <title>特に意味のないデフォルト引数が保守性を低下させるので注意</title>
      <link>https://www.okb-shelf.work/entry/sideeffect_default_arguments/</link>
      <pubDate>Thu, 29 Jul 2021 10:31:44 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/sideeffect_default_arguments/</guid>
      <description>&lt;h2 id=&#34;機能追加の依頼がきた&#34;&gt;機能追加の依頼がきた😮&lt;/h2&gt;
&lt;p&gt;いつものように業務をこなしていると、スケジュール管理機能にとある機能追加の依頼が来ました。&lt;/p&gt;
&lt;p&gt;内容としては複数のスケジュールを作成する関数で祝日での場合には、祝日に該当する日にはスケジュールを作成しないようにしたいとのことです。
「お、こんなのすぐ出来るやん！」と思い、修正対象の関数を見てみると以下のように定義されていました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>動的型付け言語(Ruby)でも関数の戻り値の型は可能な限り統一した方が良い</title>
      <link>https://www.okb-shelf.work/entry/unity_return_value_type/</link>
      <pubDate>Mon, 26 Jul 2021 21:59:21 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/unity_return_value_type/</guid>
      <description>&lt;h2 id=&#34;出会いは突然に&#34;&gt;出会いは突然に😲&lt;/h2&gt;
&lt;p&gt;いつものように眠い目を擦りながらコードレビューをしていると以下のようなコードに遭遇しました。&lt;/p&gt;
&lt;p&gt;(※部分的に書き換えてあるので、実際には動作していないコードです)&lt;/p&gt;</description>
    </item>
    <item>
      <title>ファシリテーターをまかせたら普通にみんなやってくれた</title>
      <link>https://www.okb-shelf.work/entry/entrust_facilitator/</link>
      <pubDate>Fri, 25 Jun 2021 21:45:03 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/entrust_facilitator/</guid>
      <description>&lt;h2 id=&#34;リモートワークのファシリってつらい&#34;&gt;リモートワークのファシリってつらい&lt;/h2&gt;
&lt;p&gt;現在、弊社ではコロナ対策として、完全リモートワークに移行しており、よほどのことがない限りは在宅にて勤務をしております。開発業務がメインなのですが、&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%E9%A5%E0&#34;&gt;スクラム&lt;/a&gt;マスターという立場上、&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%D5%A5%A1%A5%B7%A5%EA%A5%C6%A1%BC%A5%BF%A1%BC&#34;&gt;ファシリテーター&lt;/a&gt;として主体的に話す機会や、プロダクトオーナーや外部の方と&lt;a href=&#34;http://d.hatena.ne.jp/keyword/MTG&#34;&gt;MTG&lt;/a&gt;をする機会がそこそこあったりします。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【API設計】jsonを返す時はできる限りフィールドのkeyを統一してあげよう</title>
      <link>https://www.okb-shelf.work/entry/api_json_design/</link>
      <pubDate>Sun, 20 Jun 2021 12:23:18 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/api_json_design/</guid>
      <description>&lt;h2 id=&#34;apiの仕様書が送られてきた&#34;&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/API&#34;&gt;API&lt;/a&gt;の仕様書が送られてきた&lt;/h2&gt;
&lt;p&gt;外部連携させて頂く企業様から、新規に追加される&lt;a href=&#34;http://d.hatena.ne.jp/keyword/API&#34;&gt;API&lt;/a&gt;の仕様書を頂きました。ユーザーが登録しているカテゴリの総数と、その内訳を取得することが出来る&lt;a href=&#34;http://d.hatena.ne.jp/keyword/API&#34;&gt;API&lt;/a&gt;だそうで、新たに追加されたとのことです。しかしながら、蓋を開けてみると、何とも言えない残念なレスポンスとなっていました。まずは、以下をご確認ください。&lt;/p&gt;
&lt;p&gt;(情報は原文より書き換えてあります)&lt;/p&gt;
&lt;p&gt;以下はユーザーが何かしらのカテゴリーを1件以上登録している場合のレスポンスになります。&lt;/p&gt;</description>
    </item>
    <item>
      <title>開発者が複雑だと思う機能はユーザーには使いこなせない</title>
      <link>https://www.okb-shelf.work/entry/unusefull_complexly_function/</link>
      <pubDate>Tue, 15 Jun 2021 22:24:18 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/unusefull_complexly_function/</guid>
      <description>&lt;h2 id=&#34;プロジェクトの肥大化&#34;&gt;プロジェクトの肥大化&lt;/h2&gt;
&lt;p&gt;自分が参加しているプロジェクトが早いもので、スタートから2年が経ちました。&lt;/p&gt;
&lt;p&gt;ありがたいことにお客様の数は増え続けており、今でも多くのお客様に使って頂いております。初期の頃と比べると、かなり機能がリッチになりました。
元々は、「シンプルさを保っていこう！」という&lt;code&gt;KISSの原則&lt;/code&gt;に従い、誰が見ても初見で使えるアプリを目指していました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【JavaScriptサンプル有り】例外が発生した後の処理を高階関数にまかせる</title>
      <link>https://www.okb-shelf.work/entry/exception_higher_function/</link>
      <pubDate>Wed, 09 Jun 2021 08:03:06 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/exception_higher_function/</guid>
      <description>&lt;h2 id=&#34;これは便利&#34;&gt;これは便利&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://www.amazon.co.jp/exec/obidos/ASIN/B0827R4BDW/matuko110-22/&#34;&gt;リファクタリング 既存のコードを安全に改善する（第2版）&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;こちらの書籍で紹介されていた、&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%EA%A5%D5%A5%A1%A5%AF%A5%BF%A5%EA%A5%F3%A5%B0&#34;&gt;リファクタリング&lt;/a&gt;の手法の1つで、例外が発生した後の処理って場面によって何をしたいか違うよねを叶えるためのコードです。例外が発生した(された)まま、処理を終了したい、ハンドリングして、値を返したいという異なる要望を記述することが出来ます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;campMember&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;りん&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;なでしこ&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;campValidation&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;memberName&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;unexpectExec&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;campMember&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;includes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;memberName&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;unexpectExec&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;debug&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;memberName&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;unexpectExec&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;throw&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;メンバーではありません&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;campValidation&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;memberName&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;unexpectExec&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;実行サンプル&#34;&gt;実行サンプル&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;debug&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;りん&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;#&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;debug&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;なでしこ&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;#&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;debug&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;はなこ&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;#&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;debug&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;はなこ&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;throw&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;残念ながらメンバーではありません&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// debug(&amp;#34;はなこ&amp;#34;, () =&amp;gt; { throw &amp;#39;残念ながらメンバーではありません&amp;#39; })
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;//                      ^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 残念ながらメンバーではありません
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// (Use `node --trace-uncaught ...` to show where the exception was thrown)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>ボーイスカウト・ルールが保守開発に役立った話</title>
      <link>https://www.okb-shelf.work/entry/powerful_boy_scouts_rule/</link>
      <pubDate>Mon, 07 Jun 2021 20:18:38 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/powerful_boy_scouts_rule/</guid>
      <description>&lt;h2 id=&#34;コードはどんどん汚くなっていく&#34;&gt;コードはどんどん汚くなっていく&lt;/h2&gt;
&lt;p&gt;プロジェクトのスタート時にどれだけ入念に設計をしてコードを書き始めたとしても、プロジェクトの年数が経つにつれて、コードの状態は悪くなってきます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ターミナルのパイプの中にElixirの処理を挟む方法を思いついた</title>
      <link>https://www.okb-shelf.work/entry/elixir_in_shell/</link>
      <pubDate>Fri, 04 Jun 2021 22:44:20 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/elixir_in_shell/</guid>
      <description>&lt;h2 id=&#34;きっかけは突然に&#34;&gt;きっかけは突然に&lt;/h2&gt;
&lt;p&gt;弊社のインフラエンジニアの方がデプロイ作業の中でこんなような&lt;code&gt;perl&lt;/code&gt;の処理系をコマンドの中にパイプで渡しているのを発見しました👀&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ls &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; tail -1 &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; perl -ne &lt;span class=&#34;s1&#34;&gt;&amp;#39;if (/release command failed/){print 1}else{print 0}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;処理の内容はともかく、パイプの中に言語の処理系が組み込めることに感動しました。&lt;code&gt;perl&lt;/code&gt;は経験のない言語なので、このためだけに新しく言語を習得することはありませんが、自分が愛用している&lt;code&gt;Elixir&lt;/code&gt;でも同じことが出来ないか試してみました。リスト操作は&lt;code&gt;Elixir&lt;/code&gt;の&lt;code&gt;Enum&lt;/code&gt;とパイプラインが得意とするところです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>「なのでは」「ではないかと」って言い方やめてくれ</title>
      <link>https://www.okb-shelf.work/entry/hate_nanodeha/</link>
      <pubDate>Thu, 03 Jun 2021 22:40:18 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/hate_nanodeha/</guid>
      <description>&lt;h2 id=&#34;単純に不快&#34;&gt;単純に不快&lt;/h2&gt;
&lt;p&gt;なんでわざわざ「なのでは」とか「ではないかと」っていう文章を送ってくるのか理解出来ません。&lt;/p&gt;
&lt;p&gt;これが攻撃的な言い方に感じるのは自分だけでしょうか。日々、マウントをとってくるような人が使っているイメージがあります。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rubyのコードレビューでよく指摘すること</title>
      <link>https://www.okb-shelf.work/entry/codereview_of_ruby/</link>
      <pubDate>Tue, 01 Jun 2021 20:55:42 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/codereview_of_ruby/</guid>
      <description>&lt;h2 id=&#34;コードレビューはじめました&#34;&gt;コードレビューはじめました&lt;/h2&gt;
&lt;p&gt;昨年の10月から勤務先企業で開発チームのリーダーになりました。元々はコードを&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%AC%A5%EA&#34;&gt;ガリ&lt;/a&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%AC%A5%EA&#34;&gt;ガリ&lt;/a&gt;書くような業務をしていたのですが、ポジションが変わったため、業務の内容も変化しました。大きく変化した点としてコードをレビューしてもらう側から、コードをレビューする側になったというのがあります。実際にレビューをする側になって、気づいたことはたくさんあります。&lt;/p&gt;
&lt;p&gt;そんな中で半年もレビューをしていると、ある程度、指摘するパターンが見えてきましたので記事にまとめておこうと思います。これが必ずしも正解というわけではなく、こういう見方もある、過去にバグが続出した際に、以下で紹介する方針をとって少しずつ改善してきたという実績を元に観点を選別しています。&lt;/p&gt;</description>
    </item>
    <item>
      <title>TODOコメントってあんまり意味がないんじゃないか説</title>
      <link>https://www.okb-shelf.work/entry/unwork_todo_comment/</link>
      <pubDate>Mon, 31 May 2021 21:31:16 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/unwork_todo_comment/</guid>
      <description>&lt;h2 id=&#34;とりあえず書き込まれるtodo&#34;&gt;とりあえず書き込まれるTODO&lt;/h2&gt;
&lt;p&gt;ある日のことです。新機能開発のためにコードを眺めていると該当箇所に対応するテストコードが全くないことに気づきました。
「TDDでやってるのになぁ」と思っていると、テストコードのファイルだけが作られていて、中に&lt;code&gt;TODOコメント&lt;/code&gt;で想定されうる全てのパターンが記載されていました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>またブログを頑張るための振り返りと反省</title>
      <link>https://www.okb-shelf.work/entry/retry_blog/</link>
      <pubDate>Sun, 30 May 2021 21:50:24 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/retry_blog/</guid>
      <description>&lt;h2 id=&#34;サボりがちになったブログ&#34;&gt;サボりがちになったブログ&lt;/h2&gt;
&lt;p&gt;思えば、昨年には一週間に最低でも1記事。一昨年には何と一週間に2、3個の記事を書いていました。&lt;/p&gt;
&lt;p&gt;時期としては大学の学部を卒業して新社会人としては働き始めた頃で決して、時間的に余裕があったわけではないはずです。さらに今と異なり、当時はリモートワークではなく毎日、片道1時間半かけてオフィスに通っていました。そんな状況で、記事を書いていたのに今はどうでしょうか。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【Elixir】無名関数で気軽に再帰的にメッセージの送受信を実装する</title>
      <link>https://www.okb-shelf.work/entry/message_passing_by_anonymous/</link>
      <pubDate>Sat, 13 Feb 2021 10:57:30 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/message_passing_by_anonymous/</guid>
      <description>&lt;h2 id=&#34;elixirでの並行処理&#34;&gt;Elixirでの並行処理&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Elixir&lt;/code&gt;では並行処理を行うために&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%A2%A5%AF%A5%BF%A1%BC%A5%E2%A5%C7%A5%EB&#34;&gt;アクターモデル&lt;/a&gt;に従ってプロセス間同士でメッセージを送受(メッセージパッシング)し合います。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%A2%A5%AF%A5%BF%A1%BC%A5%E2%A5%C7%A5%EB&#34;&gt;アクターモデル&lt;/a&gt;とは並行処理を効率よく実装するための手法の一つです。&lt;code&gt;Elixir&lt;/code&gt;においては、アクター(軽量プロセス)はアクター(軽量プロセス)を生成することが出来ます。また、全てのアクターはメッセージボックスを持ち、それぞれがメッセージの送受信を行うことができます。&lt;/p&gt;
&lt;p&gt;全ての値は暗黙的に変更されることはなく、メッセージの送受の結果としてだけ値の変更が許容されます。逆に言えば、メッセージの送受以外では値の変更はされることはありません。そのため、データ不整合の問題や、ロック(排他処理)を明示的に実装する必要がありません(任意の処理が終わるまで待つということはあるでしょう)。&lt;/p&gt;</description>
    </item>
    <item>
      <title>GoogleCloudStorageでファイル検索を簡単にする命名方法</title>
      <link>https://www.okb-shelf.work/entry/easy_search_on_gcs/</link>
      <pubDate>Mon, 08 Feb 2021 10:25:05 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/easy_search_on_gcs/</guid>
      <description>&lt;h2 id=&#34;あらすじ&#34;&gt;あらすじ&lt;/h2&gt;
&lt;p&gt;とある&lt;a href=&#34;http://d.hatena.ne.jp/keyword/API&#34;&gt;API&lt;/a&gt;からのレスポンスの内容が、どうやら仕様書で共有されていたモノと中身が異なっているということで、どういうレスポンスが返ってきているのかを確認してほしいと言われました。とはいえ、本番環境では1時間に約10万回ものリク&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%A8%A5%B9&#34;&gt;エス&lt;/a&gt;トを送っているため、単純にログにデータを出力すると、えらいことになります。&lt;/p&gt;
&lt;p&gt;そのため、受け取ったレスポンス(&lt;code&gt;json&lt;/code&gt;)を&lt;code&gt;.json&lt;/code&gt;形式のファイルを作成して、&lt;code&gt;GoogleCloudStorage&lt;/code&gt;にアップロードすることにしました。ただログを集約したいだけだったので、特に階層は作らず、&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%D0%A5%B1%A5%C3%A5%C8&#34;&gt;バケット&lt;/a&gt;の直下にファイルをアップロードさせるようにしています。&lt;/p&gt;</description>
    </item>
    <item>
      <title>JavaScriptでのスマートな再帰関数の書き方【ECMAscript2015以降対応】</title>
      <link>https://www.okb-shelf.work/entry/smart_recursive_js/</link>
      <pubDate>Tue, 12 Jan 2021 10:46:54 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/smart_recursive_js/</guid>
      <description>&lt;p&gt;仕事で&lt;code&gt;JavaScript&lt;/code&gt;を書くことが多くなりました。以前より学んできた多くの&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%B4%D8%BF%F4%B7%BF%B8%C0%B8%EC&#34;&gt;関数型言語&lt;/a&gt;で一般的に使用されている&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%BA%C6%B5%A2&#34;&gt;再帰&lt;/a&gt;関数を&lt;code&gt;JavaScript&lt;/code&gt;でもスマートに書けないものかなと模索してみました。&lt;/p&gt;
&lt;p&gt;「普通に&lt;code&gt;for&lt;/code&gt;や、&lt;code&gt;map&lt;/code&gt;を使えば良いのでは？」という問いかけに対する答えは「イ&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%A8%A5%B9&#34;&gt;エス&lt;/a&gt;」です。使う機会があるかは分かりませんですが、参考になればと思います。&lt;/p&gt;</description>
    </item>
    <item>
      <title>クリスマスプレゼントの交換会にElixirで備える</title>
      <link>https://www.okb-shelf.work/entry/present_exchange_by_elixir/</link>
      <pubDate>Sat, 14 Nov 2020 16:20:22 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/present_exchange_by_elixir/</guid>
      <description>&lt;p&gt;今年で24歳になりましたが、いつになってもクリスマスってのはワクワクしますね。&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%BB%B3%B2%BC%C3%A3%CF%BA&#34;&gt;山下達郎&lt;/a&gt;さんのクリスマスイブを耳にすると「もう12月かぁ〜」と胸が苦しくなります。&lt;/p&gt;
&lt;p&gt;そんなこんなで友人とクリスマスプレゼントの交換会をすることになりました(唐突)。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Elixirでモジュール内の関数を動的に呼び出す</title>
      <link>https://www.okb-shelf.work/entry/dynamic_load_module/</link>
      <pubDate>Mon, 09 Nov 2020 23:35:30 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/dynamic_load_module/</guid>
      <description>&lt;h2 id=&#34;パイセンの実装に感動&#34;&gt;パイセンの実装に感動&lt;/h2&gt;
&lt;p&gt;僕が感動したのは&lt;code&gt;Elixir&lt;/code&gt;での実装ではありませんが、&lt;code&gt;Ruby&lt;/code&gt;で特定の&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%C7%A5%A3%A5%EC%A5%AF%A5%C8&#34;&gt;ディレクト&lt;/a&gt;リ以下に&lt;code&gt;_____.rb&lt;/code&gt;というファイルを作成し、&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%CC%BF%CC%BE%B5%AC%C2%A7&#34;&gt;命名規則&lt;/a&gt;に従ったモジュールと&lt;code&gt;interface&lt;/code&gt;を満たす関数を実装すると、自動でモジュール内の関数が読み込まれて動的に実行されるという設計に感動しました。&lt;/p&gt;
&lt;p&gt;このような設計の方法は&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%C7%A5%B6%A5%A4%A5%F3%A5%D1%A5%BF%A1%BC%A5%F3&#34;&gt;デザインパターン&lt;/a&gt;に通ずることがあるんじゃないかと思いましたが、僕自身、&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%AA%A5%D6%A5%B8%A5%A7%A5%AF%A5%C8%BB%D8%B8%FE&#34;&gt;オブジェクト指向&lt;/a&gt;をやんちゃにしか取り組んだことしかないので詳細は不明。&lt;/p&gt;
&lt;p&gt;とはいえ、この実装方法に感動したので&lt;code&gt;Elixir&lt;/code&gt;を使って実装してみます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>気づいたらプロダクト指向な開発者になっていた</title>
      <link>https://www.okb-shelf.work/entry/product_main_developer/</link>
      <pubDate>Sun, 04 Oct 2020 11:59:36 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/product_main_developer/</guid>
      <description>&lt;h2 id=&#34;仕事の内容が変わって考え方が変わった&#34;&gt;仕事の内容が変わって考え方が変わった&lt;/h2&gt;
&lt;p&gt;数ヶ月程前から、既存の受託案件の開発チームから自社開発チームに移籍して、継続的な開発をしている。
受託案件をゴリゴリ作っていた時は、&lt;code&gt;作って終わり&lt;/code&gt;の考えでとにかく速さを重視していた。&lt;code&gt;git&lt;/code&gt;を使ってコードの品質管理はしていたものの今、改めて考えてみれば変更に弱く、品質が担保されていかないコードを書いていたと思う。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Appleのカスタムサポートが神対応だった</title>
      <link>https://www.okb-shelf.work/entry/feedback_apple_customer_support/</link>
      <pubDate>Wed, 19 Aug 2020 09:50:44 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/feedback_apple_customer_support/</guid>
      <description>&lt;h2 id=&#34;相棒のmacbookから焦げた匂いが&#34;&gt;相棒の&lt;a href=&#34;http://d.hatena.ne.jp/keyword/MacBook&#34;&gt;MacBook&lt;/a&gt;から焦げた匂いが&amp;hellip;&lt;/h2&gt;
&lt;p&gt;ある日のこと、突如、&lt;a href=&#34;http://d.hatena.ne.jp/keyword/MacBook&#34;&gt;MacBook&lt;/a&gt;から&lt;strong&gt;「バチンッ!!」&lt;/strong&gt;という音がして電源が落ちた。一瞬だが、火花も見えた。&lt;/p&gt;
&lt;p&gt;あー、これは&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%DE%A5%B6%A1%BC%A5%DC%A1%BC%A5%C9&#34;&gt;マザーボード&lt;/a&gt;がショートする系のアカンやつだなぁと故障を覚悟した。案の定、電源を長押しして起動を試みるも、やはり電源はつかない&amp;hellip;。&lt;/p&gt;
&lt;p&gt;ああああああああああああ&amp;hellip;&lt;/p&gt;
&lt;p&gt;人生でPCが壊れたのはこれで二度目だが、学生時代に預金をゼロにしてまで買った思い入れのあるPCだけに超ショック。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Oauthを簡単なプロセス通信でそれっぽく再現して覚える</title>
      <link>https://www.okb-shelf.work/entry/oauth_by_message_passing/</link>
      <pubDate>Sun, 16 Aug 2020 11:35:49 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/oauth_by_message_passing/</guid>
      <description>&lt;h2 id=&#34;ワイ認証が全然分かっていない&#34;&gt;ワイ認証が全然分かっていない&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;認証&lt;/code&gt;部分は自分が実装する前にパイセンエンジニアが既におおむね、下地を作った状態で、「これ使ってね〜」状態になっている事が多く、初期の開発に参加出来なかったりする。過去に趣味開発で&lt;code&gt;Oauth&lt;/code&gt;なりを使用したことはあるが、コピペで作ったので正直、よく覚えていないし理解もしていなかった。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ElixirでListMonadを作ってみる</title>
      <link>https://www.okb-shelf.work/entry/original_list_monad/</link>
      <pubDate>Thu, 11 Jun 2020 00:28:37 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/original_list_monad/</guid>
      <description>&lt;h2 id=&#34;monadモナドの魅力&#34;&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/Monad&#34;&gt;Monad&lt;/a&gt;(&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%E2%A5%CA%A5%C9&#34;&gt;モナド&lt;/a&gt;)の魅力&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%B4%D8%BF%F4%B7%BF%B8%C0%B8%EC&#34;&gt;関数型言語&lt;/a&gt;に触れていれば少なからず「&lt;code&gt;Monad(モナド)&lt;/code&gt;」という言葉を耳にする。残念ながら私の愛する&lt;code&gt;Elixir&lt;/code&gt;では&lt;code&gt;Monad(モナド)&lt;/code&gt;を大々的に取り扱うことはない(知らないだけなのかも)はないが、純粋&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%B4%D8%BF%F4%B7%BF%B8%C0%B8%EC&#34;&gt;関数型言語&lt;/a&gt;として有名な&lt;code&gt;Haskell&lt;/code&gt;では&lt;code&gt;Monad(モナド)&lt;/code&gt;をガンガン扱う。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Haskell&lt;/code&gt;については「プログラミング&lt;a href=&#34;http://d.hatena.ne.jp/keyword/Haskell&#34;&gt;Haskell&lt;/a&gt;」という書籍を読んだ程度の知見しかないが、&lt;code&gt;Monad(モナド)&lt;/code&gt;を使うこなすことで関数の純粋さを保ち、参照透過性を担保するのだそう。ただでさえ&lt;code&gt;Monad(モナド)&lt;/code&gt;については多くの方が解説しており、複雑化して理解が難しくなっているため、自分が新たに説明をすることは控えておく。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%B7%F7%CF%C0&#34;&gt;圏論&lt;/a&gt;の&lt;code&gt;Monad(モナド)&lt;/code&gt;と&lt;code&gt;Haskell&lt;/code&gt;の&lt;code&gt;Monad(モナド)&lt;/code&gt;の違いとそれぞれの理解に4日ほど時間がかかってしまった。トホホ&amp;hellip;&lt;/p&gt;
&lt;h2 id=&#34;圏論におけるmonadモナドの定義&#34;&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%B7%F7%CF%C0&#34;&gt;圏論&lt;/a&gt;における&lt;a href=&#34;http://d.hatena.ne.jp/keyword/Monad&#34;&gt;Monad&lt;/a&gt;(&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%E2%A5%CA%A5%C9&#34;&gt;モナド&lt;/a&gt;)の定義&lt;/h2&gt;
&lt;p&gt;先ほども述べたように&lt;code&gt;Haskell&lt;/code&gt;での&lt;code&gt;Monad(モナド)&lt;/code&gt;と&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%B7%F7%CF%C0&#34;&gt;圏論&lt;/a&gt;での&lt;code&gt;Monad(モナド)&lt;/code&gt;は異なっており、情報を分けないと理解が難しくなる。以下の記事が非常に分かりやすかった。理解のために幾らか情報を漁ったので、分かりやすかったものを参考文献にまとめたのでそちらもどうぞ。&lt;/p&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://kentutorialbook.github.io/30minLearningJavaScriptMonad/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;30分でわかるJavaScriptプログラマのためのモナド入門&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;kentutorialbook.github.io&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;情報量が非常に多いため、自分の言葉で簡単に&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%B7%F7%CF%C0&#34;&gt;圏論&lt;/a&gt;での&lt;code&gt;Monad(モナド)&lt;/code&gt;を要約しておく(※これは説明ではないのでご愛敬。明日の自分のための書き残し)。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【作って学ぶフロントエンド】ReactのuseStateの仕組みについて</title>
      <link>https://www.okb-shelf.work/entry/original_use_state/</link>
      <pubDate>Sun, 24 May 2020 14:04:21 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/original_use_state/</guid>
      <description>&lt;h2 id=&#34;hooksについて&#34;&gt;Hooksについて&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;React&lt;/code&gt;のバージョン&lt;code&gt;16.8&lt;/code&gt;に導入された&lt;code&gt;Hooks&lt;/code&gt;という機能によって、&lt;code&gt;class component&lt;/code&gt;を使用せずとも、&lt;code&gt;functional component&lt;/code&gt;(以降: FCと記述)に&lt;code&gt;state&lt;/code&gt;を用意することが可能になりました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>並行・並列と並行処理・並列処理の違いについてまとめた</title>
      <link>https://www.okb-shelf.work/entry/different_concurrency_partial/</link>
      <pubDate>Thu, 21 May 2020 09:56:10 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/different_concurrency_partial/</guid>
      <description>&lt;h2 id=&#34;毎回調べているのでまとめた&#34;&gt;毎回調べているのでまとめた&lt;/h2&gt;
&lt;p&gt;何気なく「並行処理にすると&amp;hellip;.」だとか「ここは並列処理にして&amp;hellip;」という会話をすることが普段多いが、&lt;strong&gt;「並行と並列って何が違うのよ？」&lt;/strong&gt;と前からよく思っていた。その度に、ググっては「あー。そういうことね」と理解するものの、脳内ストレージが揮発性メモリであるため寝て起きたら忘れてしまう。
そんな、明日の自分のためにも&lt;/p&gt;</description>
    </item>
    <item>
      <title>【Elixirのサンプルコード有り】条件に一致した時に再帰を停止する方法4つを書き比べてみた</title>
      <link>https://www.okb-shelf.work/entry/how_break_reduce/</link>
      <pubDate>Sat, 16 May 2020 18:56:18 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/how_break_reduce/</guid>
      <description>&lt;h2 id=&#34;なんでbreak_reduceみたいなのはないんだろう&#34;&gt;なんでbreak_reduceみたいなのはないんだろう&lt;/h2&gt;
&lt;p&gt;配列(リスト)に対して、各要素を精査する際に、特定の条件にマッチする要素が見つかった時点で処理を停止して、&lt;code&gt;Elixir&lt;/code&gt;であれば&lt;code&gt;{:exist, value}&lt;/code&gt;のような値を返す関数をよく作成することがある。頻出の処理パターンではあるが、&lt;code&gt;Elixir&lt;/code&gt;の&lt;code&gt;Enum&lt;/code&gt;を覗いてみても該当する関数は見当たらない。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【実装コード有り】銀行家のアルゴリズムの実装と検証</title>
      <link>https://www.okb-shelf.work/entry/banker_algorithm/</link>
      <pubDate>Sun, 10 May 2020 14:10:52 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/banker_algorithm/</guid>
      <description>&lt;h2 id=&#34;今更作った理由&#34;&gt;今更作った理由&lt;/h2&gt;
&lt;p&gt;たまたま&lt;code&gt;google scholar&lt;/code&gt;で並行処理に関する資料を眺めていたら&lt;code&gt;ダイクストラ法&lt;/code&gt;で有名な&lt;code&gt;エドガー・ダイクストラ&lt;/code&gt;さんの名前を見かけた。自分の中では数学者という認識をしていたが、実は分散コンピューティングの分野で、どのようにシステムの信頼性を保証するかという手法を最初に提唱したこともある、バリバリのコンピューター科学の精通者だった。当時、&lt;code&gt;go to&lt;/code&gt;構文を用いてプログラミングを行なっていた従来の手法を改めて、現在、スタンダートになり、多くの人が使用する&lt;code&gt;if文&lt;/code&gt;などを提唱した人物らしく驚いた。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【Elixir/supervisor入門】通常のモジュールに対してsupervisorを定義する</title>
      <link>https://www.okb-shelf.work/entry/define_supervisor_normal_module/</link>
      <pubDate>Sat, 18 Apr 2020 12:45:21 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/define_supervisor_normal_module/</guid>
      <description>&lt;h2 id=&#34;なぜ書いたのか&#34;&gt;なぜ書いたのか&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Elixir&lt;/code&gt;においてプロセスの死活管理に用いる&lt;code&gt;supervisor&lt;/code&gt;について学習を進めていたが、どれも&lt;code&gt;GenServer&lt;/code&gt;、すなわち&lt;code&gt;Elixir&lt;/code&gt;の&lt;code&gt;behavior&lt;/code&gt;を用いたサンプルばかりだった。また、そのプロジェクトは&lt;code&gt;mix new --sup project_name&lt;/code&gt;として生成されるもので、後から「&lt;code&gt;supervisor&lt;/code&gt;入れたい」となる事が割とあったが自前で&lt;code&gt;mix&lt;/code&gt;プロジェクトに&lt;code&gt;supervisor&lt;/code&gt;を定義する方法についてよく分かっていなかった。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【収益ほぼゼロ】何の考えもなしにブログ100記事を書き終えたので反省会をしました</title>
      <link>https://www.okb-shelf.work/entry/wrote_hundred_post/</link>
      <pubDate>Tue, 14 Apr 2020 21:49:29 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/wrote_hundred_post/</guid>
      <description>&lt;h2 id=&#34;100記事を書くことが凄いのか&#34;&gt;100記事を書くことが凄いのか&lt;/h2&gt;
&lt;p&gt;&lt;img alt=&#34;f&amp;#x1f194;takamizawa46:20200413225135p:plain&#34; loading=&#34;lazy&#34; src=&#34;https://www.okb-shelf.work/entry/wrote_hundred_post/20200413225135.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;よく著名なブロガーが&lt;strong&gt;「まずは100記事書くといいですよ」&lt;/strong&gt;ということを仰っている。なぜ100件なのかという根拠はないが、意図としては100も記事を書けばブログを書く習慣も身に付き、言葉の扱い方も多少は様になってくる&amp;hellip;ということだと考えられる。あとはとりあえず始めることが重要なんだとか。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【golangのサンプル有り】クロージャ(closure)完全に理解した人のためのクロージャを使った便利サンプル集</title>
      <link>https://www.okb-shelf.work/entry/closure_sample/</link>
      <pubDate>Fri, 10 Apr 2020 23:55:23 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/closure_sample/</guid>
      <description>&lt;h2 id=&#34;クロージャ完全に理解したで何に使うの&#34;&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%AF%A5%ED%A1%BC%A5%B8%A5%E3&#34;&gt;クロージャ&lt;/a&gt;完全に理解した&amp;hellip;で何に使うの？&lt;/h2&gt;
&lt;p&gt;実は使いこなせると結構便利。特定の値に対する操作を共&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%C4%CC%B2%BD&#34;&gt;通化&lt;/a&gt;することが出来て、想定しているもの、言い方を変えれば作者の作成しているもの以外の操作を制限することも出来る。あと、かっこいい。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%AF%A5%ED%A1%BC%A5%B8%A5%E3&#34;&gt;クロージャ&lt;/a&gt;の&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%E6%A1%BC%A5%B9%A5%B1%A1%BC%A5%B9&#34;&gt;ユースケース&lt;/a&gt;としては小さなデータベースに対してコマンド経由で何かをしたい時と考えると分かりやすい。今回はそのサンプルを4つ用意したので、便利さを体感してみてほしい。1つでも刺さるものがあれば嬉しい限り。&lt;/p&gt;
&lt;h2 id=&#34;サンプル集&#34;&gt;サンプル集&lt;/h2&gt;
&lt;p&gt;設計方針としては2つの考えをベースにしている。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;初期値となる変数の用意(データ構造によってやりたいことを考える)&lt;/li&gt;
&lt;li&gt;用意した初期値に対する操作(取得, 更新, 削除)を行うコマンドを引数で受け取る無名関数を作成してコマンドの判定を行い、それぞれに対応する処理を記述する&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;クロージャを使ったタイマー&#34;&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%AF%A5%ED%A1%BC%A5%B8%A5%E3&#34;&gt;クロージャ&lt;/a&gt;を使ったタイマー&lt;/h3&gt;
&lt;p&gt;動作確認はこちらから&lt;/p&gt;</description>
    </item>
    <item>
      <title>【goroutineによる並行処理】サンプルを作りながら学ぶgoroutine入門</title>
      <link>https://www.okb-shelf.work/entry/learn_goroutine/</link>
      <pubDate>Tue, 07 Apr 2020 01:12:26 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/learn_goroutine/</guid>
      <description>&lt;h2 id=&#34;golangを学ぶ上での壁goroutine&#34;&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/golang&#34;&gt;golang&lt;/a&gt;を学ぶ上での壁&lt;code&gt;goroutine&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;golang&lt;/code&gt;を業務で使い始めてから約半年になりました。業務では&lt;code&gt;golang&lt;/code&gt;を使って&lt;code&gt;Websocket&lt;/code&gt;を使ったチャットサーバーを作っています。&lt;code&gt;golang&lt;/code&gt;の文法は非常にシンプルで分かりやすくシンプルなので、可読性が非常に良いです。普通に&lt;code&gt;golang&lt;/code&gt;を逐次処理として記述する中では大した問題は発生しないかと思いますが、&lt;code&gt;golang&lt;/code&gt;の何が難しいのかというと&lt;code&gt;goroutine&lt;/code&gt;と呼ばれる&lt;code&gt;golang&lt;/code&gt;に実装されている&lt;code&gt;並行処理&lt;/code&gt;をするための軽量なスレッドの扱いです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【現役エンジニア】SCRATCH(スクラッチ)で遊んで何が出来るのかを体験してみた</title>
      <link>https://www.okb-shelf.work/entry/experience_scratch/</link>
      <pubDate>Sun, 29 Mar 2020 13:27:57 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/experience_scratch/</guid>
      <description>&lt;h2 id=&#34;ビジュアルプログラミングscratch&#34;&gt;ビジュアルプログラミングSCRATCH&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;SCRATCH(スクラッチ)&lt;/code&gt;に関しての説明はもう不要だと思いますので省きます。小学生などの低年齢層を対象にプログラミングをブラウザと&lt;a href=&#34;http://d.hatena.ne.jp/keyword/GUI&#34;&gt;GUI&lt;/a&gt;を使って学習することが出来るMIT開発のビジュアルプログラミングのプラットホームですが、どれぐらいのものが作れるのかが気になったので少しだけ遊んでみました。&lt;/p&gt;
&lt;p&gt;また、普段は業務で&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%B8%C0%B8%EC&#34;&gt;プログラミング言語&lt;/a&gt;を使ってコードを記述しています。ビジュアル&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%B8%C0%B8%EC&#34;&gt;プログラミング言語&lt;/a&gt;から&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%B8%C0%B8%EC&#34;&gt;プログラミング言語&lt;/a&gt;の学習に進む際にどんなことが壁になるのかを体験してみました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ビジュアルプログラミングを卒業した後に覚えたいプログラミング言語</title>
      <link>https://www.okb-shelf.work/entry/learn_after_visual_programing/</link>
      <pubDate>Sat, 28 Mar 2020 21:33:59 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/learn_after_visual_programing/</guid>
      <description>&lt;h2 id=&#34;プログラミングを学ぶ背景&#34;&gt;プログラミングを学ぶ背景&lt;/h2&gt;
&lt;p&gt;2020年より小学校ではプログラミングが必修化されて、必然的に小学校を卒業するまでに生徒たちはプログラミングを学ぶことになります。&lt;/p&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://www.mext.go.jp/a_menu/shotou/zyouhou/detail/1416328.htm&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;小学校プログラミング教育に関する資料：文部科学省&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;www.mext.go.jp&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;小学校でのプログラミングが必修化されている目的として「&lt;code&gt;プログラミング的思考力&lt;/code&gt;」を鍛えたいという点があります。「いや、プログラミング的思考力って何やねん」というツッコミはおいておいて、実際に小学校で取り入れている、もしくは小学生が自身で学ぶ場合のプログラミング教育の実例をいくらか見てみました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【現役エンジニアが物申す】未経験のエンジニアが企業でインターンやアルバイトをする際のNGな言葉5選</title>
      <link>https://www.okb-shelf.work/entry/ng_word_intern/</link>
      <pubDate>Sat, 28 Mar 2020 01:14:48 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/ng_word_intern/</guid>
      <description>&lt;h2 id=&#34;この記事の対象読者&#34;&gt;この記事の対象読者&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;未経験からエンジニアになりたい&lt;/li&gt;
&lt;li&gt;他業界からエンジニアに転職したい&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%D5%A5%EA%A1%BC%A5%E9%A5%F3%A5%B9&#34;&gt;フリーランス&lt;/a&gt;を目指したい&lt;/li&gt;
&lt;li&gt;自由なワーキングスタイルを確立した&lt;/li&gt;
&lt;li&gt;リモートワーク, テレワークがしたい&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;など&amp;hellip;&lt;/p&gt;</description>
    </item>
    <item>
      <title>【モジュールとの比較】Elixirで無名関数を使って再帰処理を記述する方法</title>
      <link>https://www.okb-shelf.work/entry/recursive_by_anonymous/</link>
      <pubDate>Sat, 21 Mar 2020 13:03:49 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/recursive_by_anonymous/</guid>
      <description>&lt;h2 id=&#34;無名関数では再帰処理が難しい&#34;&gt;無名関数では&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%BA%C6%B5%A2&#34;&gt;再帰&lt;/a&gt;処理が難しい&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Elixir&lt;/code&gt;で&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%BA%C6%B5%A2&#34;&gt;再帰&lt;/a&gt;関数を記述しようと思った際には、&lt;code&gt;defmodule Foo&lt;/code&gt;と定義して、そのモジュール内部に&lt;code&gt;def bar&lt;/code&gt;のように関数を定義して、パターンマッチもしくは、分岐処理によって&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%BA%C6%B5%A2&#34;&gt;再帰&lt;/a&gt;関数を処理するのが一般的。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-elixir&#34; data-lang=&#34;elixir&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;defmodule&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;Sample&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kd&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sum&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;([],&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;acc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;do&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;acc&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kd&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sum&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;([&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;head&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tail&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;acc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;sum&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tail&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;acc&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;head&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nc&#34;&gt;Sample&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sum&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;([&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;|&amp;gt;&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;IO&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;puts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 6&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;しかし、わざわざモジュールに定義したくない時、対して使い回す予定もなく、1回きりの&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%BA%C6%B5%A2&#34;&gt;再帰&lt;/a&gt;処理が書きたい場合には上記のようにモジュールを定義して、&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%BA%C6%B5%A2&#34;&gt;再帰&lt;/a&gt;関数を記述するという方法は煩わしいとも言える。とすると、使い切りの関数として候補にあがるのは&lt;code&gt;無名関数&lt;/code&gt;ということになる。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【使用例あり(for文vs内包表記)】Pythonでデコレーターを使って関数の平均実行時間を測定する</title>
      <link>https://www.okb-shelf.work/entry/use_decolator_to_measure/</link>
      <pubDate>Sat, 14 Mar 2020 21:17:25 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/use_decolator_to_measure/</guid>
      <description>&lt;h2 id=&#34;実装したデコレーター用の関数&#34;&gt;実装したデコレーター用の関数&lt;/h2&gt;
&lt;p&gt;全体のコードはこちら&lt;/p&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://github.com/okabe-yuya/py-benchmark&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;GitHub - okabe-yuya/py-benchmark: This package can measure elapsed time(average time) of function too easy&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;github.com&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;すでに似た様な記事が多く記述されているが、指定回数の平均実行時間を出力したいのは自分が初めてだと信じて実装してみた。&lt;code&gt;python&lt;/code&gt;の&lt;code&gt;デコレーター&lt;/code&gt;を使用して、指定回数の平均実行時間を算出することが出来る。&lt;code&gt;デコレーター&lt;/code&gt;に関する詳しい説明はすでに多くの記事が存在しているのでそちらにおまかせします。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【サンプルコード有り】golangで三項演算子っぽいものを記述する方法について</title>
      <link>https://www.okb-shelf.work/entry/golang_ternary_operator/</link>
      <pubDate>Mon, 09 Mar 2020 10:33:09 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/golang_ternary_operator/</guid>
      <description>&lt;h2 id=&#34;嫌だなぁと感じる場面&#34;&gt;嫌だなぁと感じる場面&lt;/h2&gt;
&lt;p&gt;業務を進める中で、以下の様なコードを書くことが多かった。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;drink&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;orderNum&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;drink&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;green tea&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;else&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;drink&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;tea&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;orderNum&lt;/code&gt;の様な関数の引数で指定される値であったり、&lt;code&gt;http&lt;/code&gt;経由で指定された&lt;code&gt;query&lt;/code&gt;によって値をセットする処理なのだが、事前に&lt;code&gt;drink&lt;/code&gt;という同じ型に該当する初期値となる変数を用意しておく必要があり個人的には好きではない。しかしながら、これが&lt;code&gt;golang&lt;/code&gt;の言語デザインでもあり、&lt;code&gt;Qiita&lt;/code&gt;で&lt;a href=&#34;https://twitter.com/rui314&#34;&gt;Rui Ueyama&lt;/a&gt;さんも言及している。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【並行処理vs逐次処理】プロセスを事前に立ち上げることによって高速化されるのか【めちゃ速】</title>
      <link>https://www.okb-shelf.work/entry/verification_before_spawn/</link>
      <pubDate>Sat, 07 Mar 2020 11:03:52 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/verification_before_spawn/</guid>
      <description>&lt;h2 id=&#34;前回の話&#34;&gt;前回の話&lt;/h2&gt;
&lt;p&gt;「並行コンピューティング技法」を読み進める中で「並行和」の実装を&lt;code&gt;Elixir&lt;/code&gt;を用いて行なった。何とか実装が完了した並行和の処理を複数プロセスを立ち上げてチャンクを分割して実行する並行処理(&lt;code&gt;parallel&lt;/code&gt;)と、チャンクを分割せずにメインの1つのプロセスのみで実行する逐次処理(&lt;code&gt;serial&lt;/code&gt;)と比較した所、何と並行処理よりも逐次処理の方が&lt;strong&gt;約10000倍も速い&lt;/strong&gt;という残念な結果に終わってしまった。完全敗北。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【並行処理vs逐次処理】Elixirで実装した並行和と逐次和をベンチマーク測定をして比較した結果【完全敗北】</title>
      <link>https://www.okb-shelf.work/entry/parallel_vs_seqencial/</link>
      <pubDate>Sun, 23 Feb 2020 21:52:37 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/parallel_vs_seqencial/</guid>
      <description>&lt;h2 id=&#34;前回までのお話&#34;&gt;前回までのお話&lt;/h2&gt;
&lt;p&gt;「並行コンピューティング技法」という書籍を読み進める中で「並行和」という並行処理にてデータの要素の合計値を求める&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%A2%A5%EB%A5%B4%A5%EA%A5%BA%A5%E0&#34;&gt;アルゴリズム&lt;/a&gt;を&lt;code&gt;Elixir&lt;/code&gt;を用いて実装してみた。何とか動くところまで作れたものの、実行速度がどれだけ逐次処理と異なるかは実行してみないと分からない。そこで&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%D9%A5%F3%A5%C1%A5%DE%A1%BC%A5%AF&#34;&gt;ベンチマーク&lt;/a&gt;測定をするためのログを出力すると決めて1週間が経過していた。&lt;/p&gt;
&lt;p&gt;前回のお話はこちらから&lt;/p&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://www.okb-shelf.work/entry/parallel_sum_elixir&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-image&#34;&gt;
    &lt;img src=&#34;https://www.okb-shelf.work/entry/parallel_sum_elixir/20210828100832.png&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;
  &lt;/span&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;【第17回清流elixir勉強会】Elixirを用いた並行和アルゴリズムの実装 - やわらかテック&lt;/span&gt;
    &lt;span class=&#34;linkcard-desc&#34;&gt;トピック あけましておめでとうございます。1月2月は色々と忙しくて、全く清流elixirにて勉強会を開催できず... 2ヶ月ぶりの開催となりましたが常連の方、新規の方、リモートでの接続、多くの方に参加して頂けました。ありがとうございました。…&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;www.okb-shelf.work&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;h2 id=&#34;ベンチマーク測定の実装&#34;&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%D9%A5%F3%A5%C1%A5%DE%A1%BC%A5%AF&#34;&gt;ベンチマーク&lt;/a&gt;測定の実装&lt;/h2&gt;
&lt;p&gt;以前、Yamazakiさんよりご紹介頂いた&lt;strong&gt;「Benchfella」&lt;/strong&gt;を使用しました。ご紹介頂きまして有難うございます。めちゃくちゃ手軽で使いやすかった。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【第1回: データ分析xブログ】データ分析の力でPV数は増やせるのか。現状を分析して目標を立てるまで</title>
      <link>https://www.okb-shelf.work/entry/data_analytics_set_goal/</link>
      <pubDate>Sat, 22 Feb 2020 15:14:23 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/data_analytics_set_goal/</guid>
      <description>&lt;h2 id=&#34;この記事を書いた理由&#34;&gt;この記事を書いた理由&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Googleアナリティクス&lt;/code&gt;や&lt;code&gt;Googleサーチコンソール&lt;/code&gt;といった優秀なツールがあり、使い方を解説する記事が多数ある一方で&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;どう使えばPV数が増えるのか&lt;/li&gt;
&lt;li&gt;収益を生み出すには何に注目するのか&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;といったテーマの記事が非常に少ないことに気づいた。現状(2020/02/16時点)で1日の平均PV数が「10」のこのブログが&lt;code&gt;Googleアナリティクス&lt;/code&gt;や&lt;code&gt;Googleサーチコンソール&lt;/code&gt;のデータを使用したデータ分析によってPV数が増えていくのかを記録することが一番の目的になる。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【第17回清流elixir勉強会】Elixirを用いた並行和アルゴリズムの実装</title>
      <link>https://www.okb-shelf.work/entry/parallel_sum_elixir/</link>
      <pubDate>Sat, 15 Feb 2020 18:54:06 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/parallel_sum_elixir/</guid>
      <description>&lt;h2 id=&#34;トピック&#34;&gt;トピック&lt;/h2&gt;
&lt;p&gt;あけましておめでとうございます。1月2月は色々と忙しくて、全く清流elixirにて勉強会を開催できず&amp;hellip;&lt;/p&gt;
&lt;p&gt;2ヶ月ぶりの開催となりましたが常連の方、新規の方、リモートでの接続、多くの方に参加して頂けました。ありがとうございました。&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%CF%A5%C3%A5%D4%A1%BC%A5%BF%A1%BC%A5%F3&#34;&gt;ハッピーターン&lt;/a&gt;を持ち合わせていったのですが気づいたら自分が半分以上食べてしまっていました。忍びない..&lt;/p&gt;</description>
    </item>
    <item>
      <title>【並行コンピューティング技法】第3章のまとめ</title>
      <link>https://www.okb-shelf.work/entry/concurrency_technic_part3/</link>
      <pubDate>Tue, 11 Feb 2020 20:10:43 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/concurrency_technic_part3/</guid>
      <description>&lt;h2 id=&#34;前回までのあらすじ&#34;&gt;前回までのあらすじ&lt;/h2&gt;
&lt;p&gt;実際に並行処理を記述する際にどのように手法を決めて実装していくのかという話が第2章のメインであった。
並行処理の方針を決める手法は以下の2通りで、第2章ではそれぞれの特徴やマナー、サンプルに触れながら内容が進んでいく。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【並行コンピューティング技法】第2章のまとめ</title>
      <link>https://www.okb-shelf.work/entry/concurrency_technic_part2/</link>
      <pubDate>Sun, 09 Feb 2020 12:50:32 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/concurrency_technic_part2/</guid>
      <description>&lt;h2 id=&#34;前回までのあらすじ&#34;&gt;前回までのあらすじ&lt;/h2&gt;
&lt;p&gt;以前から気になっていた「並行コンピューティング技法」を衝動買い。全体の構造を読み解き、どんな知識がこの本から得られるかを考察した。合わせて、第1章を読み、内容を簡潔にまとめた。第1章は大きく以下のような内容を扱っている&lt;/p&gt;</description>
    </item>
    <item>
      <title>【並行コンピューティング技法】全体の構成と得られる知識 &amp; 第１章のまとめ</title>
      <link>https://www.okb-shelf.work/entry/concurrency_technic_part1/</link>
      <pubDate>Thu, 06 Feb 2020 09:20:58 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/concurrency_technic_part1/</guid>
      <description>&lt;h2 id=&#34;今回の購入物&#34;&gt;今回の購入物&lt;/h2&gt;
&lt;p&gt;前から買おうとは思っていたが、読む時間ないなぁと手を出さずにいた「並行コンピューティング技法」をたまたま立ち寄った本屋にて発見し、思い切って購入。最近、学習に対するモチベーションが下がっているので気持ち新たにスタートするためにも購入&lt;/p&gt;</description>
    </item>
    <item>
      <title>ElixirのString.contains?で第1引数にbinaryを第2引数に日本語ひらがなを与えるとfalseになる理由についての調査報告</title>
      <link>https://www.okb-shelf.work/entry/why_string_contains/</link>
      <pubDate>Wed, 05 Feb 2020 09:37:21 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/why_string_contains/</guid>
      <description>&lt;h2 id=&#34;事の発端&#34;&gt;事の発端&lt;/h2&gt;
&lt;p&gt;たまたま&lt;code&gt;Elixir&lt;/code&gt;でhttp responseの&lt;code&gt;binary&lt;/code&gt;情報に対して、特定の日本語が含まれているかという判定式を記述していたところで、この現象に遭遇した。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【擬似実装コード有り】Pythonでswitch構文っぽいものを表現する方法について</title>
      <link>https://www.okb-shelf.work/entry/fake_swith_python/</link>
      <pubDate>Sat, 01 Feb 2020 12:00:27 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/fake_swith_python/</guid>
      <description>&lt;h2 id=&#34;かゆい所に手が届くswitch構文&#34;&gt;かゆい所に手が届くswitch構文&lt;/h2&gt;
&lt;p&gt;別に&lt;code&gt;switch構文&lt;/code&gt;がなくても、おそらくその処理は工夫次第で記述することが可能だろう。しかし、&lt;code&gt;golang&lt;/code&gt;や&lt;code&gt;javascript&lt;/code&gt;に見られる&lt;code&gt;switch構文&lt;/code&gt;を用いることで少なくとも可読性は上がるし、拡張性も&lt;code&gt;if else&lt;/code&gt;の組み合わせよりは良いはず。それに&lt;code&gt;if else&lt;/code&gt;の組み合わせで複雑な多条件を表現すると階層化されて条件がネストされるため視認性が下がるので、好きではない。&lt;code&gt;switch構文&lt;/code&gt;なら見かけ上では&lt;code&gt;caseA&lt;/code&gt;, &lt;code&gt;caseB&lt;/code&gt;, &lt;code&gt;caseC&lt;/code&gt;&amp;hellip;は対等に見えるので視認性はこちらの方が良い(実際の内部処理は上から辿っている模様)&lt;/p&gt;</description>
    </item>
    <item>
      <title>【golang/Elixirのサンプル有り】何度も同じようなテストを書くのがつらいので無名関数を使って楽しくしよう</title>
      <link>https://www.okb-shelf.work/entry/use_anonymous_for_test/</link>
      <pubDate>Sun, 19 Jan 2020 11:47:13 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/use_anonymous_for_test/</guid>
      <description>&lt;h2 id=&#34;反応が良かったツイート&#34;&gt;反応が良かったツイート&lt;/h2&gt;
&lt;p&gt;テストを無名関数で書くと楽しいよという旨のツイートの反応が良かった。ただ言葉だけだと正確に情報が伝わらないので実際にどうやっているのかをコードに落としてみた&lt;/p&gt;</description>
    </item>
    <item>
      <title>数値をASCIIを用いてaからzまで(半角英字)の文字列に変換</title>
      <link>https://www.okb-shelf.work/entry/int_to_ascii/</link>
      <pubDate>Sat, 11 Jan 2020 19:11:13 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/int_to_ascii/</guid>
      <description>&lt;h2 id=&#34;何をしたいのか&#34;&gt;何をしたいのか&lt;/h2&gt;
&lt;p&gt;業務で書いたコードなのだが、作成する元になったアイディアがボツになったため、お蔵入り。需要は無いだろうけど、せっかくなので当時、ググっても出てこなかったので公開しておこうと思う。1から始まる任意の数字を&lt;code&gt;ASCII&lt;/code&gt;で定義されている数値と文字の紐付け表から&lt;code&gt;a&lt;/code&gt;から&lt;code&gt;z&lt;/code&gt;の適切な小文字アルファベット(半角英字)に変換するという処理だ。&lt;code&gt;for&lt;/code&gt;で生成される&lt;code&gt;iteration&lt;/code&gt;のカウントを使ってa-zの文字列を生成するために使用していた。言葉で伝えても分かりづらいので動作の例を下記に記す&lt;/p&gt;</description>
    </item>
    <item>
      <title>【サンプルコード有り】golangで複数条件のソートを無名関数を使っていい感じに実装してみた</title>
      <link>https://www.okb-shelf.work/entry/golang_sort/</link>
      <pubDate>Sat, 11 Jan 2020 17:24:33 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/golang_sort/</guid>
      <description>&lt;h2 id=&#34;何をしようとしているのか&#34;&gt;何をしようとしているのか&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;struct(以降、構造体と表記)&lt;/code&gt;を要素に持つ、配列をソートする必要がある場面に出くわした。通常というか一般的な数値や文字列のソートと異なり、構造体のAフィールドの値が大きい順番かつ、Bフィールドの値が小さい順かつ&amp;hellip;のようなソートを行う必要があるため、結構メンドくさい&lt;/p&gt;</description>
    </item>
    <item>
      <title>【第16回清流elixir勉強会】今年のElixirに関する学習を振り返る会</title>
      <link>https://www.okb-shelf.work/entry/2019/12/21/161948/</link>
      <pubDate>Sat, 21 Dec 2019 16:19:48 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/2019/12/21/161948/</guid>
      <description>&lt;h2 id=&#34;トピック&#34;&gt;トピック&lt;/h2&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://elixir-sr.connpass.com/event/159621/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;【第16回清流elixir勉強会】年越し前に今年のElixirの学びを振り返る会 (2019/12/20 19:30〜)&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;elixir-sr.connpass.com&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;早いもので今年ももう終わろうとしています。今年度より&lt;strong&gt;清流elixir&lt;/strong&gt;というコミュニティを立ち上げて勉強会を行い今回を含めて合計16回の勉強会を開催することが出来た。幅広い方に参加して頂き、多くの方と知り合うことが出来た。それに見える世界観も大きく変わった&lt;/p&gt;</description>
    </item>
    <item>
      <title>【サンプルコード有り】golangとclosureで作ったクールなカウンターをElixirで書き直した</title>
      <link>https://www.okb-shelf.work/entry/closure_in_elixir/</link>
      <pubDate>Sat, 21 Dec 2019 12:13:42 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/closure_in_elixir/</guid>
      <description>&lt;h2 id=&#34;closureクロージャーとは何か&#34;&gt;closure(&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%AF%A5%ED%A1%BC%A5%B8%A5%E3&#34;&gt;クロージャ&lt;/a&gt;ー)とは何か&lt;/h2&gt;
&lt;p&gt;難しい概念の説明は強いエンジニアや大学の賢い先生方にお任せするため、深い説明は行わない。ざっくりと言うと、関数の中である値を保持させておいて、その値を変化させる(操作する)ための変数を保持している関数の内部に用意された無名関数のことだ。変数にアクセスするためには&lt;code&gt;closure&lt;/code&gt;経由でのみしか許可させない、変数の値を変化させるためには&lt;code&gt;closure&lt;/code&gt;経由でしか行わせないとすることで、変数のスコープを上手く隠すことが可能になる。実際に&lt;code&gt;golang&lt;/code&gt;で書いた&lt;code&gt;closure&lt;/code&gt;と動作をお見せする&lt;/p&gt;</description>
    </item>
    <item>
      <title>【書評】Elixirの歴史を辿るうちに「電話はなぜつながるのか」をふと読んでいた</title>
      <link>https://www.okb-shelf.work/entry/read_why_connect_tel/</link>
      <pubDate>Wed, 18 Dec 2019 00:13:45 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/read_why_connect_tel/</guid>
      <description>&lt;h2 id=&#34;なぜ読んだのか&#34;&gt;なぜ読んだのか&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://hb.afl.rakuten.co.jp/hgc/g00r00z6.42s2f44c.g00r00z6.42s2gc90/kaereba_main_201912180003570931?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fdorama%2Fn31771032%2F&amp;amp;m=http%3A%2F%2Fm.rakuten.co.jp%2Fdorama%2Fi%2F10837071%2F&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://thumbnail.image.rakuten.co.jp/@0_mall/dorama/cabinet/bkimg/200x/547/31771032.jpg?_ex=320x320&#34;&gt;&lt;/a&gt;&lt;a href=&#34;https://hb.afl.rakuten.co.jp/hgc/g00r00z6.42s2f44c.g00r00z6.42s2gc90/kaereba_main_201912180003570931?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fdorama%2Fn31771032%2F&amp;amp;m=http%3A%2F%2Fm.rakuten.co.jp%2Fdorama%2Fi%2F10837071%2F&#34;&gt;【新品】【本】電話はなぜつながるのか 知っておきたいNTT電話、IP電話、携帯電話の基礎知識 米田正明/著&lt;/a&gt;posted with &lt;a href=&#34;https://kaereba.com&#34;&gt;カエレバ&lt;/a&gt;&lt;a href=&#34;https://hb.afl.rakuten.co.jp/hgc/16085697.8e7d6688.16085698.03aadbf8/kaereba_main_201912180003570931?pc=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2F%25E9%259B%25BB%25E8%25A9%25B1%25E3%2581%25AF%25E3%2581%25AA%25E3%2581%259C%2F-%2Ff.1-p.1-s.1-sf.0-st.A-v.2%3Fx%3D0%26scid%3Daf_ich_link_urltxt%26m%3Dhttp%3A%2F%2Fm.rakuten.co.jp%2F&#34;&gt;楽天市場&lt;/a&gt;&lt;a href=&#34;https://www.amazon.co.jp/gp/search?keywords=%E9%9B%BB%E8%A9%B1%E3%81%AF%E3%81%AA%E3%81%9C&amp;amp;__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&amp;amp;tag=matuko110-22&#34;&gt;Amazon&lt;/a&gt;&lt;a href=&#34;https://px.a8.net/svt/ejp?a8mat=35U3W3+7QNN6+2N1Y+BW8O2&amp;amp;a8ejpredirect=http%3A%2F%2F7af-ent.omni7.jp%2Frelay%2Faffiliate%2FentranceProcess.do%3Furl%3Dhttp%253A%252F%252F7net.omni7.jp%252Fsearch%252F%253Fkeyword%253D%2525E9%25259B%2525BB%2525E8%2525A9%2525B1%2525E3%252581%2525AF%2525E3%252581%2525AA%2525E3%252581%25259C%2526searchKeywordFlg%253D1&#34;&gt;7net&lt;/a&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www17.a8.net/0.gif?a8mat=35U3W3+7QNN6+2N1Y+BW8O2&#34;&gt;&lt;/p&gt;
&lt;p&gt;個人的な興味があって、以前より&lt;code&gt;Elixir&lt;/code&gt;という&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%B8%C0%B8%EC&#34;&gt;プログラミング言語&lt;/a&gt;を学んでいる。この&lt;code&gt;Elixir&lt;/code&gt;の動作環境が&lt;code&gt;ErlangVM&lt;/code&gt;というものであり、&lt;code&gt;Erlang&lt;/code&gt;という&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%B8%C0%B8%EC&#34;&gt;プログラミング言語&lt;/a&gt;を実行するためのものだ。この&lt;code&gt;Elixir&lt;/code&gt;、&lt;code&gt;Erlang&lt;/code&gt;は高い堅牢性(robustness)を備えており、古くから金融システムや電話交換機に用いられているという。また、この&lt;code&gt;Erlang&lt;/code&gt;という言語を作ったのはJoeを中心とした、&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%A8%A5%EA%A5%AF%A5%BD%A5%F3&#34;&gt;エリクソン&lt;/a&gt;社という通信機器を扱う&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%B9%A5%A6%A5%A7%A1%BC%A5%C7%A5%F3&#34;&gt;スウェーデン&lt;/a&gt;の企業であり、実装には&lt;code&gt;Erlang&lt;/code&gt;が用いられていたようだ&lt;/p&gt;
&lt;p&gt;つまり、&lt;code&gt;Elixir&lt;/code&gt;の歴史を追う中で&lt;code&gt;Erlang&lt;/code&gt;に出会い、&lt;code&gt;Erlang&lt;/code&gt;の歴史を追う中で、用途を調べた所、「&lt;strong&gt;電話&lt;/strong&gt;」というワードに辿りついたわけだ。どのような実装がされているのかを理解するためには、電話にはどのような仕様が必要なのかを知りたいと思った&lt;/p&gt;</description>
    </item>
    <item>
      <title>websocketを使ったgolang産チャットアプリのやらかしスレッド設計をkubernetesでスケール可能に修正した</title>
      <link>https://www.okb-shelf.work/entry/redesign_websocket/</link>
      <pubDate>Mon, 16 Dec 2019 23:02:35 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/redesign_websocket/</guid>
      <description>&lt;h2 id=&#34;機能に関する詳細&#34;&gt;機能に関する詳細&lt;/h2&gt;
&lt;p&gt;現在、業務で&lt;code&gt;websocket&lt;/code&gt;を使用したチャットアプリケーションの開発に関わっている。自分が担当しているのはサーバーサイドのみで、実装は&lt;code&gt;golang&lt;/code&gt;を使用している。&lt;code&gt;websocket&lt;/code&gt;のライブラリはgorilla/websocketを採用している&lt;/p&gt;</description>
    </item>
    <item>
      <title>【現役エンジニアが考察】はじめてのプログラミング言語習得のコツ。挫折しないためにはどう学ぶべきか</title>
      <link>https://www.okb-shelf.work/entry/how_learn_first_programing/</link>
      <pubDate>Sat, 14 Dec 2019 12:25:46 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/how_learn_first_programing/</guid>
      <description>&lt;h2 id=&#34;この記事を書く理由&#34;&gt;この記事を書く理由&lt;/h2&gt;
&lt;p&gt;個人的に&lt;code&gt;Elixir&lt;/code&gt;という&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%B8%C0%B8%EC&#34;&gt;プログラミング言語&lt;/a&gt;の勉強会を主催したり、&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%BB%A5%DF&#34;&gt;セミ&lt;/a&gt;ナーに登壇する中で多くのプログラミングの初学者や、現在、学習をしているが、何をしていいのか分からないなど多くの相談を受けた。毎度、回答する中で&lt;strong&gt;「参考になりました」&lt;/strong&gt;と良い反応をもらうことが多くなってきたので、せっかくなので記事にして多くの方に情報を共有できればと思う&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;挫折を防ぐため&lt;/li&gt;
&lt;li&gt;効率的にプログラミング学習を進めるため&lt;/li&gt;
&lt;li&gt;楽しくプログラミングの学習を続けるため etc&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;にぜひ参考にして頂ければと思います&lt;/p&gt;</description>
    </item>
    <item>
      <title>【プログラミングErlang7章より】並行処理とアクターモデルの概念について</title>
      <link>https://www.okb-shelf.work/entry/about_actor_model/</link>
      <pubDate>Sat, 07 Dec 2019 16:49:25 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/about_actor_model/</guid>
      <description>&lt;h2 id=&#34;並行処理について&#34;&gt;並行処理について&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;人間なら誰でも並行処理を理解している。&lt;/p&gt;
&lt;p&gt;この世界は並列だ。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/Erlang&#34;&gt;Erlang&lt;/a&gt;のプログラミングは人間の思考と対話をモデル化している。&lt;/p&gt;
&lt;p&gt;人間はそれぞれメッセージを送ることによって通信し合う独立した存在として動く。&lt;/p&gt;
&lt;p&gt;誰かが死ねば、他の誰かが気づいてくれる。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【第15回清流elixir&#43;fukuoka.exもくもく勉強会】Elixirでチャットサーバーを作りながらNode間通信を試す</title>
      <link>https://www.okb-shelf.work/entry/seiryu_elixir_part15/</link>
      <pubDate>Sat, 07 Dec 2019 13:30:12 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/seiryu_elixir_part15/</guid>
      <description>&lt;h2 id=&#34;トピック&#34;&gt;トピック&lt;/h2&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://elixir-sr.connpass.com/event/156604/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;【第15回清流elixir勉強会】Elixirもくもく会&amp;#43;fukuoka.ex (2019/11/28 19:30〜)&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;elixir-sr.connpass.com&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;Qiitaの&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%A2%A5%C9%A5%D9%A5%F3%A5%C8%A5%AB%A5%EC%A5%F3%A5%C0%A1%BC&#34;&gt;アドベントカレンダー&lt;/a&gt;の執筆したり、業務が忙しすぎたり、&lt;code&gt;PID&lt;/code&gt;の闇にハマっていたりで、少し間が空いてしまいましたが第15回のレポートをまとめました&lt;/p&gt;
&lt;p&gt;今回も前回同様に、&lt;a href=&#34;https://twitter.com/koga1020_&#34;&gt;kogaさん&lt;/a&gt;にお声がけ頂きまして&lt;strong&gt;fukuoka.ex&lt;/strong&gt;さんと合同でもくもく勉強会を開催しました&lt;/p&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://fukuokaex.connpass.com/event/156572/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;fukuoka.ex#34&amp;#43;清流Elixir#15：Elixirもくもく会～入門もあるよ (2019/11/28 19:00〜)&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;fukuokaex.connpass.com&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;僕はQiitaの&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%A2%A5%C9%A5%D9%A5%F3%A5%C8%A5%AB%A5%EC%A5%F3%A5%C0%A1%BC&#34;&gt;アドベントカレンダー&lt;/a&gt;で&lt;strong&gt;&lt;code&gt;Elixir&lt;/code&gt;で&lt;code&gt;Node&lt;/code&gt;間チャットアプリを作る&lt;/strong&gt;ってのを書こうと思って、前からやりたかった&lt;code&gt;Node&lt;/code&gt;間通信に挑戦したので当日の内容と後日の作業をプラスでまとめたものを共有します&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;清流elixir-infomation&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;開催場所: 丸の内(愛知)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Elixrのプロセスとは一体何なのか。探索の旅に出てた</title>
      <link>https://www.okb-shelf.work/entry/about_elixir_process/</link>
      <pubDate>Wed, 04 Dec 2019 08:35:00 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/about_elixir_process/</guid>
      <description>&lt;h2 id=&#34;今更だけど&#34;&gt;今更だけど&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Node&lt;/code&gt;間通信のチャットサーバーを作っている時にふとなぜか、&lt;strong&gt;「Elixirでspawnとかした後に返ってくる&lt;code&gt;PID&lt;/code&gt;って一体何なんだ?」&lt;/strong&gt;と思い立った&lt;/p&gt;</description>
    </item>
    <item>
      <title>ほとんど毎日パソコン触って目の疲れがやばいのでブルーライトカットメガネを買って1週間使った感想</title>
      <link>https://www.okb-shelf.work/entry/purchase_blueright_cut/</link>
      <pubDate>Sun, 01 Dec 2019 12:38:59 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/purchase_blueright_cut/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://hb.afl.rakuten.co.jp/hgc/g00s2yh6.42s2ff59.g00s2yh6.42s2g6d2/kaereba_main_201912011233123055?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fzoff%2Fza181p01%2F&amp;amp;m=http%3A%2F%2Fm.rakuten.co.jp%2Fzoff%2Fi%2F10001859%2F&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://thumbnail.image.rakuten.co.jp/@0_mall/zoff/cabinet/item2018/za181p01.jpg?_ex=320x320&#34;&gt;&lt;/a&gt;&lt;a href=&#34;https://hb.afl.rakuten.co.jp/hgc/g00s2yh6.42s2ff59.g00s2yh6.42s2g6d2/kaereba_main_201912011233123055?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fzoff%2Fza181p01%2F&amp;amp;m=http%3A%2F%2Fm.rakuten.co.jp%2Fzoff%2Fi%2F10001859%2F&#34;&gt;Zoff ブルーライトカットメガネ(スクエア型 PCメガネ(｜Zoff PC CLEAR PACK【ゾフ クリアレンズ 透明レンズ 軽量メガネ ブルーライトカット パソコン用メガネ PCめがね PC眼鏡 パソコンめがね メンズ レディース おしゃれ zoff_pc ブラック PCクリアパック】【ZA181P01_14E1】&lt;/a&gt;posted with &lt;a href=&#34;https://kaereba.com&#34;&gt;カエレバ&lt;/a&gt;&lt;a href=&#34;https://hb.afl.rakuten.co.jp/hgc/16085697.8e7d6688.16085698.03aadbf8/kaereba_main_201912011233123055?pc=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FZoff%25E3%2583%2596%25E3%2583%25AB%25E3%2583%25BC%25E3%2583%25A9%25E3%2582%25A4%25E3%2583%2588%25E3%2582%25AB%25E3%2583%2583%25E3%2583%2588%25E3%2583%25A1%25E3%2582%25AC%25E3%2583%258D%2528%25E3%2582%25B9%25E3%2582%25AF%25E3%2582%25A8%25E3%2582%25A2%25E5%259E%258BPC%25E3%2582%2581%25E3%2581%258C%25E3%2581%25AD%2529%2F-%2Ff.1-p.1-s.1-sf.0-st.A-v.2%3Fx%3D0%26scid%3Daf_ich_link_urltxt%26m%3Dhttp%3A%2F%2Fm.rakuten.co.jp%2F&#34;&gt;楽天市場&lt;/a&gt;&lt;a href=&#34;https://www.amazon.co.jp/gp/search?keywords=Zoff%E3%83%96%E3%83%AB%E3%83%BC%E3%83%A9%E3%82%A4%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%83%A1%E3%82%AC%E3%83%8D%28%E3%82%B9%E3%82%AF%E3%82%A8%E3%82%A2%E5%9E%8BPC%E3%82%81%E3%81%8C%E3%81%AD%29&amp;amp;__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&amp;amp;tag=matuko110-22&#34;&gt;Amazon&lt;/a&gt;&lt;a href=&#34;https://px.a8.net/svt/ejp?a8mat=35U3W3+7QNN6+2N1Y+BW8O2&amp;amp;a8ejpredirect=http%3A%2F%2F7af-ent.omni7.jp%2Frelay%2Faffiliate%2FentranceProcess.do%3Furl%3Dhttp%253A%252F%252F7net.omni7.jp%252Fsearch%252F%253Fkeyword%253DZoff%2525E3%252583%252596%2525E3%252583%2525AB%2525E3%252583%2525BC%2525E3%252583%2525A9%2525E3%252582%2525A4%2525E3%252583%252588%2525E3%252582%2525AB%2525E3%252583%252583%2525E3%252583%252588%2525E3%252583%2525A1%2525E3%252582%2525AC%2525E3%252583%25258D%252528%2525E3%252582%2525B9%2525E3%252582%2525AF%2525E3%252582%2525A8%2525E3%252582%2525A2%2525E5%25259E%25258BPC%2525E3%252582%252581%2525E3%252581%25258C%2525E3%252581%2525AD%252529%2526searchKeywordFlg%253D1&#34;&gt;7net&lt;/a&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www17.a8.net/0.gif?a8mat=35U3W3+7QNN6+2N1Y+BW8O2&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>【第14回清流elixir勉強会】Elixirのマクロを完全に理解する会</title>
      <link>https://www.okb-shelf.work/entry/seiryu_elixir_part14/</link>
      <pubDate>Sat, 16 Nov 2019 23:21:06 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/seiryu_elixir_part14/</guid>
      <description>&lt;h2 id=&#34;トピック&#34;&gt;トピック&lt;/h2&gt;
&lt;p&gt;&lt;img alt=&#34;f&amp;#x1f194;takamizawa46:20191116231318p:plain&#34; loading=&#34;lazy&#34; src=&#34;https://www.okb-shelf.work/entry/seiryu_elixir_part14/20191116231318.png&#34;&gt;&lt;/p&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://elixir-sr.connpass.com/event/153220/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;【第14回清流elixir勉強会】Elixirのマクロについて学ぶ会&amp;#43;fukuoka.ex (2019/11/15 19:30〜)&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;elixir-sr.connpass.com&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;第14回目となる清流elixirの勉強会を開催しました&lt;/p&gt;
&lt;p&gt;今回からは本格的にリモート参加枠を用意した。しかし、これが思っていたよりも何倍も難しい。会場のホットな温度感や議論が始まるとリモート参加者にはその現場感を伝えることが出来ない。&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%C8%A5%E9%A5%A4%A5%A2%A5%F3%A5%C9%A5%A8%A5%E9%A1%BC&#34;&gt;トライアンドエラー&lt;/a&gt;でよりリモート参加者の方に価値ある時間が提供出来るように創意工夫していきたい&lt;/p&gt;</description>
    </item>
    <item>
      <title>【メタプログラミング入門】Elixirのマクロに非黒魔術士が挑む</title>
      <link>https://www.okb-shelf.work/entry/macro_elixir/</link>
      <pubDate>Sun, 10 Nov 2019 14:52:01 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/macro_elixir/</guid>
      <description>&lt;h2 id=&#34;マクロは黒魔術&#34;&gt;マクロは黒魔術&lt;/h2&gt;
&lt;p&gt;以前から&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%E1%A5%BF%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0&#34;&gt;メタプログラミング&lt;/a&gt;という単語を耳にしたことはあり、存在は認知していた。マクロは&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%E1%A5%BF%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0&#34;&gt;メタプログラミング&lt;/a&gt;を行うための機能、言語という意味で捉えれば良い(マクロ in &lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%E1%A5%BF%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0&#34;&gt;メタプログラミング&lt;/a&gt;という階層になっている)&lt;/p&gt;
&lt;p&gt;要するに言語拡張のために使う言語に用意された機能というわけだ。&lt;strong&gt;しかし、言語の仕様を気軽に書き換える・追加してしまうことが可能なため仕様には注意を払わねばならない&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>人生で初めてLTしてきたので後日談【よわよわな新卒が勉強会を始めた話】</title>
      <link>https://www.okb-shelf.work/entry/my/_first_lt/</link>
      <pubDate>Sat, 09 Nov 2019 20:25:25 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/my/_first_lt/</guid>
      <description>&lt;h2 id=&#34;後日談とは1週間以上経ってる&#34;&gt;後日談とは(1週間以上経ってる&lt;/h2&gt;
&lt;p&gt;&lt;img alt=&#34;f&amp;#x1f194;takamizawa46:20191109202024p:plain:w450&#34; loading=&#34;lazy&#34; src=&#34;https://www.okb-shelf.work/entry/my/_first_lt/20191109202024.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;いつもお世話になっているから&lt;a href=&#34;https://twitter.com/piacere_ex&#34;&gt;piacereさん&lt;/a&gt;から声を掛けて頂き、人生で初めての自身のネタでのLTかつリモートLTをしました&lt;/p&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://fukuokaex.connpass.com/event/150079/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;【好評につき増枠】fukuoka.ex#32：秋のElixir LT大会 (2019/10/30 19:00〜)&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;fukuokaex.connpass.com&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;今回話したネタは&lt;strong&gt;「清流elixirのこれまで -東海にElixir界の異端児が生まれた話」&lt;/strong&gt;と称して、なぜプログラミング経歴が2年にも満たないよわよわな新卒のキャリアも学もない僕が東海地方で勉強会を開催しているのかという話をした(しかもElixirの)&lt;/p&gt;</description>
    </item>
    <item>
      <title>【レポート】第13回清流elixir勉強会を開催しました【Elixirで作成されたOSSのコードを読んでみる会】</title>
      <link>https://www.okb-shelf.work/entry/seiryu_elixir_part13/</link>
      <pubDate>Sat, 26 Oct 2019 13:24:22 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/seiryu_elixir_part13/</guid>
      <description>&lt;h2 id=&#34;トピック&#34;&gt;トピック&lt;/h2&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://elixir-sr.connpass.com/event/151370/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;【第13回清流elixir勉強会】Elixirで作成されたOSSのコードを読んでみる会 (2019/10/25 19:30〜)&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;elixir-sr.connpass.com&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;第13回目の清流elixirの勉強会を開催しました&lt;/p&gt;
&lt;p&gt;今回は&lt;strong&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/OSS&#34;&gt;OSS&lt;/a&gt;のコードを読んでElixir力をあげる&lt;/strong&gt;という目的かつ、弊コミュニティ初の試みとしてリモート(Zoom)での参加にも対応しました&lt;/p&gt;
&lt;p&gt;これで全国からのジョインが可能に!! 勉強会の当日は東海と九州が繋がり、事実上の中部から西日本を制覇したことになった。すごい&lt;/p&gt;</description>
    </item>
    <item>
      <title>Elixirでプロセスをspawnで生成してErlangの:random.uniformを呼び出すと全て同じ値になる</title>
      <link>https://www.okb-shelf.work/entry/random_in_spawn/</link>
      <pubDate>Tue, 22 Oct 2019 23:56:40 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/random_in_spawn/</guid>
      <description>&lt;h2 id=&#34;何が起こったのか&#34;&gt;何が起こったのか&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;これの実行結果が全て同じ数値になるのなぜ&amp;hellip;???&lt;a href=&#34;https://t.co/DoUBNy6BoJ&#34;&gt;https://t.co/DoUBNy6BoJ&lt;/a&gt;(1..10, fn _ -&amp;gt;&lt;br&gt;
spawn(fn -&amp;gt;&lt;br&gt;
num = :random.uniform()&lt;br&gt;
IO.puts(num)&lt;br&gt;
end)&lt;br&gt;
end)&lt;/p&gt;
&lt;p&gt;— OKB (@sing_mascle69) &lt;a href=&#34;https://twitter.com/sing_mascle69/status/1186620810837909504?ref_src=twsrc%5Etfw&#34;&gt;2019年10月22日&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;まず、プロセスを複数立ち上げて並行で処理をしようと考えた。その処理の過程の中で&lt;code&gt;Erlang&lt;/code&gt;の&lt;code&gt;:random.uniform()&lt;/code&gt;(Elixirから&lt;a href=&#34;http://d.hatena.ne.jp/keyword/Erlang&#34;&gt;Erlang&lt;/a&gt;のモジュール関数を呼び出す際には&lt;code&gt;:&lt;/code&gt;をつける)を呼び出して実行してみると、何と全て同じ値になっているではないか!!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Elixirで定数を定義する</title>
      <link>https://www.okb-shelf.work/entry/elixir_in_const/</link>
      <pubDate>Sun, 20 Oct 2019 23:26:08 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/elixir_in_const/</guid>
      <description>&lt;h2 id=&#34;elixirには標準にconstがない&#34;&gt;Elixirには標準にconstがない&lt;/h2&gt;
&lt;p&gt;※書き方が早く知りたい方はこの章は読み飛ばして頂いて構いません&lt;/p&gt;
&lt;p&gt;Elixirはいわゆる&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%B4%D8%BF%F4%B7%BF%B8%C0%B8%EC&#34;&gt;関数型言語&lt;/a&gt;だが変数の再代入、正しくはパターンマッチを何度も行うことが出来る。またgo-langのような厳密な型の指定も必要ない&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-elixir&#34; data-lang=&#34;elixir&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;user_input&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;hello world!&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nc&#34;&gt;IO&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;puts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;user_input&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;user_input&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;good bye hello!&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nc&#34;&gt;IO&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;puts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;user_input&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 実行結果&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# hello world!&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# good bye hello! &amp;lt;- 変数の値が変化している&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/python&#34;&gt;python&lt;/a&gt;や&lt;a href=&#34;http://d.hatena.ne.jp/keyword/ruby&#34;&gt;ruby&lt;/a&gt;のように気軽に変数への代入を行うことが出来る一方で&lt;a href=&#34;http://d.hatena.ne.jp/keyword/javascript&#34;&gt;javascript&lt;/a&gt;で言う所の&lt;code&gt;const&lt;/code&gt;たる定数の宣言を標準の組み込み構文では行うことが出来ない&lt;/p&gt;</description>
    </item>
    <item>
      <title>【頭おかしい(褒めてる】ゼロからトースターを作ってみた結果を読了</title>
      <link>https://www.okb-shelf.work/entry/read_zero_toaster/</link>
      <pubDate>Sun, 13 Oct 2019 20:42:15 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/read_zero_toaster/</guid>
      <description>&lt;h2 id=&#34;なぜ読んだのか&#34;&gt;なぜ読んだのか&lt;/h2&gt;
&lt;p&gt;下記ブログにて紹介されていたところを発見し、ぶっとんだタイトルとおそらく著者が作成したであろうトースター？のサムネイルが強烈すぎて、これは読まずにはいられない!!と&lt;a href=&#34;http://d.hatena.ne.jp/keyword/Amazon&#34;&gt;Amazon&lt;/a&gt;にて即購入。中古品でだいたい600円ぐらい。新品だと税別で750円の模様&lt;/p&gt;</description>
    </item>
    <item>
      <title>docker-composeを使ってReact&#43;phoenix&#43;postgresの環境を構築する</title>
      <link>https://www.okb-shelf.work/entry/setup_phoenix_on_docker/</link>
      <pubDate>Mon, 07 Oct 2019 22:36:50 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/setup_phoenix_on_docker/</guid>
      <description>&lt;h2 id=&#34;概要&#34;&gt;概要&lt;/h2&gt;
&lt;p&gt;ほとんど個人的メモです&lt;/p&gt;
&lt;p&gt;自身でよく構築することの多い以下の環境を毎度、調べながら作るのが面倒なのでまとめたって感じです&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;React(front end)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/phoenix&#34;&gt;phoenix&lt;/a&gt;(backend, elixir web framework)&lt;/li&gt;
&lt;li&gt;postgres(open source database)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;毎度悩むのが、dockerのimageをpullしてきたけど、どの場所、どのタイミングで&lt;code&gt;create-react-app&lt;/code&gt;なり&lt;code&gt;mix phx.new ...&lt;/code&gt;を実行するかなといったところ&lt;/p&gt;</description>
    </item>
    <item>
      <title>【レポート】第12回清流elixir勉強会を開催しました【elixirでミニCodeReTreatやろうぜ!!】</title>
      <link>https://www.okb-shelf.work/entry/seiryu_elixir_part12/</link>
      <pubDate>Sat, 28 Sep 2019 17:01:15 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/seiryu_elixir_part12/</guid>
      <description>&lt;h2 id=&#34;トピック&#34;&gt;トピック&lt;/h2&gt;
&lt;p&gt;&lt;img alt=&#34;f&amp;#x1f194;takamizawa46:20190928165330j:plain:w500&#34; loading=&#34;lazy&#34; src=&#34;https://www.okb-shelf.work/entry/seiryu_elixir_part12/20190928165330.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;今回で第12回目の勉強会を開催致しました。いつのまに12回も&amp;hellip;&lt;/p&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://elixir-sr.connpass.com/event/147602/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;【第12回清流elixir勉強会】Elixir(他言語もok)でミニCodeReTreatやろうぜ (2019/09/27 19:30〜)&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;elixir-sr.connpass.com&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;以前よりずっと個人的にやりたいなーって思っていたCodeReTreatを開催しました&lt;/p&gt;</description>
    </item>
    <item>
      <title>【レポート】第11回清流elixir勉強会を開催しました【Taskを使った並行処理に入門】</title>
      <link>https://www.okb-shelf.work/entry/seiryu_elixir_part11/</link>
      <pubDate>Sun, 08 Sep 2019 13:13:43 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/seiryu_elixir_part11/</guid>
      <description>&lt;h2 id=&#34;トピック&#34;&gt;トピック&lt;/h2&gt;
&lt;p&gt;今回で第11回目の勉強会を開催致しました&lt;/p&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://elixir-sr.connpass.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;清流elixir&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;elixir-sr.connpass.com&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;隔週にて勉強会を開催していたのですが、先月は仕事の都合で日程が合わずで3週間時間が空いてしまった&lt;/p&gt;
&lt;p&gt;こういうのは一回サボる癖が付いてしまうと徐々に習慣化してしまうので気をつける様にしなければと反省&lt;/p&gt;</description>
    </item>
    <item>
      <title>【失敗しないプレゼン資料】プレゼン資料のアンチパターンとプレゼンに対する考え方について</title>
      <link>https://www.okb-shelf.work/entry/presen_unti_pattern/</link>
      <pubDate>Sat, 31 Aug 2019 14:34:39 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/presen_unti_pattern/</guid>
      <description>&lt;h2 id=&#34;なんだこの記事&#34;&gt;なんだこの記事&lt;/h2&gt;
&lt;p&gt;&lt;img alt=&#34;f&amp;#x1f194;takamizawa46:20190831143333p:plain&#34; loading=&#34;lazy&#34; src=&#34;https://www.okb-shelf.work/entry/presen_unti_pattern/20190831143333.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;自分は大学生時代に研究室で先生から資料の作り方の極意たるものを叩き込まれた&lt;/p&gt;
&lt;p&gt;専門分野の知識よりも、資料の作り方を意識することに大半の時間を費やしたと思う&lt;/p&gt;</description>
    </item>
    <item>
      <title>【OTP入門】ElixirとOTPを使ってスタックサーバーを実装するまで</title>
      <link>https://www.okb-shelf.work/entry/stack_use_otp/</link>
      <pubDate>Sun, 18 Aug 2019 23:04:09 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/stack_use_otp/</guid>
      <description>&lt;h2 id=&#34;そもそもotpとは&#34;&gt;そもそもOTPとは&lt;/h2&gt;
&lt;p&gt;一言で言えば、&lt;strong&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/Erlang&#34;&gt;Erlang&lt;/a&gt;で用意された便利なライブラリなどの集合体&lt;/strong&gt;で便利ツールをまとめたものという認識をしている&lt;/p&gt;
&lt;p&gt;OTPとはopen telecom platoformの略で当初は堅牢性が重要な電話交換機を開発するために使用されていた&lt;/p&gt;
&lt;p&gt;今になってはElixirでもOTPを使用して気軽に様々なアプリを作成することが可能&lt;/p&gt;</description>
    </item>
    <item>
      <title>みんなのAIキャリカレッジin関西にて頂いた質問17個への回答まとめ</title>
      <link>https://www.okb-shelf.work/entry/answer_for_alcarrear/</link>
      <pubDate>Wed, 14 Aug 2019 19:00:00 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/answer_for_alcarrear/</guid>
      <description>&lt;h2 id=&#34;みんなのaiキャリアカレッジin関西&#34;&gt;みんなのAIキャリアカレッジin関西&lt;/h2&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://edgeai.connpass.com/event/137722/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;【70席に増枠！】みんなのAIキャリアカレッジ in 関西#2【人工知能開発を本職にしたい！】 (2019/08/03 14:00〜)&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;edgeai.connpass.com&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;先日こちらのイベントのパネルディスカッションなるものに登壇させて頂きまして&lt;/p&gt;
&lt;p&gt;参加者の方から頂いた質問にお答えしました&lt;/p&gt;</description>
    </item>
    <item>
      <title>【空いた時間を有効活用】暇な人・挫折した人に見て欲しいTEDの素晴らしい公演7選</title>
      <link>https://www.okb-shelf.work/entry/amazing_teds/</link>
      <pubDate>Tue, 13 Aug 2019 19:00:00 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/amazing_teds/</guid>
      <description>&lt;h2 id=&#34;tedとは何か&#34;&gt;TEDとは何か&lt;/h2&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://www.ted.com/#/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;TED: Ideas worth spreading&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;www.ted.com&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;世界中で講演会を開催している&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%C8%F3%B1%C4%CD%F8%C3%C4%C2%CE&#34;&gt;非営利団体&lt;/a&gt;であり、毎年世界各地で数多くの公演を開いている&lt;/p&gt;
&lt;p&gt;公演の内容は非常に幅広く、経済や政治にはじまり技術や人生観など様々で非常に多様性がある&lt;/p&gt;
&lt;p&gt;また、その公演の多くはTED公式サイト、&lt;a href=&#34;http://d.hatena.ne.jp/keyword/youtube&#34;&gt;youtube&lt;/a&gt;などを通して広く配信されており、気軽に公演を視聴することができる&lt;/p&gt;</description>
    </item>
    <item>
      <title>【レポート】第10回清流elixir勉強会を開催しました【Elixirで速度測定】</title>
      <link>https://www.okb-shelf.work/entry/seiryu_elixir_part10/</link>
      <pubDate>Sat, 10 Aug 2019 09:44:14 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/seiryu_elixir_part10/</guid>
      <description>&lt;h2 id=&#34;トピック&#34;&gt;トピック&lt;/h2&gt;
&lt;p&gt;今回で第10回目の勉強会を開催致しました&lt;/p&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://elixir-sr.connpass.com/event/142021/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;【第10回清流elixir勉強会】Elixirでのパフォーマンス測定(速度)について (2019/08/09 19:30〜)&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;elixir-sr.connpass.com&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;3月の下旬に始めた当勉強会も、気づけば10回もやってたのかと感慨深い&lt;/p&gt;
&lt;p&gt;「どうやって運営してるんですか?」とよく聞かれることがあるが別に何か特別なことはしていないはず&lt;/p&gt;</description>
    </item>
    <item>
      <title>fukuoka.exさんのもくもく会にリモートで参加させて頂きました【Phoenix入門】</title>
      <link>https://www.okb-shelf.work/entry/first_step_phoenix/</link>
      <pubDate>Sat, 03 Aug 2019 14:53:51 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/first_step_phoenix/</guid>
      <description>&lt;h2 id=&#34;参加したもくもく会&#34;&gt;参加した&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A4%E2%A4%AF%A4%E2%A4%AF%B2%F1&#34;&gt;もくもく会&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;以前から合同で勉強会をさせて頂いていたり、様々なことを教えて頂いている&lt;a href=&#34;https://fukuokaex.connpass.com/&#34;&gt;fukuoka.ex&lt;/a&gt;さんのリモート勉強会に再び参加させて頂きました&lt;/p&gt;
&lt;p&gt;名古屋には多くの勉強会があるとは言える状況ではないですが、リモートで接続可能な勉強会があるというのはありがたいことです&lt;/p&gt;</description>
    </item>
    <item>
      <title>【Enun.sum vs Enum.reduce】Elixirでの実行速度の測定と色々と実験してみた</title>
      <link>https://www.okb-shelf.work/entry/sum_vs_reduce/</link>
      <pubDate>Sun, 28 Jul 2019 22:02:28 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/sum_vs_reduce/</guid>
      <description>&lt;h2 id=&#34;測定に至る背景&#34;&gt;測定に至る背景&lt;/h2&gt;
&lt;p&gt;再来週に開催する清流elixirの勉強会でifとパターンマッチでそれだけ実行速度に差が出るのかを測定しようと企画している&lt;/p&gt;
&lt;p&gt;そのために自身の予習を兼ねて、Elixirでの実行速度の測定方法について調査し、簡単な実験を行なってみた&lt;/p&gt;</description>
    </item>
    <item>
      <title>【レポート】第9回清流elixir勉強会を開催しました【ウェルカムElixir入門会】</title>
      <link>https://www.okb-shelf.work/entry/seiryu_elixir_part9/</link>
      <pubDate>Sat, 20 Jul 2019 21:40:46 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/seiryu_elixir_part9/</guid>
      <description>&lt;h2 id=&#34;トピック&#34;&gt;トピック&lt;/h2&gt;
&lt;p&gt;今回で第9回目の勉強会を開催致しました&lt;/p&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://elixir-sr.connpass.com/event/138645/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;初心者歓迎!! Elixir入門会【第9回清流elixir勉強会】 (2019/07/19 19:30〜)&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;elixir-sr.connpass.com&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;東京で参加したElixir&amp;amp;ErlangFest2019やfukuoka.exさんの勉強会にリモート参加させて頂いた中で&lt;/p&gt;</description>
    </item>
    <item>
      <title>【Elixirで学ぶCS】ElixirでアセンブラとVM変換器を実装するまで</title>
      <link>https://www.okb-shelf.work/entry/asm_vm_elixir/</link>
      <pubDate>Sat, 13 Jul 2019 21:51:41 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/asm_vm_elixir/</guid>
      <description>&lt;h2 id=&#34;なにこれ5度目&#34;&gt;なにこれ(5度目&lt;/h2&gt;
&lt;p&gt;Elixirでコンピューターサイエンスを学ぶシリーズの第5弾で以下記事の続編です&lt;/p&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://www.okb-shelf.work/entry/flipfrop_register_elixir&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-image&#34;&gt;
    &lt;img src=&#34;https://www.okb-shelf.work/entry/flipfrop_register_elixir/20210828085458.png&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;
  &lt;/span&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;【Elixirで学ぶCS】ElixirでDフリップフロップと1Bitレジスタを実装するまで - やわらかテック&lt;/span&gt;
    &lt;span class=&#34;linkcard-desc&#34;&gt;なにこれ(4度目 Elixirでコンピューターサイエンスを学ぶシリーズの第4弾で以下記事の続編です www.okb-shelf.work この本を参考に勉強しつつコードを書いています www.oreilly.co.jp 今回は順次回路と呼ば…&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;www.okb-shelf.work&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;この本を参考に勉強しつつコードを書いています&lt;/p&gt;</description>
    </item>
    <item>
      <title>【Elixirで学ぶCS】ElixirでDフリップフロップと1Bitレジスタを実装するまで</title>
      <link>https://www.okb-shelf.work/entry/flipfrop_register_elixir/</link>
      <pubDate>Fri, 05 Jul 2019 00:22:36 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/flipfrop_register_elixir/</guid>
      <description>&lt;h2 id=&#34;なにこれ4度目&#34;&gt;なにこれ(4度目&lt;/h2&gt;
&lt;p&gt;Elixirでコンピューターサイエンスを学ぶシリーズの第4弾で以下記事の続編です&lt;/p&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://www.okb-shelf.work/entry/ALU_elixir&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-image&#34;&gt;
    &lt;img src=&#34;https://www.okb-shelf.work/entry/ALU_elixir/20210828085458.png&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;
  &lt;/span&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;【Elixirで学ぶCS】ElixirでそれっぽいALUが実装できるまで - やわらかテック&lt;/span&gt;
    &lt;span class=&#34;linkcard-desc&#34;&gt;なにこれ(3度目 Elixirでコンピューターサイエンスを学ぶシリーズの第3弾で以下記事の続編です www.okb-shelf.work この本を参考に勉強しつつコードを書いています 並行コンピューティング技法 ―実践マルチコア/マルチスレ…&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;www.okb-shelf.work&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;この本を参考に勉強しつつコードを書いています&lt;/p&gt;</description>
    </item>
    <item>
      <title>【レポート】第8回清流elixir勉強会を開催しました【競プロ(Cake and Donuts)@Elixir2】</title>
      <link>https://www.okb-shelf.work/entry/seiryu_elixir_part8/</link>
      <pubDate>Sat, 29 Jun 2019 12:46:10 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/seiryu_elixir_part8/</guid>
      <description>&lt;h2 id=&#34;トピック&#34;&gt;トピック&lt;/h2&gt;
&lt;p&gt;今回で第8回目の勉強会を開催致しました&lt;/p&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://elixir-sr.connpass.com/event/136091/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;第8回清流elixir勉強会 (2019/06/28 19:30〜)&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;elixir-sr.connpass.com&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;隔週で勉強会を開催して早3ヶ月&amp;hellip;&lt;/p&gt;
&lt;p&gt;当初はElixirについてほとんど知らなかったが、現在ではある程度語れるレベルにはなった&lt;/p&gt;</description>
    </item>
    <item>
      <title>【Elixirで学ぶCS】ElixirでそれっぽいALUが実装できるまで</title>
      <link>https://www.okb-shelf.work/entry/alu_elixir/</link>
      <pubDate>Sun, 23 Jun 2019 22:19:50 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/alu_elixir/</guid>
      <description>&lt;h2 id=&#34;なにこれ3度目&#34;&gt;なにこれ(3度目&lt;/h2&gt;
&lt;p&gt;Elixirでコンピューターサイエンスを学ぶシリーズの第3弾で以下記事の続編です&lt;/p&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://www.okb-shelf.work/entry/adder_elixir&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-image&#34;&gt;
    &lt;img src=&#34;https://www.okb-shelf.work/entry/adder_elixir/20210828085458.png&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;
  &lt;/span&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;【Elixirで学ぶCS】Elixirで加算器を実装するまで - やわらかテック&lt;/span&gt;
    &lt;span class=&#34;linkcard-desc&#34;&gt;なにこれ(既視感 前回の記事の続編です www.okb-shelf.work まだ挫折してないです www.oreilly.co.jp この本を勉強しているつもりなのですが、普通に難しい 僕のレベルが低いのもあるが、説明があるようでなかった…&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;www.okb-shelf.work&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;この本を参考に勉強しつつコードを書いています&lt;/p&gt;</description>
    </item>
    <item>
      <title>ベンチャーで働く新卒のエンジニアが新卒研修に行かされて感じたこと</title>
      <link>https://www.okb-shelf.work/entry/feedback_newer_traning/</link>
      <pubDate>Wed, 19 Jun 2019 23:22:27 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/feedback_newer_traning/</guid>
      <description>&lt;h2 id=&#34;バックグラウンド&#34;&gt;バックグラウンド&lt;/h2&gt;
&lt;p&gt;タイトルでざっくりと述べているが、一応新卒の22歳です&lt;/p&gt;
&lt;p&gt;名古屋の某&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%D9%A5%F3%A5%C1%A5%E3%A1%BC%B4%EB%B6%C8&#34;&gt;ベンチャー企業&lt;/a&gt;でエンジニアとして勤務しています(社名は伏せる)&lt;/p&gt;
&lt;p&gt;改めて自分のブログを見てみるとプロフィールの詳細が無かったので&lt;/p&gt;
&lt;p&gt;情報の信頼性を高めるためにも自分が何者なのかをスキルベースで述べておく&lt;/p&gt;</description>
    </item>
    <item>
      <title>【第7回清流elixir勉強会@fukuoka.exさん】Elixirのシギルについて調べて色々試した【リモートでジョイン】</title>
      <link>https://www.okb-shelf.work/entry/seiryu_elixir_part7/</link>
      <pubDate>Sat, 15 Jun 2019 13:01:25 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/seiryu_elixir_part7/</guid>
      <description>&lt;h2 id=&#34;トピック&#34;&gt;トピック&lt;/h2&gt;
&lt;p&gt;昨週に引き続き、清流elixirの第7回目の勉強会を開催させて頂きました&lt;/p&gt;
&lt;p&gt;今回は清流elixirのみではなく福岡を拠点に活動されている&lt;a href=&#34;https://fukuokaex.connpass.com/&#34;&gt;fukuoka.ex&lt;/a&gt;さんの&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A4%E2%A4%AF%A4%E2%A4%AF%B2%F1&#34;&gt;もくもく会&lt;/a&gt;に&lt;/p&gt;
&lt;p&gt;リモートでジョインさせて頂きました&lt;/p&gt;</description>
    </item>
    <item>
      <title>【Elixirで学ぶCS】Elixirで加算器を実装するまで</title>
      <link>https://www.okb-shelf.work/entry/adder_elixir/</link>
      <pubDate>Tue, 11 Jun 2019 08:33:54 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/adder_elixir/</guid>
      <description>&lt;h2 id=&#34;なにこれ既視感&#34;&gt;なにこれ(既視感&lt;/h2&gt;
&lt;p&gt;前回の記事の続編です&lt;/p&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://www.okb-shelf.work/entry/logical_gate_elixir&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-image&#34;&gt;
    &lt;img src=&#34;https://www.okb-shelf.work/entry/logical_gate_elixir/20210828085458.png&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;
  &lt;/span&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;【Elixirで学ぶCS】Elixirで論理ゲートを実装するまで - やわらかテック&lt;/span&gt;
    &lt;span class=&#34;linkcard-desc&#34;&gt;なにこれ 僕は一応、 理工学部 の出身ではありますが建築土木が専攻でした この業界にいながらcsについての知識が皆無 前からやらねば...やらねば..と思ってはいたが触れる機会がない &amp;amp; 一度挫折済み しかし、 アルゴリズム の勉強を始める…&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;www.okb-shelf.work&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;まだ挫折してないです&lt;/p&gt;</description>
    </item>
    <item>
      <title>【レポート】第6回清流elixir勉強会inMisoca様を開催しました【競プロ@Elixir】</title>
      <link>https://www.okb-shelf.work/entry/seiryu_elixir_part6/</link>
      <pubDate>Sat, 08 Jun 2019 13:48:48 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/seiryu_elixir_part6/</guid>
      <description>&lt;h2 id=&#34;トピック&#34;&gt;トピック&lt;/h2&gt;
&lt;p&gt;今回で第6回目の勉強会を開催致しました&lt;/p&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://elixir-sr.connpass.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;清流elixir&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;elixir-sr.connpass.com&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;2019年4月から清流elixirの運営を初めて早2ヶ月&lt;/p&gt;
&lt;p&gt;Elixirを全く知らない状態 &amp;amp; 新卒のクソザコでも何とかなりました&lt;/p&gt;</description>
    </item>
    <item>
      <title>【実装コード有り】Elixirでpandasっぽいcsvファイルを触るモジュールを作ってみた</title>
      <link>https://www.okb-shelf.work/entry/like_pandas_elixir/</link>
      <pubDate>Fri, 07 Jun 2019 00:24:59 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/like_pandas_elixir/</guid>
      <description>&lt;h2 id=&#34;ゆるふわな動機&#34;&gt;ゆるふわな動機&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/python&#34;&gt;python&lt;/a&gt;のライブラリに&lt;strong&gt;pandas&lt;/strong&gt;と呼ばれるものがある&lt;/p&gt;
&lt;p&gt;厳密には&lt;a href=&#34;http://d.hatena.ne.jp/keyword/C%B8%C0%B8%EC&#34;&gt;C言語&lt;/a&gt;で書かれているので&lt;a href=&#34;http://d.hatena.ne.jp/keyword/python&#34;&gt;python&lt;/a&gt;かというとそうでもないが&lt;/p&gt;
&lt;p&gt;このpandasが提供している&lt;a href=&#34;http://d.hatena.ne.jp/keyword/API&#34;&gt;API&lt;/a&gt;にread_&lt;a href=&#34;http://d.hatena.ne.jp/keyword/csv&#34;&gt;csv&lt;/a&gt;というものがあり&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/csv&#34;&gt;csv&lt;/a&gt;形式のファイルをdf形式で読み込みpandasでお気軽にゴリゴリと編集することが可能&lt;/p&gt;
&lt;p&gt;(shif-jisで読み込んでいるのは日本語を含む&lt;a href=&#34;http://d.hatena.ne.jp/keyword/csv&#34;&gt;csv&lt;/a&gt;のため。defaultは&lt;a href=&#34;http://d.hatena.ne.jp/keyword/utf-8&#34;&gt;utf-8&lt;/a&gt;だったはず)&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;df&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pd&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;read_csv&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;sample_data.csv&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;encoding&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;shift-jis&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;df&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#pandas.core.frame.DataFrame&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;このdfに対して&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;この条件で~&lt;/li&gt;
&lt;li&gt;この条件で~&lt;/li&gt;
&lt;li&gt;こういうカラムを追加して~&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/csv&#34;&gt;csv&lt;/a&gt;に保存&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;なんてことをよくやる&lt;/p&gt;</description>
    </item>
    <item>
      <title>岐阜県民だけどErlang&amp;ElixirFest2019のために初ソロ東京に行ってきた</title>
      <link>https://www.okb-shelf.work/entry/goto_elixir_erlang_fest2019/</link>
      <pubDate>Sun, 02 Jun 2019 13:51:51 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/goto_elixir_erlang_fest2019/</guid>
      <description>&lt;h2 id=&#34;erlang--elixirfest2019とは&#34;&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/Erlang&#34;&gt;Erlang&lt;/a&gt; &amp;amp; ElixirFest2019とは&lt;/h2&gt;
&lt;p&gt;&lt;img alt=&#34;f&amp;#x1f194;takamizawa46:20190602130917j:plain&#34; loading=&#34;lazy&#34; src=&#34;https://www.okb-shelf.work/entry/goto_elixir_erlang_fest2019/20190602130917.jpg&#34;&gt;
&lt;a href=&#34;http://d.hatena.ne.jp/keyword/Erlang&#34;&gt;Erlang&lt;/a&gt; &amp;amp; Elixirが大好きな人やら興味のある人が集まる万博みたいなお祭り&lt;/p&gt;
&lt;p&gt;年に一度開催されていらっしゃるようで今年で3度目になるそうです&lt;/p&gt;</description>
    </item>
    <item>
      <title>【Elixirで学ぶCS】Elixirで論理ゲートを実装するまで</title>
      <link>https://www.okb-shelf.work/entry/logical_gate_elixir/</link>
      <pubDate>Tue, 28 May 2019 08:29:02 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/logical_gate_elixir/</guid>
      <description>&lt;h2 id=&#34;なにこれ&#34;&gt;なにこれ&lt;/h2&gt;
&lt;p&gt;僕は一応、&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%CD%FD%B9%A9%B3%D8%C9%F4&#34;&gt;理工学部&lt;/a&gt;の出身ではありますが建築土木が専攻でした&lt;/p&gt;
&lt;p&gt;この業界にいながらcsについての知識が皆無&lt;/p&gt;
&lt;p&gt;前からやらねば&amp;hellip;やらねば..と思ってはいたが触れる機会がない &amp;amp; 一度挫折済み&lt;/p&gt;
&lt;p&gt;しかし、&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%A2%A5%EB%A5%B4%A5%EA%A5%BA%A5%E0&#34;&gt;アルゴリズム&lt;/a&gt;の勉強を始める中でデータ構造の重要性に気づき&lt;/p&gt;</description>
    </item>
    <item>
      <title>【レポート】第5回清流elixir勉強会in丸の内を開催しました【再帰関数】</title>
      <link>https://www.okb-shelf.work/entry/seiryu_elixir_part5/</link>
      <pubDate>Sat, 25 May 2019 13:11:13 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/seiryu_elixir_part5/</guid>
      <description>&lt;h2 id=&#34;トピック&#34;&gt;トピック&lt;/h2&gt;
&lt;p&gt;今回で第5回目の勉強会を僕の運営しているコミュニティで開催することができました&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://elixir-sr.connpass.com/&#34;&gt;清流elixir&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;先週にはfukuoka.exを運営されているpiacereさんと
&lt;a href=&#34;http://d.hatena.ne.jp/keyword/Twitter&#34;&gt;Twitter&lt;/a&gt;で繋がらせて頂きまして多くの方に清流elixirの名を知って頂けました&lt;/p&gt;</description>
    </item>
    <item>
      <title>【続編】Responderで作成したAPIをheorkuにデプロイするまで</title>
      <link>https://www.okb-shelf.work/entry/deploy_to_heroku_responder/</link>
      <pubDate>Thu, 23 May 2019 07:52:50 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/deploy_to_heroku_responder/</guid>
      <description>&lt;h2 id=&#34;やりたいこと&#34;&gt;やりたいこと&lt;/h2&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://www.okb-shelf.work/entry/first_responder&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-image&#34;&gt;
    &lt;img src=&#34;https://www.okb-shelf.work/entry/first_responder/20190519011954.png&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;
  &lt;/span&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;【超簡単】PythonとResponderで爆速でAPIを立ち上げるまで - やわらかテック&lt;/span&gt;
    &lt;span class=&#34;linkcard-desc&#34;&gt;Responderについて github.com 2018年の10月ぐらいに公開された Python のWebフレームワーク 当時からスター稼ぎまくりのおばけプロジェクトだった たまたま仕事で触る機会があったので自分のメモがてらまとめておく…&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;www.okb-shelf.work&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;前回の記事でResponderを使って作成した&lt;a href=&#34;http://d.hatena.ne.jp/keyword/API&#34;&gt;API&lt;/a&gt;をherokuにアップしたい&lt;/p&gt;</description>
    </item>
    <item>
      <title>VSCode使って初学者とコードレビュー兼ペアプロしてみた感想</title>
      <link>https://www.okb-shelf.work/entry/codereview_on_vscode/</link>
      <pubDate>Sun, 19 May 2019 17:24:36 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/codereview_on_vscode/</guid>
      <description>&lt;h2 id=&#34;やってもらった課題&#34;&gt;やってもらった課題&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://www.okb-shelf.work/entry/2019/05/09/080251&#34;&gt;未経験者にプログラミングを教えて得られた知見と反省点&lt;/a&gt;と登場したA君に&lt;/p&gt;
&lt;p&gt;やってもらっていた課題が完成しましたとの報告が届いた&lt;/p&gt;
&lt;p&gt;ちなみにどんな課題をやってもらっていたかというと&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;name&lt;/th&gt;
          &lt;th&gt;score&lt;/th&gt;
          &lt;th&gt;subject&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Kennith Kling&lt;/td&gt;
          &lt;td&gt;18&lt;/td&gt;
          &lt;td&gt;math&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Oliver O&amp;rsquo;Connell&lt;/td&gt;
          &lt;td&gt;36&lt;/td&gt;
          &lt;td&gt;math&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nicole Gutkowski&lt;/td&gt;
          &lt;td&gt;6&lt;/td&gt;
          &lt;td&gt;math&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Blanche Deckow&lt;/td&gt;
          &lt;td&gt;19&lt;/td&gt;
          &lt;td&gt;math&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;こんな感じの.&lt;a href=&#34;http://d.hatena.ne.jp/keyword/csv&#34;&gt;csv&lt;/a&gt;ファイルがあって&lt;/p&gt;</description>
    </item>
    <item>
      <title>【超簡単】PythonとResponderで爆速でAPIを立ち上げるまで</title>
      <link>https://www.okb-shelf.work/entry/first_responder/</link>
      <pubDate>Sun, 19 May 2019 01:33:39 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/first_responder/</guid>
      <description>&lt;h2 id=&#34;responderについて&#34;&gt;Responderについて&lt;/h2&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://github.com/taoufik07/responder&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;GitHub - taoufik07/responder: A familiar HTTP Service Framework for Python.&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;github.com&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;2018年の10月ぐらいに公開された&lt;a href=&#34;http://d.hatena.ne.jp/keyword/Python&#34;&gt;Python&lt;/a&gt;のWebフレームワーク&lt;/p&gt;
&lt;p&gt;当時からスター稼ぎまくりのおばけプロジェクトだった
たまたま仕事で触る機会があったので自分のメモがてらまとめておく&lt;/p&gt;</description>
    </item>
    <item>
      <title>【超簡単】Elixirとtrotを使って爆速でAPIを立ち上げるまで</title>
      <link>https://www.okb-shelf.work/entry/trot_elixir/</link>
      <pubDate>Thu, 16 May 2019 08:45:30 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/trot_elixir/</guid>
      <description>&lt;h2 id=&#34;おなじみgit探検隊&#34;&gt;おなじみgit探検隊&lt;/h2&gt;
&lt;p&gt;Elixirに限ったことではないが、定期的にgitでトレンドのレポジトリはチェックするようにしている&lt;/p&gt;
&lt;p&gt;そうすると大体、何が流行っていて何に注目が集まっているかが何となく分かる&lt;/p&gt;</description>
    </item>
    <item>
      <title>【レポート】第4回清流elixir勉強会in丸の内を開催しました【色々なパターンマッチ】</title>
      <link>https://www.okb-shelf.work/entry/seiryu_elixir_part4/</link>
      <pubDate>Sun, 12 May 2019 10:28:14 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/seiryu_elixir_part4/</guid>
      <description>&lt;h2 id=&#34;トピック&#34;&gt;トピック&lt;/h2&gt;
&lt;p&gt;今回で第4回目の勉強会を僕の運営しているコミュニティで開催することができました&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://elixir-sr.connpass.com/&#34;&gt;清流elixir&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;connpassでの参加人数+開催直前に新規の1名の方に参加して頂けました&lt;/p&gt;</description>
    </item>
    <item>
      <title>未経験者にプログラミングを教えて得られた知見と反省点</title>
      <link>https://www.okb-shelf.work/entry/knowladge_by_beginner/</link>
      <pubDate>Thu, 09 May 2019 08:02:51 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/knowladge_by_beginner/</guid>
      <description>&lt;h2 id=&#34;ちょっと前にプログラミングを勧めた&#34;&gt;ちょっと前にプログラミングを勧めた&lt;/h2&gt;
&lt;p&gt;地元の後輩が何をしていいか分からず悩んでいるとのことで&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;「とりあえず損することはないからプログラミングをやっといたら?」&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;と責任があるのか無責任なのか分からない一言を発する&lt;/p&gt;</description>
    </item>
    <item>
      <title>【実装コード有り】Elixirで近しいデータを予想するためにk近傍法を実装した</title>
      <link>https://www.okb-shelf.work/entry/knn_elixir/</link>
      <pubDate>Mon, 06 May 2019 23:17:27 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/knn_elixir/</guid>
      <description>&lt;h2 id=&#34;k近傍法とは&#34;&gt;k近傍法とは&lt;/h2&gt;
&lt;p&gt;ざっと説明するとAというデータとBというデータが&lt;/p&gt;
&lt;p&gt;どれだけ近しいかを予測するための&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%A2%A5%EB%A5%B4%A5%EA%A5%BA%A5%E0&#34;&gt;アルゴリズム&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;仕組みは超簡単で以下のようなデータがあったとする&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;size(大きさ)は1~5の5段階&lt;/p&gt;</description>
    </item>
    <item>
      <title>【実装コード有り】Elixirでタイポ発見器を最長共通部分列を使って作る</title>
      <link>https://www.okb-shelf.work/entry/typo_checker_elixir/</link>
      <pubDate>Mon, 06 May 2019 00:52:47 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/typo_checker_elixir/</guid>
      <description>&lt;h2 id=&#34;プログラムでタイプミスを修正する難しさ&#34;&gt;プログラムで&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%BF%A5%A4%A5%D7%A5%DF%A5%B9&#34;&gt;タイプミス&lt;/a&gt;を修正する難しさ&lt;/h2&gt;
&lt;p&gt;以下のような変数があったとする&lt;/p&gt;
&lt;p&gt;user_input_textは自身で入力したテキストで&amp;quot;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/apple&#34;&gt;apple&lt;/a&gt;&amp;ldquo;と入力したつもりが&lt;/p&gt;
&lt;p&gt;間違えて&amp;quot;anpple&amp;quot;と入力してしまっている&lt;/p&gt;</description>
    </item>
    <item>
      <title>【実装コード有り】ElixirのMapSet(集合)の使い方と集合カバー問題を解くまで</title>
      <link>https://www.okb-shelf.work/entry/mapset_elixir/</link>
      <pubDate>Sat, 04 May 2019 14:30:18 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/mapset_elixir/</guid>
      <description>&lt;h2 id=&#34;setは非推奨&#34;&gt;Setは非推奨&lt;/h2&gt;
&lt;p&gt;元々、Elixirに実装されていた&lt;strong&gt;Set&lt;/strong&gt;という集合のモジュールは現在、非推奨となっており&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;MapSet&lt;/strong&gt;を使ってくれよなと公式が言っている&lt;/p&gt;
&lt;p&gt;なのでよほどの理由がない限りはMapSetを使えばいいんじゃないかなと&lt;/p&gt;</description>
    </item>
    <item>
      <title>Elixirでダイクストラ法を実装して最短経路を求めるまで</title>
      <link>https://www.okb-shelf.work/entry/dijkstras_elixir/</link>
      <pubDate>Fri, 03 May 2019 17:50:20 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/dijkstras_elixir/</guid>
      <description>&lt;h2 id=&#34;グラフと最短経路&#34;&gt;グラフと最短経路&lt;/h2&gt;
&lt;p&gt;こんなグラフのネットワークがあったとする&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;f&amp;#x1f194;takamizawa46:20190503162633p:plain&#34; loading=&#34;lazy&#34; src=&#34;https://www.okb-shelf.work/entry/dijkstras_elixir/20190503162633.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;Start, A, B, Goalをそれぞれノードといい&lt;/p&gt;
&lt;p&gt;6,2,3&amp;hellip;のような数字をエッジの重み(ここでは距離)という&lt;/p&gt;</description>
    </item>
    <item>
      <title>【サンプルコード有り】ElixirとFakerを使ってサンプルデータを作る方法</title>
      <link>https://www.okb-shelf.work/entry/generate_data_by_faker/</link>
      <pubDate>Fri, 03 May 2019 13:49:52 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/generate_data_by_faker/</guid>
      <description>&lt;h2 id=&#34;githubの探検中に面白いものを見つける&#34;&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/github&#34;&gt;github&lt;/a&gt;の探検中に面白いものを見つける&lt;/h2&gt;
&lt;p&gt;なんだこれは(褒め言葉&lt;/p&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://github.com/igas/faker&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;GitHub - elixirs/faker: Faker is a pure Elixir library for generating fake data.&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;github.com&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;a class=&#34;linkcard&#34; href=&#34;https://hexdocs.pm/faker/api-reference.html&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;API Reference — Faker v0.16.0&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;hexdocs.pm&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;blockquote&gt;
&lt;p&gt;Faker is a pure Elixir library for generating fake data.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;fmfm&amp;hellip;&lt;/p&gt;
&lt;p&gt;どうやらフェイクデータを色々作れるライブラリだそうです&lt;/p&gt;
&lt;p&gt;公式ドキュメントを見てみると&lt;/p&gt;</description>
    </item>
    <item>
      <title>Elixirでqueue使って幅優先探索を実装する</title>
      <link>https://www.okb-shelf.work/entry/bfs_elixir/</link>
      <pubDate>Thu, 02 May 2019 15:08:01 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/bfs_elixir/</guid>
      <description>&lt;h2 id=&#34;elixirにqueueがなかった件&#34;&gt;Elixirにqueueがなかった件&lt;/h2&gt;
&lt;p&gt;しかし、&lt;a href=&#34;http://d.hatena.ne.jp/keyword/Erlang&#34;&gt;Erlang&lt;/a&gt;には用意されていた&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/Erlang&#34;&gt;Erlang&lt;/a&gt;の&lt;a href=&#34;http://erlang.org/doc/man/queue.html&#34;&gt;公式ドキュメント&lt;/a&gt;にばっちしqueueについて記述されている&lt;/p&gt;
&lt;p&gt;Elixirで解決できない時は&lt;a href=&#34;http://d.hatena.ne.jp/keyword/Erlang&#34;&gt;Erlang&lt;/a&gt;のドキュメントを見るというのは本当ですね&lt;/p&gt;
&lt;h2 id=&#34;elixirからのqueueの使い方&#34;&gt;Elixirからのqueueの使い方&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;新規のqueue作成&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;2つのリストを持つタプルの形式で値が返ってくる&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-elixir&#34; data-lang=&#34;elixir&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;que&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;:queue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;new&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;iex&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;que&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{[],&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[]}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;queueに新たなデータを追加&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>【実装コード有り】アルゴリズム初心者がセレクトソートとクイックソートをElixirで実装する</title>
      <link>https://www.okb-shelf.work/entry/quick_sort_elixir/</link>
      <pubDate>Wed, 01 May 2019 18:03:36 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/quick_sort_elixir/</guid>
      <description>&lt;h2 id=&#34;ソートの必要性について&#34;&gt;ソートの必要性について&lt;/h2&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://www.okb-shelf.work/entry/binary_search_elixir&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-image&#34;&gt;
    &lt;img src=&#34;https://www.okb-shelf.work/entry/binary_search_elixir/20210828085458.png&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;
  &lt;/span&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;【実装コード有り】アルゴリズム初心者がElixirで二分探索のコードを実装するまで - やわらかテック&lt;/span&gt;
    &lt;span class=&#34;linkcard-desc&#34;&gt;二分探索の生まれた背景 昇順ソート済みのリスト(配列)から特定の値のindex番号を取得したいとする これを単純に配列の頭から探索していくと index番号の0から初めて7番目、すなわち8回目の試行で特定のindex番号を取得することができ…&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;www.okb-shelf.work&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;前回の記事で実装した二分探索は対象のリストがソートされていることが前提であり、つまりはリストをソートしてくれる&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%A2%A5%EB%A5%B4%A5%EA%A5%BA%A5%E0&#34;&gt;アルゴリズム&lt;/a&gt;が必要になるということ&lt;/p&gt;</description>
    </item>
    <item>
      <title>【実装コード有り】アルゴリズム初心者がElixirで二分探索のコードを実装するまで</title>
      <link>https://www.okb-shelf.work/entry/binary_search_elixir/</link>
      <pubDate>Tue, 30 Apr 2019 12:23:10 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/binary_search_elixir/</guid>
      <description>&lt;h2 id=&#34;二分探索の生まれた背景&#34;&gt;二分探索の生まれた背景&lt;/h2&gt;
&lt;p&gt;昇順ソート済みのリスト(配列)から特定の値のindex番号を取得したいとする&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-elixir&#34; data-lang=&#34;elixir&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#8のindex番号はいくつ?(7が知りたい)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;item&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;lst&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;9&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これを単純に配列の頭から探索していくと&lt;/p&gt;
&lt;p&gt;index番号の0から初めて7番目、すなわち8回目の試行で特定のindex番号を取得することができる&lt;/p&gt;</description>
    </item>
    <item>
      <title>【サンプルコード有り】ElixirでTaskを使った簡単な並行処理の実装方法</title>
      <link>https://www.okb-shelf.work/entry/elixir_task_sample/</link>
      <pubDate>Mon, 29 Apr 2019 00:49:12 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/elixir_task_sample/</guid>
      <description>&lt;h2 id=&#34;taskとは&#34;&gt;Taskとは&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Elixir&lt;/code&gt;でプロセスを作成する方法はいろいろあります&lt;/p&gt;
&lt;p&gt;以前は&lt;a href=&#34;https://www.okb-shelf.work/entry/2019/04/10/215554&#34;&gt;elixirで並列処理を使ってファイルを同時に開き特定の文字を検索する&lt;/a&gt;で&lt;/p&gt;
&lt;p&gt;並列処理をやりましたが、その時は&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-elixir&#34; data-lang=&#34;elixir&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;spawn&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;module&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;:func&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;argument&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;こんな感じで&lt;code&gt;spawn&lt;/code&gt;メゾットを使ってプロセスを生成した&lt;/p&gt;</description>
    </item>
    <item>
      <title>【レポート】第3回清流elixir勉強会in丸の内を開催しました【マップのパターンマッチ】</title>
      <link>https://www.okb-shelf.work/entry/seiryu_elixir_part3/</link>
      <pubDate>Sat, 27 Apr 2019 12:07:06 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/seiryu_elixir_part3/</guid>
      <description>&lt;h2 id=&#34;トピック&#34;&gt;トピック&lt;/h2&gt;
&lt;p&gt;昨日、愛知県の丸の内にて私が運営しているコミュニティ&lt;a href=&#34;https://elixir-sr.connpass.com/&#34;&gt;清流elixir&lt;/a&gt;で&lt;/p&gt;
&lt;p&gt;第3回目となる勉強会を開催させて頂きました&lt;/p&gt;
&lt;p&gt;さすがに3回目ともなると多少は要領が分かってきてわりとスマートに&lt;/p&gt;</description>
    </item>
    <item>
      <title>【サンプルコード有り】Elixirでのhttpリクエストを簡単な叩き方</title>
      <link>https://www.okb-shelf.work/entry/http_request_elixir/</link>
      <pubDate>Wed, 24 Apr 2019 23:08:59 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/http_request_elixir/</guid>
      <description>&lt;h2 id=&#34;公開apiについて&#34;&gt;公開&lt;a href=&#34;http://d.hatena.ne.jp/keyword/API&#34;&gt;API&lt;/a&gt;について&lt;/h2&gt;
&lt;p&gt;以前「清流elixir」の勉強会でこの&lt;a href=&#34;https://ghibliapi.herokuapp.com/#tag/Films%2Fpaths%2F~1films%2Fget&#34;&gt;公開API&lt;/a&gt;、通称&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%B8%A5%D6%A5%EA&#34;&gt;ジブリ&lt;/a&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/API&#34;&gt;API&lt;/a&gt;(勝手に&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%CC%BF%CC%BE&#34;&gt;命名&lt;/a&gt;)を&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/Enum&#34;&gt;Enum&lt;/a&gt;とパイプ&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%B1%E9%BB%BB%BB%D2&#34;&gt;演算子&lt;/a&gt;を使って遊ぶ予定だったんですけど&lt;/p&gt;
&lt;p&gt;当日になって&lt;a href=&#34;http://d.hatena.ne.jp/keyword/curl&#34;&gt;curl&lt;/a&gt;の戻り値が%{}(マップ形式)となっていないことに気づく(そりゃそう&lt;/p&gt;
&lt;p&gt;知見としてもかなり強力なのでElixirから&lt;a href=&#34;http://d.hatena.ne.jp/keyword/API&#34;&gt;API&lt;/a&gt;を叩けるようにしないとなーと&lt;/p&gt;
&lt;p&gt;やってみたらめちゃくちゃ簡単でした&lt;/p&gt;
&lt;p&gt;せっかくなので戻り値から特定のデータを抽出するところまで触れてみます&lt;/p&gt;</description>
    </item>
    <item>
      <title>ErlPortでpythonのクラスメゾット呼び出しとElixir側にAtomを返す</title>
      <link>https://www.okb-shelf.work/entry/elixir_call_python_function/</link>
      <pubDate>Tue, 23 Apr 2019 08:05:37 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/elixir_call_python_function/</guid>
      <description>&lt;h2 id=&#34;前回のはなし&#34;&gt;前回のはなし&lt;/h2&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://www.okb-shelf.work/entry/elixir_call_janome&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-image&#34;&gt;
    &lt;img src=&#34;https://www.okb-shelf.work/entry/elixir_call_janome/20210828103028.png&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;
  &lt;/span&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;Elixirからpythonを呼び出してJanomeで形態素解析してみた - やわらかテック&lt;/span&gt;
    &lt;span class=&#34;linkcard-desc&#34;&gt;ErlPortなるものを発見 色々とネットサーフィンしてたら ErlPort という Erlang のライブラリを発見 なんと Erlang 環境から python と Ruby を実行できる模様...凄すぎる Erlang のモジュールは…&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;www.okb-shelf.work&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;Elixirから&lt;a href=&#34;http://d.hatena.ne.jp/keyword/python&#34;&gt;python&lt;/a&gt;の関数を呼び出して、最終的に&lt;a href=&#34;http://d.hatena.ne.jp/keyword/janome&#34;&gt;janome&lt;/a&gt;を使って&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%B7%C1%C2%D6%C1%C7%B2%F2%C0%CF&#34;&gt;形態素解析&lt;/a&gt;を行いました&lt;/p&gt;</description>
    </item>
    <item>
      <title>Elixirからpythonを呼び出してJanomeで形態素解析してみた</title>
      <link>https://www.okb-shelf.work/entry/elixir_call_janome/</link>
      <pubDate>Sat, 20 Apr 2019 14:43:16 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/elixir_call_janome/</guid>
      <description>&lt;h2 id=&#34;erlportなるものを発見&#34;&gt;ErlPortなるものを発見&lt;/h2&gt;
&lt;p&gt;色々とネットサーフィンしてたら&lt;a href=&#34;https://github.com/hdima/erlport&#34;&gt;ErlPort&lt;/a&gt;という&lt;a href=&#34;http://d.hatena.ne.jp/keyword/Erlang&#34;&gt;Erlang&lt;/a&gt;のライブラリを発見&lt;/p&gt;
&lt;p&gt;なんと&lt;a href=&#34;http://d.hatena.ne.jp/keyword/Erlang&#34;&gt;Erlang&lt;/a&gt;環境から&lt;a href=&#34;http://d.hatena.ne.jp/keyword/python&#34;&gt;python&lt;/a&gt;と&lt;a href=&#34;http://d.hatena.ne.jp/keyword/Ruby&#34;&gt;Ruby&lt;/a&gt;を実行できる模様&amp;hellip;凄すぎる&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/Erlang&#34;&gt;Erlang&lt;/a&gt;のモジュールはElixirから呼び出し可能なので勝ちました&lt;/p&gt;
&lt;p&gt;前回の記事で作成したparser関数を(&lt;a href=&#34;http://d.hatena.ne.jp/keyword/janome&#34;&gt;janome&lt;/a&gt;を使った&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%B7%C1%C2%D6%C1%C7%B2%F2%C0%CF&#34;&gt;形態素解析&lt;/a&gt;)Elixirから呼び出すことを目標にErlPortを触ってみます&lt;/p&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://www.okb-shelf.work/entry/recommend_janome&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-image&#34;&gt;
    &lt;img src=&#34;https://www.okb-shelf.work/entry/recommend_janome/20210828103028.png&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;
  &lt;/span&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;【サンプルコード有り】形態素解析をササッと試すならMecabよりもJanomeが良い感じ - やわらかテック&lt;/span&gt;
    &lt;span class=&#34;linkcard-desc&#34;&gt;Janome とは mocobeta.github.io で書かれている日本語の 形態素解析 のためのパッケージです。 自然言語処理 で主に行われる 「 形態素解析 」 を気軽に行うことが出来ます。そもそも「 形態素解析 って何？」という方…&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;www.okb-shelf.work&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;h2 id=&#34;新規プロジェクトの立ち上げ&#34;&gt;新規プロジェクトの立ち上げ&lt;/h2&gt;
&lt;p&gt;mix使って新規プロジェクトを立ち上げます&lt;/p&gt;</description>
    </item>
    <item>
      <title>【サンプルコード有り】形態素解析をササッと試すならMecabよりもJanomeが良い感じ</title>
      <link>https://www.okb-shelf.work/entry/recommend_janome/</link>
      <pubDate>Fri, 19 Apr 2019 08:39:33 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/recommend_janome/</guid>
      <description>&lt;h2 id=&#34;janomeとは&#34;&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/Janome&#34;&gt;Janome&lt;/a&gt;とは&lt;/h2&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://mocobeta.github.io/janome/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;Welcome to janome&amp;#39;s documentation! (Japanese) — Janome v0.4 documentation (ja)&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;mocobeta.github.io&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;&lt;code&gt;Pure Python(通常のpythonのみ)&lt;/code&gt;で書かれている日本語の&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%B7%C1%C2%D6%C1%C7%B2%F2%C0%CF&#34;&gt;形態素解析&lt;/a&gt;のためのパッケージです。&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%BC%AB%C1%B3%B8%C0%B8%EC%BD%E8%CD%FD&#34;&gt;自然言語処理&lt;/a&gt;で主に行われる&lt;strong&gt;「&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%B7%C1%C2%D6%C1%C7%B2%F2%C0%CF&#34;&gt;形態素解析&lt;/a&gt;」&lt;/strong&gt;を気軽に行うことが出来ます。そもそも「&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%B7%C1%C2%D6%C1%C7%B2%F2%C0%CF&#34;&gt;形態素解析&lt;/a&gt;って何？」という方のために&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%B7%C1%C2%D6%C1%C7%B2%F2%C0%CF&#34;&gt;形態素解析&lt;/a&gt;結果をお見せしますと以下のようになります。&lt;/p&gt;
&lt;p&gt;(B&amp;rsquo;z 今宵月の見える丘により)&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;手をつないだら行ってみよう&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%B7%C1%C2%D6%C1%C7%B2%F2%C0%CF&#34;&gt;形態素解析&lt;/a&gt;の結果&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-plain&#34; data-lang=&#34;plain&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;手 名詞,一般,*,*,*,*,手,テ,テ  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;つない 動詞,自立,*,*,五段・ガ行,連用タ接続,つなぐ,ツナイ,ツナイ  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;だら  助動詞,*,*,*,特殊・タ,仮定形,だ,ダラ,ダラ  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;行っ  動詞,自立,*,*,五段・カ行促音便,連用タ接続,行く,イッ,イッ  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;て 助詞,接続助詞,*,*,*,*,て,テ,テ  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;みよ  動詞,非自立,*,*,一段,未然ウ接続,みる,ミヨ,ミヨ  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;う 助動詞,*,*,*,不変化型,基本形,う,ウ,ウ  
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;Janome&lt;/code&gt;ではこのような結果が返ってきます。&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%B7%C1%C2%D6%C1%C7%B2%F2%C0%CF&#34;&gt;形態素解析&lt;/a&gt;の対象とした文章(今回は「手をつないだら行ってみよう 」)を品詞ごとに区切り、それぞれの品詞の情報を教えてくれると言えば良いでしょうか。自分は古典の活用形を覚えるのが苦手だったので、&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%B7%C1%C2%D6%C1%C7%B2%F2%C0%CF&#34;&gt;形態素解析&lt;/a&gt;結果のそれぞれの品詞がどのような特性を持つのかは全く分かりませんが、重要なのは&lt;strong&gt;「&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%B7%C1%C2%D6%C1%C7%B2%F2%C0%CF&#34;&gt;形態素解析&lt;/a&gt;パッケージによって文章を品詞に分解出来る」&lt;/strong&gt;という点です。&lt;/p&gt;</description>
    </item>
    <item>
      <title>cloud-functionにFirebaseの値を取得して返すAPIをデプロイしてみた</title>
      <link>https://www.okb-shelf.work/entry/firebase_cloud_function/</link>
      <pubDate>Tue, 16 Apr 2019 08:20:02 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/firebase_cloud_function/</guid>
      <description>&lt;h2 id=&#34;前回&#34;&gt;前回&lt;/h2&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://www.okb-shelf.work/entry/deploy_cloud_function&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-image&#34;&gt;
    &lt;img src=&#34;https://www.okb-shelf.work/entry/deploy_cloud_function/20210828101807.png&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;
  &lt;/span&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;【デプロイまでわずか10分】JaveScriptでcloud-functionのデプロイまでを体験した - やわらかテック&lt;/span&gt;
    &lt;span class=&#34;linkcard-desc&#34;&gt;何かサーバーレスたるものが流行ると聞く サーバーレスって何やねん API などがcallされた時に動き出して、処理が終了したらまたさよなら 常時サーバーが起動してない。呼ばれた時にパッと現れパッと消える インフラを作る必要なし。コード(関数…&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;www.okb-shelf.work&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;前回の記事で&lt;code&gt;cloud-function&lt;/code&gt;を使って、元から記述されていたサンプルコードをデプロイするところまで触りました&lt;/p&gt;</description>
    </item>
    <item>
      <title>【デプロイまでわずか10分】JaveScriptでcloud-functionのデプロイまでを体験した</title>
      <link>https://www.okb-shelf.work/entry/deploy_cloud_function/</link>
      <pubDate>Mon, 15 Apr 2019 08:39:03 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/deploy_cloud_function/</guid>
      <description>&lt;h2 id=&#34;何かサーバーレスたるものが流行ると聞く&#34;&gt;何かサーバーレスたるものが流行ると聞く&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;サーバーレスって何やねん&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/API&#34;&gt;API&lt;/a&gt;などがcallされた時に動き出して、処理が終了したらまたさよなら&lt;/p&gt;
&lt;p&gt;常時サーバーが起動してない。呼ばれた時にパッと現れパッと消える
インフラを作る必要なし。コード(関数)のみをデプロイするだけで良いと&lt;/p&gt;</description>
    </item>
    <item>
      <title>新卒がconpassで新規コミュニティ作って勉強会開いてみて得られた知見</title>
      <link>https://www.okb-shelf.work/entry/knowladge_startup_stuby_group/</link>
      <pubDate>Sun, 14 Apr 2019 11:21:10 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/knowladge_startup_stuby_group/</guid>
      <description>&lt;h2 id=&#34;なんで新規コミュニティを作ったのか&#34;&gt;なんで新規コミュニティを作ったのか&lt;/h2&gt;
&lt;p&gt;元々は社内で勉強会をちょろっとやってたんですが、中々上手くいかず&amp;hellip;&lt;/p&gt;
&lt;p&gt;一番しんどかったのは毎回リソースを用意して体験してもらうっていう&lt;/p&gt;</description>
    </item>
    <item>
      <title>【レポート】第2回清流elixir勉強会in丸の内を開催しました</title>
      <link>https://www.okb-shelf.work/entry/seiryu_elixir_part2/</link>
      <pubDate>Sat, 13 Apr 2019 16:30:24 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/seiryu_elixir_part2/</guid>
      <description>&lt;h2 id=&#34;トピック&#34;&gt;トピック&lt;/h2&gt;
&lt;p&gt;&lt;img alt=&#34;f&amp;#x1f194;takamizawa46:20190413153340j:plain:w500&#34; loading=&#34;lazy&#34; src=&#34;https://www.okb-shelf.work/entry/seiryu_elixir_part2/20190413153340.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;第2回清流elixir勉強会&lt;/p&gt;
&lt;p&gt;昨日、無事に第2回の勉強会を開催させて頂きました&lt;/p&gt;
&lt;p&gt;第1回目では方針を決める時間が長く、手を動かす時間が全くなかったのですが&lt;/p&gt;</description>
    </item>
    <item>
      <title>【サンプルコード有り】ElixirのOptionParserの入門と使い方</title>
      <link>https://www.okb-shelf.work/entry/option_parser_elixir/</link>
      <pubDate>Fri, 12 Apr 2019 08:43:28 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/option_parser_elixir/</guid>
      <description>&lt;h2 id=&#34;optionparserとcli&#34;&gt;OptionParserと&lt;a href=&#34;http://d.hatena.ne.jp/keyword/CLI&#34;&gt;CLI&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;最近はこってりした記事を書いてばかりなので&lt;/p&gt;
&lt;p&gt;久々にあっさりした記事を書こうと思います&lt;/p&gt;
&lt;h3 id=&#34;cliって何&#34;&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/CLI&#34;&gt;CLI&lt;/a&gt;って何&lt;/h3&gt;
&lt;p&gt;ここらへんは自己満程度の部分でメインはOptionParserの使い方のところなので&lt;/p&gt;</description>
    </item>
    <item>
      <title>elixirで並列処理を使ってファイルを同時に開き特定の文字を検索する</title>
      <link>https://www.okb-shelf.work/entry/parallel_fileopen_csv/</link>
      <pubDate>Wed, 10 Apr 2019 21:55:54 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/parallel_fileopen_csv/</guid>
      <description>&lt;h2 id=&#34;あいかわらず長いタイトル&#34;&gt;あいかわらず長いタイトル&lt;/h2&gt;
&lt;p&gt;どういうことかというと&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./file/file1.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./file/file2.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./file/file99.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;file(n).txtには単純に文字が書いてあるだけです&lt;/p&gt;
&lt;p&gt;こんな感じですかね&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ppppppcatpppppppppppppp
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ppppppcatpppppppppppppp
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ppppppcatpppppppppppppp
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ppppppcatpppppppppppppp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;対象の&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%C7%A5%A3%A5%EC%A5%AF%A5%C8&#34;&gt;ディレクト&lt;/a&gt;リ内のファイルを全てを並列処理で各プロセスで開き&lt;/p&gt;
&lt;p&gt;特定の文字列を開いたファイルから検索し、何個含まれているかをカウントする&lt;/p&gt;</description>
    </item>
    <item>
      <title>【自分的レシピ】elixirでの再帰関数の動かし方</title>
      <link>https://www.okb-shelf.work/entry/recursive_function_recipe/</link>
      <pubDate>Mon, 08 Apr 2019 23:42:38 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/recursive_function_recipe/</guid>
      <description>&lt;h2 id=&#34;再帰関数っていいよね&#34;&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%BA%C6%B5%A2&#34;&gt;再帰&lt;/a&gt;関数っていいよね&lt;/h2&gt;
&lt;p&gt;たまにelixirでも「for使いてぇ~」って邪悪な思想に染まる時がありますが&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%BA%C6%B5%A2&#34;&gt;再帰&lt;/a&gt;関数や&lt;a href=&#34;http://d.hatena.ne.jp/keyword/Enum&#34;&gt;Enum&lt;/a&gt;などを使って目標を達成できると最高の気分になりますね&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%BA%C6%B5%A2&#34;&gt;再帰&lt;/a&gt;関数に至っては&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%B4%D8%BF%F4%B7%BF%B8%C0%B8%EC&#34;&gt;関数型言語&lt;/a&gt;に共通することです&lt;/p&gt;
&lt;p&gt;自分の簡潔な言葉で「&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%BA%C6%B5%A2&#34;&gt;再帰&lt;/a&gt;関数って何なん？」という問いに答えると&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;関数の中で自分自身(関数)を呼ぶ関数でっせ&lt;/p&gt;</description>
    </item>
    <item>
      <title>現役エンジニアが考察するエンジニアに転職したいならProgateは控えるべきって話</title>
      <link>https://www.okb-shelf.work/entry/dont_repatable_progate/</link>
      <pubDate>Sun, 07 Apr 2019 16:48:00 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/dont_repatable_progate/</guid>
      <description>&lt;h2 id=&#34;著者のバックグラウンドについて&#34;&gt;著者のバックグラウンドについて&lt;/h2&gt;
&lt;p&gt;現在(2019年4月)、僕はエンジニアとして名古屋の企業で働いています&lt;/p&gt;
&lt;p&gt;一応、&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%CD%FD%B9%A9%B3%D8%C9%F4&#34;&gt;理工学部&lt;/a&gt;の出身ではありますが&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%B4%C4%B6%AD%B9%A9%B3%D8&#34;&gt;環境工学&lt;/a&gt;(土木/建築)を専攻してました(ゆうて真面目に勉強してない)&lt;/p&gt;
&lt;p&gt;つまりはプログラミングに関しては大学3年生までド素人だったわけで&amp;hellip;&lt;/p&gt;</description>
    </item>
    <item>
      <title>elixirでcsvファイルにデータを書き出す</title>
      <link>https://www.okb-shelf.work/entry/write_csv_elixir/</link>
      <pubDate>Sat, 06 Apr 2019 11:25:01 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/write_csv_elixir/</guid>
      <description>&lt;h2 id=&#34;mixのプロジェクトの用意&#34;&gt;mixのプロジェクトの用意&lt;/h2&gt;
&lt;p&gt;前提としてmix newでプロジェクトが作成されている状態とします&lt;/p&gt;
&lt;p&gt;mixコマンドを使ってプロジェクトを作成するまでの手順は
&lt;a href=&#34;https://www.okb-shelf.work/entry/2019/04/05/082019&#34;&gt;こちら&lt;/a&gt;の前半部分で触れていますので&lt;/p&gt;
&lt;p&gt;必要であればご覧ください&lt;/p&gt;</description>
    </item>
    <item>
      <title>elixirで簡単にAmazonレビューをスクレイピングする</title>
      <link>https://www.okb-shelf.work/entry/easy_scraping_elixir/</link>
      <pubDate>Fri, 05 Apr 2019 08:20:19 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/easy_scraping_elixir/</guid>
      <description>&lt;h2 id=&#34;用意するもの&#34;&gt;用意するもの&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;elixir(1.8.1でやってます)&lt;/li&gt;
&lt;li&gt;mix(elixirのビルドツール。クソ便利)&lt;/li&gt;
&lt;li&gt;HTTPoison(HTTPクライアント)&lt;/li&gt;
&lt;li&gt;Floki(HTMLパーサー)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;事前準備について&#34;&gt;事前準備について&lt;/h2&gt;
&lt;p&gt;elixirのインストールについては割愛します&lt;/p&gt;</description>
    </item>
    <item>
      <title>【事後報告】清流elixirというコミュニティを立ち上げました</title>
      <link>https://www.okb-shelf.work/entry/startup_seiryu_elixir/</link>
      <pubDate>Wed, 03 Apr 2019 07:32:26 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/startup_seiryu_elixir/</guid>
      <description>&lt;h2 id=&#34;今更ですが&#34;&gt;今更ですが&lt;/h2&gt;
&lt;p&gt;connpassで東海地方(主に岐阜/名古屋)でelixir勉強しようぜ!!って&lt;/p&gt;
&lt;p&gt;安直な気持ちで立ち上げました&lt;strong&gt;「&lt;a href=&#34;https://elixir-sr.connpass.com/&#34;&gt;清流elixir&lt;/a&gt;」&lt;/strong&gt;です&lt;/p&gt;
&lt;p&gt;名前の由来はアホほど適当で、僕は岐阜出身です&lt;/p&gt;</description>
    </item>
    <item>
      <title>elixirで2次元のリストを縦方向に結合(merge)する</title>
      <link>https://www.okb-shelf.work/entry/merge_list/</link>
      <pubDate>Tue, 02 Apr 2019 23:14:14 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/merge_list/</guid>
      <description>&lt;h2 id=&#34;日本語が下手な件&#34;&gt;日本語が下手な件&lt;/h2&gt;
&lt;p&gt;どういうことかというと&amp;hellip;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-elixir&#34; data-lang=&#34;elixir&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#この配列を&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;_lst_data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;a&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;b&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;c&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;no&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#こうしたい&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;_output_image&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;a&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;b&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;c&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;要するに「2次元のリストを縦方向に結合(merge)する」ってことでしょ(強引&lt;/p&gt;</description>
    </item>
    <item>
      <title>親が激推しする公務員を大学3年生の時に目指すのをやめた理由</title>
      <link>https://www.okb-shelf.work/entry/change_carrear_image/</link>
      <pubDate>Sun, 31 Mar 2019 17:39:23 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/change_carrear_image/</guid>
      <description>&lt;h2 id=&#34;この記事について&#34;&gt;この記事について&lt;/h2&gt;
&lt;p&gt;社会経験のない学生が偉そうにイキってる記事です&lt;/p&gt;
&lt;p&gt;現職の公務員の方や公務員志望の方を蔑む記事ではありません&lt;/p&gt;
&lt;p&gt;こういう考え方も出来るのかという暖かい視点でご覧ください&lt;/p&gt;</description>
    </item>
    <item>
      <title>【サンプルコード多数あり】Reduce関数の基礎と考え方</title>
      <link>https://www.okb-shelf.work/entry/idea_of_reduce/</link>
      <pubDate>Sat, 30 Mar 2019 12:50:01 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/idea_of_reduce/</guid>
      <description>&lt;h2 id=&#34;関数型言語での繰り返し処理&#34;&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%B4%D8%BF%F4%B7%BF%B8%C0%B8%EC&#34;&gt;関数型言語&lt;/a&gt;での繰り返し処理&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;関数型言語&lt;/code&gt;には基本的に繰り返し分(&lt;code&gt;for文&lt;/code&gt;)と呼ばれる文法は用意されておりません。では、例えば以下のような処理をどのように行うのでしょうか。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ゆるく理解するElixirのデータ構造体と簡単なパターンマッチング例</title>
      <link>https://www.okb-shelf.work/entry/pattern_match_anydata/</link>
      <pubDate>Thu, 28 Mar 2019 10:59:48 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/pattern_match_anydata/</guid>
      <description>&lt;h2 id=&#34;elixirでのデータ構造体&#34;&gt;elixirでのデータ構造体&lt;/h2&gt;
&lt;ul&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;li&gt;(構造体) ※今回は触れません&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt=&#34;間違えやすいelixirにおけるデータ構造のグループ&#34; loading=&#34;lazy&#34; src=&#34;https://www.okb-shelf.work/entry/pattern_match_anydata/20190328094401.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;よく混同するのでまとめときました&lt;/p&gt;
&lt;h2 id=&#34;リスト-list&#34;&gt;リスト[] (list)&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/javascript&#34;&gt;javascript&lt;/a&gt;や&lt;a href=&#34;http://d.hatena.ne.jp/keyword/python&#34;&gt;python&lt;/a&gt;でいう配列(array)です&lt;/p&gt;
&lt;p&gt;elixirではリストと名乗ってます&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-elixir&#34; data-lang=&#34;elixir&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;_simple_numbers&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#もっともシンプルな配列&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;_use_range&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;..&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#ちょっとクールに&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;_string_lst&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;apple&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;banana&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;lemon&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#文字列&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;_bool_lst&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;no&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#ブール値&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;_atom_lst&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;ss&#34;&gt;:foo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;:bar&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;:tmp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#アトム&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#ごっちゃまぜ(使い道?そんなものはない)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;_anything&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;apple&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;:foo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;banana&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# リストinマップ&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;_user_info_map&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;%{&lt;/span&gt;&lt;span class=&#34;ss&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;稲葉浩志&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;role&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;ボーカル&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;%{&lt;/span&gt;&lt;span class=&#34;ss&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;松本孝弘&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;role&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;ギター&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# リストinタプル&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;_user_info_tuple&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;ss&#34;&gt;:auto&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;:visible&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;:not_auth&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;ss&#34;&gt;:not_auto&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;:unvisible&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;:auth&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;ss&#34;&gt;:auto&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;:visible&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;:auth&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;使用可能なモジュール&#34;&gt;使用可能なモジュール&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://hexdocs.pm/elixir/Enum.html&#34;&gt;Enum&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://hexdocs.pm/elixir/List.html#content&#34;&gt;List&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://hexdocs.pm/elixir/Stream.html#content&#34;&gt;Stream&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/Enum&#34;&gt;Enum&lt;/a&gt;が使えるのがクソ便利。Listも便利です。全部便利です(アホ&lt;/p&gt;</description>
    </item>
    <item>
      <title>【サンプルコード多数有り】ElixirのEnumの基礎と実践的な使い方について</title>
      <link>https://www.okb-shelf.work/entry/idea_of_enum/</link>
      <pubDate>Wed, 27 Mar 2019 11:15:25 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/idea_of_enum/</guid>
      <description>&lt;h2 id=&#34;enumとは何か&#34;&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/Enum&#34;&gt;Enum&lt;/a&gt;とは何か&lt;/h2&gt;
&lt;p&gt;(すでに&lt;code&gt;Enum&lt;/code&gt;についてご存知の方はこの章をすっ飛ばしてください)&lt;/p&gt;
&lt;p&gt;公式ドキュメントより引用&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/Enum&#34;&gt;Enum&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Provides a set of algorithms to work with enumerables.&lt;/p&gt;
&lt;p&gt;列挙型に対して使用可能な&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%A2%A5%EB%A5%B4%A5%EA%A5%BA%A5%E0&#34;&gt;アルゴリズム&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;a class=&#34;linkcard&#34; href=&#34;https://hexdocs.pm/elixir/Enum.html&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;Enum — Elixir v1.12.3&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;hexdocs.pm&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;p&gt;&lt;code&gt;Python&lt;/code&gt;などで&lt;code&gt;string型&lt;/code&gt;の値に対して&lt;code&gt;.replace()&lt;/code&gt;や&lt;code&gt;.split()&lt;/code&gt;といった関数が呼び出せるように&lt;code&gt;Enum&lt;/code&gt;が提供する&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%A2%A5%EB%A5%B4%A5%EA%A5%BA%A5%E0&#34;&gt;アルゴリズム&lt;/a&gt;(関数)は第1引数に&lt;code&gt;列挙型(enumerables)&lt;/code&gt;を受け取り処理を実行します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【アウトプットは最強のメリット】新卒エンジニアが無理ゲーのブログに再挑戦します</title>
      <link>https://www.okb-shelf.work/entry/newstart_blog/</link>
      <pubDate>Tue, 26 Mar 2019 02:08:35 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/newstart_blog/</guid>
      <description>&lt;h2 id=&#34;ただいまブログ&#34;&gt;ただいまブログ🙌&lt;/h2&gt;
&lt;p&gt;僕は以前、さくらサーバーという&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%EC%A5%F3%A5%BF%A5%EB%A5%B5%A1%BC%A5%D0&#34;&gt;レンタルサーバ&lt;/a&gt;ーで&lt;code&gt;Wordpress&lt;/code&gt;を使って筋トレに関するブログを運営しておりました。内容としては176cmで54kgの&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%AC%A5%EA&#34;&gt;ガリ&lt;/a&gt;&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%AC%A5%EA&#34;&gt;ガリ&lt;/a&gt;な自分が1年間の筋トレを通じて得た事、学んだ事や実際に取り組んでいたト&lt;a href=&#34;http://d.hatena.ne.jp/keyword/%A5%EC%A1%BC%A5%CB%A5%F3&#34;&gt;レーニン&lt;/a&gt;グ方法についてまとめていました。&lt;/p&gt;
&lt;p&gt;(1年間筋トレを続けた結果、体重は65kgになりました。ベンチプレスは25kg -&amp;gt; 80kgまで上がるようになりました💪😌)&lt;/p&gt;</description>
    </item>
    <item>
      <title>【Golangとの比較あり】新たなプログラミング言語の選択肢としてElixirをオススメしたい理由</title>
      <link>https://www.okb-shelf.work/entry/why_recommend_elixir/</link>
      <pubDate>Tue, 26 Mar 2019 00:00:00 +0900</pubDate>
      <guid>https://www.okb-shelf.work/entry/why_recommend_elixir/</guid>
      <description>&lt;a class=&#34;linkcard&#34; href=&#34;https://elixir-lang.org/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
  &lt;span class=&#34;linkcard-body&#34;&gt;
    &lt;span class=&#34;linkcard-title&#34;&gt;elixir-lang.github.com&lt;/span&gt;
    &lt;span class=&#34;linkcard-host&#34;&gt;elixir-lang.org&lt;/span&gt;
  &lt;/span&gt;
&lt;/a&gt;

&lt;h2 id=&#34;1分ぐらいで分かるelixirの長所短所&#34;&gt;1分ぐらいで分かるElixirの長所短所&lt;/h2&gt;
&lt;h3 id=&#34;長所編&#34;&gt;長所編&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;Elixir&lt;/code&gt;は動的型付けの関数型言語です。&lt;code&gt;Haskell&lt;/code&gt;のようにガチガチな厳しい仕様ではなく、関数型言語でありながら同じ変数に対して再代入(正しくは再パターンマッチ)することが可能です(個人的に非推奨)。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Profile (工事中)</title>
      <link>https://www.okb-shelf.work/profile/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.okb-shelf.work/profile/</guid>
      <description>&lt;div class=&#34;profile-header&#34;&gt;
  &lt;img class=&#34;profile-avatar&#34; src=&#34;avatar.png&#34; alt=&#34;okbee&#34;&gt;
  &lt;p class=&#34;profile-name&#34;&gt;okbee&lt;/p&gt;
  &lt;p class=&#34;profile-bio&#34;&gt;ソフトウェアエンジニア。仕事と日々の所感を書いています。&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&#34;年表&#34;&gt;年表&lt;/h2&gt;
&lt;ul class=&#34;profile-timeline&#34;&gt;
  &lt;li&gt;
    &lt;span class=&#34;year&#34;&gt;2019&lt;/span&gt;
    &lt;div class=&#34;event&#34;&gt;
      &lt;strong&gt;ブログ開始&lt;/strong&gt;
      &lt;p&gt;「やわらかテック」の最初の記事を公開。&lt;/p&gt;
    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;span class=&#34;year&#34;&gt;2020&lt;/span&gt;
    &lt;div class=&#34;event&#34;&gt;
      &lt;strong&gt;イベントのタイトル&lt;/strong&gt;
      &lt;p&gt;イベントの説明を書きます。&lt;/p&gt;
    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;span class=&#34;year&#34;&gt;2023&lt;/span&gt;
    &lt;div class=&#34;event&#34;&gt;
      &lt;strong&gt;イベントのタイトル&lt;/strong&gt;
      &lt;p&gt;イベントの説明を書きます。&lt;/p&gt;
    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;span class=&#34;year&#34;&gt;2026&lt;/span&gt;
    &lt;div class=&#34;event&#34;&gt;
      &lt;strong&gt;はてなブログから移行&lt;/strong&gt;
      &lt;p&gt;Hugo + Cloudflare Pages 構成へ。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
