雑に描いた餅

餅は餅屋、わたしは技術屋、と言いたかった。

KotlinにおけるDestructuring declarations(分割宣言)の小ネタ

Kotlinでプログラムを書く時、しばしば使う機能としてDestructuring declarations(分割宣言)*1があります。 例えば、以下のように、data classのプロパティをそれぞれ別の変数として宣言することで、独立した変数として取り扱うことができます。 data clas…

2023年の簡単なふりかえり

2023年を大きくいくつかのカテゴリに分けて、簡単にふりかえってみる。 仕事 引き続きWebアプリケーションを開発するソフトウェアエンジニア 今年はKotlinに多く触れた年だった サーバー、バッチ両方書いた k8s上で稼働するServiceとJobどっちも作った 春頃…

KotlinのjoinToString関数に関する小ネタ

今でもたまにやらかすので供養として。 Kotlinにはいくつか便利な関数がありますが、その中にjoinToStringがあります。 joinToString - Kotlin Programming Language 上に貼ったリンク先でも読めますが、Iterableをレシーバーとして、要素を連結して文字列に…

Project Eulerを始めて1ヶ月が経ち50問解き終わった話

Project Eulerを始めましたという話を先日したのですが、 i-whammy.hatenablog.com 先日最初の50問を解き終わりました。 ようやくProject Eulerの最初の50問がすべて解けた。しかし、1問目は97万人が正解してるけど、50問目まですべて解いた人は6万人弱とか…

Arrowでfunctionalなエラーハンドリングを始める

はじめに ArrowはKotlinの関数型プログラミングのためのライブラリです。 ScalaやHaskellといったプログラミング言語で見られる関数型プログラミングで見られるデータ型(Either等)や、操作といった抽象をKotlinに持ち込んで、もっと純粋な関数型プログラミ…

Project Eulerと数学とわたし

この記事は 最近Project Eulerというものにハマっています。 projecteuler.net 簡単にいうと、プログラミングを使って数学の計算問題をたくさん解いていこうぜ、っていうサイトです。 この記事は、Project Eulerを始めたいちソフトウェアエンジニアの話です…

「Linuxで動かしながら学ぶTCP/IPネットワーク入門」を読了した

まえがき 私はWebエンジニアである。名前はあるが、腕に自信はない。 とはいえWebエンジニアとして生きていると、日々ネットワークに触れて生活をすることになる。 ネットワークについて断片的な知識しかなかったので、体系的な知識を得よう!と思って手に取…

2022年をふりかえる

三が日のうちに書けば良かろうと思って、気付けばこんなタイミングになってしまった。 2022年を色々な方向からふりかえろうと思います。 体調の話 とにかく体調に左右された一年だった 流行りの病には一度もかからずに済んだ ただ一言で言うと「起きてみない…

駆け出しエンジニアの強い味方『教養としてのコンピューターサイエンス講義第2版 今こそ知っておくべき「デジタル世界」の基礎知識』を読んだ

『教養としてのコンピューターサイエンス講義第2版 今こそ知っておくべき「デジタル世界」の基礎知識』を最近読み終わりました。 著者は『プログラミング言語C』『プログラミング言語Go』等で知られるBrian W. Kernighan氏。御年80歳。 この本はカーニハン氏…

End-to-endテストで日付のテストをする時に思い出してほしいこと

TL;DR テストコードであっても腐るものは腐る システムの表層にあたる画面の要素にとらわれず、業務のドメインを掘り下げて理解を深めるのが大事。 大体の話は Twitterに書いておいたので先に読んでもらえると分かりやすいと思います。 End-to-endのテストを…

Kotlin 1.2のアプリケーションを1.7までバージョンアップする

対象読者 「このアプリケーション、Kotlinのバージョン古くなってきてるし、最新まで上げようぜ!」って仕事をやることになった、ちょっと前の私。 およびそのような人(いるのか)。 前提条件 2017年頃ファーストリリース、現在も稼働中のバックエンドアプ…

マイクロサービスとは何であり何でないか?を知る、実践的な教科書:「モノリスからマイクロサービスへ ―モノリスを進化させる実践移行ガイド」を読んだ

はじめに オライリー・ジャパンから出版されている、「モノリスからマイクロサービスへ ―モノリスを進化させる実践移行ガイド」を読みました。 最近で読んだ技術書の中でもなるほど、と思う部分が多く、概要に触れながら感想を書き残していこうと思います。 …

Jenkinsでジョブが終了しても生き残るプロセスを作る

はじめに Jenkinsのジョブから、nohupコマンド等でジョブが終了しても生き残るようなプロセスを作りたくなる場面があるかと思います。(例えば特定のプログラムを監視する目的でサーバー上に常駐させたい場合など。) 業務の中で上記のようなケースで若干ハ…

アプリケーションドライバレイヤーを利用した自動受け入れテストを考える

この記事は 『継続的デリバリー』を引き続き読み進める中で、表題のアプリケーションドライバレイヤー(及びウィンドウドライバパターン)を利用して受け入れテストを実装することについての記述に行き当たりました。 www.amazon.co.jp 以前の記事はこちら。…

「継続的デリバリー」を読んでいる

この記事は 最近「継続的デリバリー」を読んでいるので、そのまとめのようなものです。 www.amazon.co.jp 如何せん長編ということもあり *1、まだ読了していないのですが、この本の中心となる考えである「デプロイメントパイプライン」が紹介されている5章ま…

「アート・オブ・アジャイル デベロップメント ―組織を成功に導くエクストリームプログラミング」を読んだ

この記事は 何であり 「アート・オブ・アジャイル デベロップメント ―組織を成功に導くエクストリームプログラミング」を読んだ私の感想を書き残すためのものです。 http://amazon.co.jp/dp/4873113954 何でないか あくまで個人の見解、感想であり、批評、レ…

Android StudioがUSB接続したAndroid端末を認識しない場合

小ネタ。 Android Studioを使ってAndroidアプリの開発をしてみようと、Android Studioや手持ちのAndroid端末(Google Pixel 3)をセットアップしていたときにぶつかったのでメモとしてのこします。 codelabs.developers.google.com このチュートリアルに従っ…

Kodeinに入門する

Kodeinについて KodeinはKotlinで書かれたシンプルなDI Frameworkです。 https://kodein.org/di/ 以前こちらの記事を書いたときにDI Frameworkとして採用してみましたが、なかなか使いやすかったので別記事でまとめてみようと思いました。 i-whammy.hatenabl…

Spring Bootで実装したアプリケーションをKtorで置き換えてみる

Ktorについて KtorはKotlinを利用した軽量なWeb Frameworkです。 https://ktor.io/ 現在はJVM上で動作するサーバー、クライアントだけでなく、javascript、iOSやAndroid上で動作するクライアントをサポートしています。 今後はNative Environmentでのサポー…