こまどブログ

技術のこととか仕事のこととか。

『データ指向アプリケーションデザイン』を読む(3):2章「データモデルとクエリ言語」

『データ指向アプリケーションデザイン』の2章「データモデルとクエリ言語」についての読書メモ。 データ指向アプリケーションデザイン ―信頼性、拡張性、保守性の高い分散システム設計の原理作者: Martin Kleppmann,斉藤太郎,玉川竜司出版社/メーカー: オラ…

『データ指向アプリケーションデザイン』を読む(2):1章「信頼性、スケーラビリティ、メンテナンス性に優れたアプリケーション」

『データ指向アプリケーションデザイン』の1章「信頼性、スケーラビリティ、メンテナンス性に優れたアプリケーション」についての読書メモ。 データ指向アプリケーションデザイン ―信頼性、拡張性、保守性の高い分散システム設計の原理作者: Martin Kleppman…

『データ指向アプリケーションデザイン』を読む(1):タイトルについて

『データ指向アプリケーションデザイン』を読み始めた。本文だけで605ページという大著なので、少しずつ読み進めていきたい。 データ指向アプリケーションデザイン ―信頼性、拡張性、保守性の高い分散システム設計の原理作者: Martin Kleppmann,斉藤太郎,玉…

書けない言い訳を封じよう:『できる研究者の論文生産術』

ブログを書くようになって15ヶ月が経った。ブログを書き始めたきっかけをくれた師匠ともいうべき存在であるkakakakakkuさんは、三大欲求の一角を「ブログ欲」が突き崩しているとのことだが、僕にとっては今でもブログを書くことは苦痛を伴うものであり続けて…

ブログを始めて15ヶ月が経った

2018年4月22日にこのブログで最初の記事を公開してから、明日でちょうど15ヶ月になる。その間に公開した記事は72本だ。当初、ブログを書く目的として、以下の2つを挙げていた。 長い文章を書く機会としたい 勉強するきっかけにしたい 長い文章を書くというこ…

リチャード・ニクソン『指導者とは』を読んだ

リチャード・ニクソンの『指導者とは』の読書メモ。自らもアメリカ合衆国の大統領という「指導者」でありながら、近い時代の偉大な指導者たちのエピソードと自分自身の指導者論をまとめたもの。20世紀の世界史の主人公たちの伝記としても手軽で面白い。 指導…

10年続ける覚悟を持つことと、続かなくても「無駄だった」と断じないこと

会社の先輩から言われたことだ。 自分は「〇〇すべき」という世間的な勧奨に割と従順で、ブログを毎週書いたり(今は止めてしまったが)コードを毎日書いたりしている。それは自分のために行なっていることだし、「すべき」というのにも反発していないからこ…

和智右桂さんのブログ記事の自分用まとめ

DevLOVE X でもご登壇いただいた和智右桂さんのブログの過去記事から、読みたい/読んだものをテーマごとにピックアップ。 価値の源流に向かう旅 from Yukei Wachi www.slideshare.net 挑戦するエンジニアたち ヒストリー[12-3]|ITエンジニア専門の転職情報…

安西剛さんの「1on1コーチング体験」を受けてきた:自分の感情を掘り下げる

先日、安西剛(@tsuyok)さんによる「1on1コーチング体験」を受けてきた。安西さんによる参加者募集の記事を以下に示す。 www.tsuyok.work 安西さんとは、5月に開催されたイベント「レガシーをぶっつぶせ。現場でDDD!」の際に初めてお会いした。安西さんは…

JavaにおけるOptionalによるnull安全のための覚書

Java8から導入されたOptionalを利用することで、よりnull安全なコードを書くことができる。ただし、使い方を間違えるとかえってバグを生むことにも繋がる。適切に利用するための覚書を書く。 nullを返す可能性のあるメソッドは、Optional型を返すメソッドに…

Web API の仕様をOpenAPI Specで書いてみて

以前、OpenAPI Generatorの紹介記事を書いた。 ky-yk-d.hatenablog.com 上の記事を書いてから、実際のプロジェクトでOpenAPI SpecでAPIの仕様を書くとともに、その定義ファイルからOpenAPI GeneratorでAngularのクライアントコードを自動生成するということ…

6月22, 23日に、豪華スピーカー陣によるカンファレンス「DevLOVE X」が開催されます

DevLOVE10周年イベント「DevLOVE X」 きたる6月22日(土)・23日(日)の2日間の日程で、株式会社ナビタイムジャパンさまにて、ソフトウェア開発者向けイベント「DevLOVE X」が開催されます。 devlove.wixsite.com こちらは、ソフトウェア開発者コミュニティ…

リレーショナルモデルと『Clean Architecture』のエンティティ

(エリック・エヴァンスの)ドメイン駆動設計を入り口にして、オブジェクトモデルとリレーショナルモデルについて考えているなかで、「ドメインモデルって必ずしもオブジェクトじゃなくていいんじゃないの」という思いを強めている。 ky-yk-d.hatenablog.com…

ScalaとJavaにおける変位指定と型パラメータの境界

Scalaのジェネリクスの勉強で、簡単なリストを実装してみよう!というものが出てきた。 詳細は省くが、リストのadd()メソッドは以下のように宣言される。 /* Scala */ abstract class SimpleList[+A] { def add[B >: A](element: B): SimpleList[B] } ここで…

環境構築なしでTDDを楽しむ:cyber-dojoのご紹介

新しい言語をちょっと触ってみたいな、でもIDEとか整えるのはハードルが高いな、というときは、「cyber-dojo」で試してみることが多い。 「cyber-dojo」のトップページ 様々な言語でTDDを試せる「cyber-dojo」 cyber-dojoは、Webブラウザで利用できるコード…

リレーショナルモデルにおける制約とCQRS・SQLQL

前回の記事で、リレーショナルデータベースの役割として、以下の3つを挙げ、ドメイン駆動設計においては最後のものにあまり重きが置かれていないことを指摘した。 集合演算によるリレーションの導出(検索) ディスクへの書き込みによる永続化(蓄積) 各種…

『エリック・エヴァンスのドメイン駆動設計』におけるリレーショナルデータベース

近頃、以下に挙げるようなイベントで話を聞いたり議論をしたりする中で、オブジェクト指向とリレーショナルモデルについて思いを巡らせている。 酔いどれ設計ナイト2019 - connpass 突撃!!隣のアーキテクチャ - connpass 第22回 たけともそん in 高円寺 - co…

関連テーブルへの操作と、ドメイン駆動設計における集約・リポジトリ

ドメイン駆動設計を意識しながら設計をしている*1ときに、関連テーブルの操作に関して悩んでいたことがあった。人に相談に乗ってもらい、自分でも改めて書籍などを見ながら考え直したところ、自分の集約への理解が全く不十分であったことがわかった。 TL;DR …

Eclipse(STS)でJavadocコメント挿入時に自動で入力されるユーザ名を変更する(Windows/Mac)

Eclipse(STS)で開発しているとき、Javadocコメントをショートカットキーなどで挿入することがよくある。このときに、@authorタグの項目が自動で入力されるのだが、デフォルトでは値としてOSへのログインユーザ名が使われる*1。これを自由に変更する方法を書…

コードの改善に使うEclipseショートカットキー(Windows/Mac)

Eclipseには、様々な編集機能や、自動リファクタリングの機能が搭載されている。Eclipseのショートカットキーを幅広く紹介する記事は、すでに優れたものが存在しているので、よく使うものだけをメモ。 qiita.com Eclipseによるコードの改善 以下のライブコー…

技術者のアウトプットにおける「エモさ」とは何か

ゲストで出演させてもらった「#成し遂げたいam」のep.8が公開された。前後編に分けて収録したうちの後編である。なお、前編が公開されたときに記事を一本書いているので、ポッドキャスト収録ということについてはそちらもご覧いただきたい。 anchor.fm ky-yk…

『Clean Architecture』における単一責任の原則とコンウェイの法則について

要約 『Clean Architecture』における「単一責任の原則(SRP)」の説明において、アンクル・ボブはコンウェイの法則に言及している。コンウェイの法則によって補強されていると思われるSRPの主張は、2014年のアンクル・ボブのブログ記事において既に現れてい…

ポッドキャスト出演の収穫: #成し遂げたいam ep.7 に出演した

先日、ポッドキャスト「#成し遂げたいam」の収録にゲストとして参加してきた。そして、収録した前・後編のうち、前編がすでに公開されている。 anchor.fm 詳しくはブログも書くつもりですが、以下のようなことについて話しました。・欲望の良い面と悪い面・…

ソフトウェア開発者がテスト技術の資格「JSTQB」のテキストを読んで感じたこと

テスト技術についての資格である「JSTQB認定テスト技術者資格」のテキストを読んだ。読もうと思った理由は後述するが、ソフトウェア開発についての考えに別の光を当ててくれるいい体験になった。 ソフトウェアテスト教科書 JSTQB Foundation 第3版作者: 大西…

社外の人にしてもらった1on1を振り返る

随分と日が空いてしまったが、2月の中頃、ブログ仲間(?)のnitt-san(@nitt_san)さん*1に、1on1の機会を設けていただいた。nitt-sanさんによる記録はこちら。 3時間弱ずっと1on1やってました - はてなブログに投稿しました #はてなブログ【いきなり1on1記…

StreamとOptionalに共通して存在するメソッド(その3・完結篇):map / flatMap

StreamとOptionalに共通して存在するメソッドの第三弾。 第一弾・第二弾はこちら。 ky-yk-d.hatenablog.com ky-yk-d.hatenablog.com これまで、下記のメソッドについて書いてきた。 filter() of() ofNullable() empty() 完結篇となる今回は、map()とflatMap(…

StreamとOptionalに共通して存在するメソッド(その2):of / ofNullable / empty

StreamとOptionalに共通して存在するメソッドの第二弾。 第一弾はこちら。 ky-yk-d.hatenablog.com 前回の記事では、filter()について書いた。今回は、of()とofNullable()について書……こうと思ったら実はempty()も共通して存在するメソッドだったことに気づ…

StreamとOptionalに共通して存在するメソッド:filter(Predicate<? super T> predicate)

Java 8 で導入されたStreamとOptional。業歴は浅いのに古いJavaで学んでしまったので、いざ使える状況になったにもかかわらずいまいち使い方がよくわかっておらず、書籍やWeb上の資料で知識を補っている最中だ。 調べているうちに、Stream(インタフェース)…

関数型プログラミング未経験者がREPLでClojureに触ってみた

下記の記事を読んでいたら、Clojureというプログラミング言語の名前がちょこちょこと登場しているのが目に入り、少し調べてみることにした。 techracho.bpsinc.jp Clojureとは Clojureとはどんな言語なのだろうか。Wikipediaをみてみる。 Clojure (発音は/'k…

Java 9 以降の非推奨モジュールに依存したプログラムを動作させる:OpenAPI Generatorで生成したSpringスタブサーバが動作しない場合の対処法

前回の記事で、OpenAPI GeneratorでSpringのスタブサーバのソースコードを生成する方法を紹介した。 ky-yk-d.hatenablog.com 上の記事に記載した手順を手元のMacBook Proで実行したとき、XmlModelPluginに関わるエラーが発生してSpring Bootアプリケーション…