はじめからちゃんと作るは難しい

今日は何かシステムを作るときにしっかり学習して設計してからコードを書いてリリースだ!みたいなのを聞いて、それは難しいんじゃないかなーという気持ちになったりした。 学習と設計(どう作るか作戦を考える)は全体を俯瞰して整理するには良いんだけど、…

リフレクションやメタプロ的な機能は避けような

リフレクションとかメタプロ的なものを触るのは楽しい。わかる、わかるよ。 もちろん知識としては知っておくべきだし、知っておくとフレームワークやライブラリの裏側が想像できてトラブルシューティングのときに便利だ。 メタプロ的機能の辛いところ まず静…

ORMに感じるもやっと感

SpringBootでWebアプリを作るとき、いつもDBアクセスに何を使うか悩む。Doma?Mybatis?JPA? 個人的にはどれもしっくり来ていなくて、なんだかんだでDomaを使っている。何にもやっとを感じているのか考えてみた。 ドメインモデルへのマッピング ほとんどのWeb…

最近コードを書くときに考えていること

最近Rubyを書くことから少し離れてKotlinをメインに書くようになったので、最近どんな事を考えてコードを書いているか書いてみる。 ValueObjectに注目する とにかくクラスをサボらず作る。そうすると大体はValueObjectになる。ロジックの置き場はとにかくVal…

技術的な判断をするときの考え方を文字にしてみる

会社に新卒が入ってきて、判断をするときにこういうこと考えるといいよねーってことを伝えられるように、いつも考えてることを文字に起こしてみる。 作る必要ある? 何かしらを作ると作っただけ複雑になる。なにもないのが一番単純。作らないのが一番楽だよ…

株式会社はてなに入社しました

おれきゅーです。株式会社はてなに入社しました。 もうすぐ元号が変わるので、良い節目かなということで会社を変えました。 今日はエイプリルフールですね。よいエイプリルフールを。 株式会社はてなに入社しました - hitode909の日記

Domaでバイテンポラルデータモデルを素振りする

最近履歴データをちゃんと扱いたい需要があったので、Doma2でバイテンポラルデータモデルをやってみる素振りをしてみました。Reladomo使えよって話なんですがMySQLに対応してなかったんですよね…残念。 モチベーション 今回の例ではクーポンを扱いますが、発…

エンジニアだって怖いものは怖い

バックエンド系のエンジニアってDBに入れるデータがミスってたり必要な情報が保存されていなかったりすると取り返しつかないことになるし怖いじゃないですか。特にお金とか人の命が絡んでくると絶対にやりたくないと思うんですよね。エンジニアだって人間な…

サーバーサイドエンジニアの仕事について考える

最近フロントエンドエンジニアの人と「フロントエンドエンジニアってこういう仕事だよねー」という話をしたので、自分が普段やっているサーバーサイドエンジニアのしごとについて考えたくなった。 完全に主観だし、主語が大きいから「サーバーサイドエンジニ…

送金メソッドを考える

これは例だが、口座Aから口座Bへお金を送金するといった処理をどのように書くかで悩んでいる。 送金だけでなく、ユーザーAがユーザーBをフォローするといった操作でも同じように困る。 何に困るかと言うと、引数の取り違えが起こりそうだからなんとかしたい…

クラスを作ることをサボらない

JJUG CCC 2018 Fallのいくつかのセッションで型についての話があったので書きたくなった。 この話はJavaやScalaみたいな静的型の世界の思想で、多分Rubyとかでは違う思想だとおもう。 Javaを書いてるときのおれきゅーの脳内 型を定義して取りうる値を狭める…

Retrofitの仕組みを知ろう

はじめに Javaアドベントカレンダー5日目担当の null です。 Javaのライブラリやフレームワークで登場するアノテーションは、メソッドやフィールドにつけるだけで値が勝手に入ってきたりして魔法のように思うかもしれません。今回はHTTP Clientのライブラリ…

お絵かき入門

はじめに エンジニアをやりつつ絵を描き始めてからもうすぐ2年目になるし、上達してきた感じがするので2年前の自分と同じくキャラクターの絵を描きたい!という人のために情報をまとめてみようと思ったので、やってみたいぞ!という人は参考にしてもらえると…

SpringFoxを使ってみる

最近仕事でSpringBootを使う機会ができたのでSpringFoxを使ってみました。 REST APIを作ったとき殆どの場合でそのAPIのドキュメントを用意する必要があると思います。大体の場合はSwaggerを使うと思うのですが(Railsのときはそうでした)これを手書きするの…

Doma2環境の中間テーブルを考える

Doma2環境でレコードを削除するときに中間テーブルをどう扱うか悩んだのでそのメモ。 悩んだ状況 上のようなテーブルで、repositoriesのレコードを削除するときのことを考える。 repositoriesにはlanguages、frameworksの間に中間テーブルが存在していて、一…

最近の悩み

最近エンジニアとしての生き方にもやっと悩んだりしているので文章にして整理してみようと思った。 今やっている仕事 今はtoCのサービスをRailsで書いている。Java好きじゃなくなったかというとそういうわけでもなく、toCやりたいなーと思っていたら成り行き…

ふつうのDoma2の使い方

最近Tuzigiriというリポジトリを作ったりしてる。あまり進んでないけど。 このリポジトリは、GitHubのリポジトリシェアのサービスをオープンソースで作りつつ、色んな人にSpringBootのお手本や参考にしてもらえばいいかなというモチベーションで作っている。…

オレオレORM「Moco」についてのお気持ち

去年辺りからチマチマとMocoというオレオレORMを作っているので技術的な話ではなくお気持ち的な話を書いてみたくなった。 技術的な話は気が向いたら別の記事にしようかなと思ってるけどまだ気分ではないかな。 Mocoの思想 JavaでDB操作をする時は自分でゴリ…

ジェネリクスの型宣言付きの型の可変長引数って何がダメなんだっけ?

ジェネリクスの宣言付きの可変長引数を受け取るメソッドを定義したときにlintに怒られて「あれ?これってダメなんだっけ?」ってなったのでメモ。 やりたいこととしては、ORMを作っていてupdate文を作るときにvoid update(UpdateValuePair<E, ?>... pairs)というメ</e,>…

株式会社はてなに入社しました

株式会社はてなに入社しました 株式会社はてなに入社しました - hitode909の日記

JetBrains IDEのLive Templateを使い倒す

はじめに この記事はピクシブ株式会社 Advent Calendar 2017の15日目の記事です。 17新卒で、普段はpixiv PAYのサーバーサイドの開発でRailsを書いています。 入社まではJavaをメインに書いていました。昔からIntelliJ IDEAが好きなので、JetBrains IDEのLiv…

痛IntelliJプラグインを作った話

この記事はJetBrains Advent Calendar 2017 11日目の記事です。 前日はKotlinでプラグインを作る話でまさかの2日連続プラグインの話…! 僕は萌え系のイラストが好きなオタクエンジニアなんですが、オタクエンジニアをやっているとエディタやIDEを痛くしたく…

IntelliJ IDEAのプラグインの作り方

はじめに とりあえずブログを作ってみてからかなり期間が空きましたがorekyuuです。まだこのブログの事忘れてないですよ…? 一つ前の記事を作った頃はまだ学生だったんですよね(遠い目 さて、前置きはこのへんで最近作った莉穂ちゃんプラグインを題材にInte…

はてなブログ使ってみる

今まではWordpressでブログやってたけど、そろそろ管理が面倒だなーと思ったのではてなブログ使ってみることにした。 Markdownで記事書けるのさいこー! 1ヶ月前くらいから登録はしてたんだけど、デザイン作ったりするのに時間かかった。 ぼちぼち緩く書いて…

who’s watching

はじめに Java Puzzlers Advent Calendar 2016最終日の記事です。 皆さんはこれまでの問題は解けたでしょうか?難しい問題ばかりで僕の正答率はガタガタでしたw というわけで今日が最後の問題になります。1ヶ月ほど前に記事にしていたのですが、結構面白い…

Return or not return

次のコードをコンパイルした時、コンパイルエラーが出るメソッドはどれでしょう?複数あります。 public class Main { String case1() { while (true) { } } private boolean case2 = true; String case2() { while (case2) { } } private final boolean cas…

IntelliJで寿司を回す

はじめに この記事はJetBrains Advent Calendar 2016の記事です。 最近Twitterではエディタで寿司を流すのが流行っているそうです。私の観測した範囲ではvimとemacsで寿司を流している方が居るみたいです。 そんな最近の流行に乗ってIntelliJでも寿司を流す…

Unmodifiable – Java Puzzlers Advent Calendar3日目

import java.util.*; public class Main { public static void main(String[] args) { List<String> strings = new ArrayList<>(Arrays.asList("aaa", "bbb", "ccc")); List<String> unmodifiableList = Collections.unmodifiableList(strings); System.out.print(unmodifiab</string></string>…

Equals Method Overloading - Java Puzzlers Advent Calendar1日目

Equals Method Overloading import java.util.*; class Student { private int id; Student(int id) { this.id = id; } public boolean equals(Student student) { return student != null && student.id == id; } @Override public int hashCode() { return…

弱参照とラムダ式

突然ですがクイズです! 以下のコードを実行した時の出力は何になるでしょうか? truetrue falsefalse falsetrue truefalse