日々常々

ふつうのプログラマがあたりまえにしたいこと。

プログラミング

テストでのデータベース単位の捉えかた

データベース(に限らずあらゆる永続化リソース)を使用するテストをいかにして行うかはいつだって悩みの種です。この悩みは「どうやったらデータベースを使用するテストを行えるかわからない」ではなく「なんとかやってるけど、不満のようなものがある」と…

開発時間の内訳を眺めてみよう

開発効率を上げたいとか、開発速度を上げたいと言うのはプログラマの自然な欲求だと思います。 「そう思いはするもののどうすればいいかわからない」のであれば、開発時間の内訳を眺めてみましょう。 この図はグルーピングが微妙だったり、重要なものが抜け…

コミット対象をよりわけるのをやめてみよう

git add {ファイル名} でステージングするファイル単位で選べます。10ファイル変更しててそのうち3ファイルだけコミットしたい時とかに便利です。 git add -p でステージングする変更を行の塊単位で選べます。関係ないコメントを足しちゃったのとか、うっか…

privateメソッドをテストしたい

と思うのは、とてもいいこと。 前置き もし行いたいテストが外的振る舞いを示すものであれば(少なくともテストにより観測できる見通しがなければ「テストしたい」とは思わないだろうから、何かしら外から観測可能なものではある可能性は高い)、それがpriva…

正常な状態を保つのは大変

正常な状態を保ち続けるのは大変だと言うことを、保てるようになると簡単に忘れちゃう。 正常な状態? デプロイが成功する。 テストが通る。 コンパイルが通る。 ERROR や WARN のログが出ない。 ビルドがすぐ終わる。 すべての変更がバージョン管理されてい…

自分のための道具作りのすすめ

【オンライン】 JJUGナイトセミナー「おうちで!ビール片手にLT大会!」8/26(水) 開催 でLTしてきました。 オンラインLTは難しいですね。 内容 いつも通り目新しいこともない「ふつう」の話です。 元々40分くらいのセッションを煮詰めて5分に押し込みました…

モデリングをはじめるまでの道筋

自分の描いたものが伝わりやすいかどうかとか、正直よくわかりません。 直接「わかりやすい」とか言ってもらっても、社交辞令かなーとどうしても思ってしまいます。 思ってしまうのは仕方ないし、でも社交辞令と決めつけるのも失礼だよなーと思ったりもしつ…

リファクタリングに関する何か

リファクタリングの話をするとき、焦点が合ってないなーと感じることがたまにあるのでざっくり描いてみた。 自分のために描いたものなので、なんか違うなーって思ったらご自身で描いてみるといいと思います。レッツモデリング。 破線は依存、実線は変換。長…

ドメイン駆動設計に関する何か

2020-03-13追記: 「ドメイン駆動設計」のハードルを上げる意図はありません。そもそもそんな特殊技能でもないと思っています。「ドメイン駆動設計が合っているか」を測る材料になるかも?くらいの気持ちで読んでいただけると幸いです。 何度目か知りませんが…

量に量で対抗しない方法を身につける

ビッグデータとかそういう話ではないです。 チキンカウント ……って言葉があるはずなんだけど、検索しても出てこない。誰に聞いたんだっけ。 「鶏は三歩歩くと忘れる」ってことわざに由来するのだけど、これ自体日本のことわざっぽいし、何かの勘違い……? と…

脱ブランチファースト

あるいは「プルリクエストをやめてみた」 チーム構成とかにもよるんだろうけど。Gitかつフォークされないプロダクトでの話です。OSSとかは全然話は変わります。 問題とアプローチ (2019-10-25T15:20 追加) 表出している問題と、ここでのアプローチを書いてお…

finalを付けるのをやめてみた

Javaの話ね。バージョンは8以降の実質的final(effectively final)があるものとします。7以前は匿名クラス(この呼び方は 匿名クラスとかローカルクラスとか参照)でローカル変数を使うにはfinalが必要なので文脈変わります。 前提の整理 final は色々なと…

レイヤーとレイヤーじゃないのと

レイヤーってあるよね。 下方向に依存するやつね。 中をみたら な感じだと思ってるんだけども。 あ、レイヤー間の依存がどうこうとか、直下以外への依存がどうこう、って話は他でしてください。 で、なぜかよく見るのがこんなのだけど これは違うと思うわけ…

どこでモックを使おうか

モッククラスを使うべきか否か から一歩踏み出してみましょう。 モックを使う選択をした。そこはゴールではありません。 お題 RestTemplate を使用して外部サービスを呼び出す場合を考えてください。 ここでの「外部サービス」はネットワーク越しにアクセス…

モッククラスを使うべきか否か

元ネタ: モッククラス、下から見るか?横から見るか? モッククラスを使うべきか否か、というネタを拾ったので書いてみます。これまでにモックについて殆ど書いてないことに気づいて驚きつつ。 Short Answer 「モックに何をさせたいの?」 質問に質問で返す…

いい名前が思いつかないときは変な名前をつける

プログラミングは名付けの連続です。しかし、いつも「いい名前」が見つかるわけではありません。付けたときはいい名前と思っていても、時間が経って知識が増え、ブレイクスルーが起こると、それまでいいと思っていた名前も途端に微妙に感じたりします。 この…

「あるエンジニアがプログラムを紡いでいく様を見てみる」ライブコーディング・リプレイ

あるエンジニアがプログラムを紡いでいく様を見てみるでしたライブコーディングで言ったことや言わなかったことを書いてみます。 意識してるのは「コードをどまんなかに」です。 speakerdeck.com ……あ、このスライドのブログ書き忘れてた。 スライド中の「え…

「淡路島の電車の運行状況を聞いた話」をシステム開発に置き換えてみる

気象庁の地震情報|平成25年04月13日05時48分 気象庁発表 4/13のAM5:33にM6.0らしい地震がありました。各地で大きな被害が無いことを祈りつつ。 フジテレビのアナウンサーさんが淡路島の電車の状況を聞いたと言う話 【放送事故】フジテレビが淡路島民に「電車…

凝ったコードは凝っているように見えない

新しい技術を使ったり凝ったコードを書くとメンテするのが大変。新しく入ってくる人でも分かるように書く必要がある。この意見に対する上手い切り返しが出来るようになりたい。— Hidari。 (@Hidari0415) 2012年12月27日"凝ったコード"……はどうだろう。コード…

Eclipseのアレ、IntelliJ IDEAでどうやんの?

Mac OS X 10.7.5 IntelliJ IDEA 12.0.1 community edition どうしてもオシゴトでは固定でEclipseさんを使うことが多いため、なかなか他のIDEさんに手を出しづらいのが悩みの種だったりする今日この頃。今日この頃と言いつつここ数年。正直Eclipseさんで困っ…

コメントを「紹介文」と考えてみる

「コメント」って言う名前が微妙なんじゃないかなと思った次第。と言うのも、(コード的な意味でない、例えばブログとかの)コメントって、何か本文とかに付け足すものな感じがする。commentの意味には「説明する」とかもあるっぽいんだけど、それでもなんか…

コメントについて考えてみた

やきに駆動2.0で話した内容です。 資料 コメントについて考えてみた 長いよ?

誤った共通化

前に書いた キョウミタコード と同系列のネタです。 「コードは共通化するべきである」 これ自体に真っ向から全否定することはまーないかなと思います。例えばこんな感じで処理A1-3から処理Bを呼ぶのパターンはよくあります。 コードの共通化。いいですねー…

テストのジレンマ

簡単な問題は自動テストを書くまでもない。 難しい問題は自動テストを書くのが難しい。 テストが書き辛い問題ほど、自動テストの価値は上がる。同時に自動テストを作成するコストも増えていく。ならば、自動テストが有効な状況なんてないのではないか? なん…

テストが間違ってたら?

「テストが間違ってたらどうするんだ」 自動テストの話をするとよく言われます。テストが間違ってたらわからないじゃないか。手動テストであれば、注意深く目で確認していれば間違いに気づけると言う主張です。 「目で確認していれば気づける」のは間違いで…

チームでフォーマッターを使うときのあれこれ

(見やすいコードのために出来るたった一つのこと - 日々常々 の続きみたいなもの) 「フォーマッターを使わないなんてありえないよねー」とか思ってたけど、意外と使っていないプロジェクトは多いのかもしれない。思い返せば、私の経験上も多くのプロジェク…

見やすいコードのために出来るたった一つのこと

タイトルは釣りっぽいですけど、結構まじめ。 フォーマッターを使用すること。 これが全てです。「スペースがどうこう」とか「括弧の位置がどうこう」とかどうでもいいです。そんな美的感覚でかわるような枝葉の話に結論は出ません。 コードフォーマッターを…

キョウミタコード

List list = hoge(); if (list.size() >= 1) { for (Object o : list) { // hoge } } ぱっと見て isEmpty 使えよと思ったけど、そもそも if 要らない…。 Annotation annotation = clz.getAnnotation(HogeAnnotation.class); if (annotation != null) { // an…

テストと言うパートナー #TddAdventJp

TDD Advent Calendar jp: 2011の 12日目です。 前:あなたは写経しますか - pocketberserkerの爆走 次:TDD戦略 -TDDを導入し進化させる方法- #TDDAdventJP - うさぎ組 テストはパートナー 「何を言ってるんだ?」な感じかもしれませんが、私にとってテスト…

メソッド名を日本語にする話

Javaでもメソッド名とか*1に日本語が使えます。使えない文字*2もありますけど、とりあえず置いておきます。 public void あいうえお() { // なんか書く } 流石にプロダクトコード*3で日本語メソッド名などを使う事はまずありませんが、テストコードで書くと…