古典的なDDD/クリーンアーキテクチャを採用したJava Webアプリケーションで生じる「モデル増殖」「詰め替え過剰」「ドメインモデルの肥大化」という問題を診断し、Always-Valid LayerとRaohによるデコーダ合成で解消する設計を解説する。本書は無料です。内容が役に立ったと感じたら、本書で使用しているライブラリ Raoh(https://github.com/kawasima/raoh)にスターを付けたり、実際のプロジェクトで試してみたりしていただけると励みになります。
はじめに 最近書いてるソフトウェア設計シリーズです。今回は例外に関して。以前、以下のような記事を書いたのですが、もう少し深堀して書いてみました。 ちなみにソフトウェア設計シリーズは他には以下を書いています。 モジュールになぜ分けるのか? モジュール、依存、そしてカプセル化 モジュールをどう分割するのか? 簡潔さは力なり? 予測可能な振る舞いと簡潔さについて ドキュメントとしてのコメント TL;DR 例外は「原則」キャッチしない 業務例外や必ずハンドリングさせたい例外はOptionalなど戻り値の方が便利 だいたい以下の図が言いたい事のすべて 例外処理とは? 「例外処理(Exception Handling)」は言語に依らず普遍的な関心事です。端的に言えば例外処理は異常やシステムの動作に不備が発生した際の特別な分岐処理です。リカバリやリソースの解放、あるいはユーザへの通知などがありますね。
列挙型、JavaでいうならEnum型、使っていますか。使わないわけにいきませんよね。 でも、Enumを使っていたせいで辛い目にあったことありませんか。ないですか。それならきっともうすぐに辛い目にあうと思います。 Enumはすべてのプログラマに等しく辛みを与えてくれるからです。そんな辛みについて、ちょっと一緒に直視してみましょう。 エムスリーエンジニアリンググループ、Unit1(製薬企業向けプラットフォームチーム)三浦(@yuba@reax.work) [記事一覧 ]がお送りいたします、エムスリー Advent Calendar 2023の6日目です。 アプリケーションプログラミング上の辛み 1. 既存のif文が偶発的に意図しない方に倒れる 2. switch文に至っては「どちらでもない」で処理不発に アプリケーションプログラミング上の対策 1. 分岐条件をEnumに持たせる 2. swi
みんなから愛された「あなたとJAVA」の役割が終わったようです。 「Java」で検索するとjava.comのサイトがひっかかるのですが、このサイトは古いまま放置されていて、Javaの学習を始める人にとっての罠になっていました。 https://www.java.com/ja/ 「あなたとJAVA」というキャッチコピーの脱力感と、「ダウンロー」で改行され「ド」だけが目立ってしまう間のヌケかたから大人気のサイトでしたが、かっこいいものではない・・・ もともとはJAVA+YOUで、2008年JavaOneのキャッチコピーでした。これは大文字だけのデザインだからよかったのだけど、日本語訳するときJAVAだけ大文字で残ってしまい「JAVAではなくJava」の説得力をなくさせてくれていました。 それに、ほとんどの人がJavaのプログラミングの勉強をしようとして「Java」を検索するのにJREの配布サイ
プロになるJava―仕事で必要なプログラミングの知識がゼロから身につく最高の指南書 作者:きしだ なおき,山本 裕介,杉山 貴章技術評論社Amazon 予約していたので、早速届きました。 Javaを使ってプログラミングを学ぼうとする人は、とりあえずこれ買っておけばいいんじゃね?っていう全部入りの1冊ですね。 JDKのインストールから、IDE/REPLの使い方、基本的な文法、エラーメッセージの読み方、オブジェクト指向、関数型プログラミング、各種ツールチェーン(ユニットテスト、ビルドツール、バージョン管理)と、全部入りの全部入り。 全般的に単なる文法の解説に終始せず、初学者がつまづきやすいところにページを割いているところが良くて、特に「最初からIDEを使う」と、「エラーが出ることと、その読み方を最初から書いていること」、「理解が難しそうな”ループ”の概念にフォーカスしていること」あたりは、上手
Javaフレームワーク「Quarkus」登場。Javaコードからネイティブバイナリを生成し瞬時にJavaアプリが起動、コンテナへの最適化を実現。Red Hatがリリース Red HatはQuarkusの目的を、Kubernetesやサーバレス環境においてJavaを先進的なプラットフォームにすることだと説明しています。下記はQuarkusを発表したブログの記事から引用。 The goal of Quarkus is to make Java a leading platform in Kubernetes and serverless environments while offering developers a unified reactive and imperative programming model to optimally address a wider range of d
この記事は、Go3 Advent Calendar 2018 の8日目の記事です。 7日目は @codehex さんによる「Go でアプリケーションとクライアントのミドルウェアを作成する方法知ってますか?」でした。 本日はネタ全開でお送りいたします。 Disclaimer(免責事項) はじめに言い訳というか、これを書いた経緯というか。 プログラミング言語をdisる人をdisる芸を見たいですね! — yet another (@Maki_Daisuke) 2018年10月11日 というツイートをいたしまして、言った手前自分でやるか、と思い立った次第です。 なので、ネタとしてお楽しみください。 なお、炎上した場合にも、それすらもネタとして楽しむ所存ですのでアシカラズ。 それでは、いってみましょう。 Go言語がイケてない…だ…と……? Go言語はイケてない言語としてよくdisられているが、その中
未経験でもOK!教えます。というプログラマーの求人があったので、応募してみたら受かった。 受かったは良かったものの、仕事はざっとやるべきプロジェクトの説明、ソースの説明をした後、はい頑張って!!で丸投げ。プログラマー未体験の私、何も分からない。言語はJava。リーダーは自分も何も教えられない所から頑張ってきた、それですごく勉強になって出来るようになったと語るが、この方は元々頭良いと思うし、プログラマーやる前Webデザイナーもやってたから言語の理解も私よりアドバンテージがあった。対する私、まともにPCを使う仕事にすら就いたことがない。 ヒントを教えてもらっても、それでも分からない。何も分からないまま半月が経ってしまった。Java入門書も買ったが、やってる事に対する理解が追いつかない。あと、仕事が終わったら疲れて勉強出来ないのも問題。リーダー曰く、私は手を動かす回数が少ないからもっと色々試して
Kotlinのスキルを持たないAndroid開発者は恐竜のようになるリスクに直面。モバイルアプリプラットフォームのRealmが予測 「明確に、(Androidにおける)Javaは死にかかっている」。 モバイルアプリケーションのためのプラットフォームを提供するRealmは、モバイル開発者を対象とした調査結果をもとに、2018年12月にはAndroidにおけるプログラミング言語としてKotlinがJavaのシェアを超えるという内容を含むレポート「Realm Report」を発表しました。 Kotlinのスキルを持たないAndoproidデベロッパーは恐竜になる レポートの中では、KotlinがAndroidの正式な開発言語になると発表されたGoogle I/Oのあとから、Kotlinのシェアは急速に伸びていると指摘。 Google I/Oの時点で約8%程度だったシェアは、その後4わずかカ月で1
Kotlin が Android の公式言語になることが Goole I/O 2017 で発表されました。 Java プログラマが Kotlin を始めることがこれから多くなると思うので、 Kotlin をスムーズに始められるように次の 3 点についてまとめます。 Javaとほぼ同じところ 新しい考え方が必要でつまづきがちなところ Kotlinならではの便利なこと すべてを一つの投稿にすると長くなるので連載形式とし、本投稿では最初の「Javaと同じところ」について説明します。 Kotlinって何? 本題の前に、 Kotlin について簡単に説明します。 まずは↓の Android のコードを見て下さい。これは Android Studio が生成するテンプレートの Kotlin 版です。 Android アプリ開発者であれば、初見でも概ね何をしているのかわかると思います。 class Ma
κeenです。 今回の話は別にRustに限ったものではないのですが、よくRustを始めたばかりの人がスタックとヒープが分からないと言っているのをみかけるので少しメモリの話をしますね。 厳密な話というよりは雰囲気を掴んで欲しいという感じです。 メモリは配列 プログラム(プロセス)のメモリには実行するプログラム(機械語)やグローバル変数/定数、関数の引数やローカル変数、その他プログラムで使うデータ領域などを置きます。 プロセスに割り当てられるメモリというのは、1つの巨大なのっぺらな配列みたいなものです。サイズも決まってます。64bit OSなら2^64 byteです。 0 2^64 +--------------- ----+ | | | | | ~~ | | +--------------- ----+ これは仮想的なメモリなので実際の物理メモリに2^64 byteの配列がドンと確保される訳
以下の記事は Java について触れていますが、Java を dis っている訳でもありませんし、冗長に見える例を意図的に使っています。 最近 Twitter で golang に Generics が無い事についてずいぶんと盛り上がったのですが、僕の意見をこのブログにも書いておこうと思います。 golang に多相が無いのはアレだとか開発者の怠慢だみたいな話はだいたい他の言語を覚えた人から出る感想で、静的型付言語である golang を見ると確かにそう見えるかもしれない。ただ golang は Java や他の言語と違って Duck Type を採用している。 — Vim芸人 (@mattn_jp) March 7, 2017 スクリプト言語の多くに多相が求められないのと同じ様に golang を深く触る人達から多相が欲しいという意見がそれほど出ないのは golang の型が Duck
ICリーダーライターを購入し、民間サイトを含む複数のサイトを巡ってソフトをインストールし、設定を完了させる。ITリテラシーの高いユーザーでも、ログイン成功まで至るのは相当な苦労を要する。 さらにJava実行環境は、2013~2014年にかけて、脆弱性を狙ったサイバー攻撃が多発した経緯がある。通常利用のブラウザーに組み込むにはセキュリティ面で不安が残る。 なぜ、マイナポータルはJava実行環境が必須となったのか。今後、改善の余地はあるのか。内閣官房 番号制度推進室 番号制度推進管理補佐官の楠正憲氏に聞いた(取材は文章ベースのやり取りで実施し、表現は一部編集した)。 Java実行環境を必須とする構成にした理由は。 楠氏 店頭で販売され、また実際に利用されている、できるだけ多くのPCとMacに対応しつつ、できるだけ端末ソフトウエアを共通化して開発および保守の工数を最適化するためだ。 e-Taxの
BenjiSmith / 青木靖 訳 2005年9月30日 金曜 私は現在JavaによるWebアプリケーションの構築を計画している(そう、様々な理由のためにJavaである必要があるのだが、それについては今は話したくない)。その過程で私は、ポートレットをサポートしたJSR準拠のMVCロールベースCMS WebサービスJ2EEアプリケーションのコンテナフレームワークを数多く評価した。 機能リストやドキュメンテーションに目を通すのに何十時間も費やしたのち、私は自分の目玉をえぐり出したくなった。 たとえば私がスパイスラックを作ることにしたとしてみよう。 私は小さな木工プロジェクトを前にもやったことがあり、何が必要になるだろうかについては十分に理解している。木片と、それに巻き尺や鋸や水平器やハンマーといった基本的な道具だ。 ただのスパイスラックでなく、まるまる一軒の家を建てるのだとしても、私は依然と
タイトルを見て釣られクマーな皆さんこんにちは。 ホッテントリメーカーで作るような煽りタイトルって、みなさんもう見飽きてると思うんですよね。 今調べたらホッテントリメーカー2008年だそうで。どうりでねー。古臭いなーと思いましたよー。 「一から学ぶJava」ってのをね、1.0にするだけでこんなに素敵なタイトルになるんだから面白いですねー。 タイトルを思いついただけだったんですけど、思いついたらやっぱりちゃんと中身も書かないと行けないじゃないですか。やだー 面倒くさいんですけどね。ちょっと1.0から学んでみましょうか。 Java 1.0 1996年1月23日 Javaの1.0がリリースされたのは1996年1月23日ですね。発表されたのが1995年5月23日でJavaの誕生日といった場合にどちらを取るかで揉めることがあります。 かれこれ20年前なわけで、当時のパソコンというとハードウェアはCPU
qiita.com これの話。ブコメに書こうとしたら4000字は入らなかった。 Microsoft Java VM かつての WIndows には MS 製の Java VM が搭載されていました。 古代の Java は「Write once, run anywhere」を掲げていた通り、クライアントサイドで Java アプレットとして利用されるのが主流でした(サーバーサイドで動くようになって、真価を発揮した感じがあります)。 しかし Java VM の仕様は、パフォーマンスについての記述は曖昧になっており、OS ごとの実装の違いによって、実行速度に顕著な差がありました。 Windows の Sun 純正の Java VM は性能が悪かったため、MS は独自の Java VM を開発し、Internet Explorer にバンドルしました。調子に乗った MS は Windows GUI
概要 C# 1.0 は、第一印象としては「Java のぱくり?」と言った感じに見えるのですが、 実際には「Java と C++ と VB のいいところを集めてきたような言語」と言った感じです。 (また、C# 2.0、3.0、… と進歩するにつれ、既存言語の焼き直しにとどまらない斬新な機能が追加されています。) ここではその C# の特徴的な機能をいくつか紹介していきます。 注意: C# 1.0 当時の「特徴」です。 2.0 以降の追加機能については、 「C# 2.0 の新機能」、 「C# 3.0 の新機能」、 「C# 4.0 の新機能」、 「C# 5.0 の新機能」、などを参照してください。 ガーベジコレクション ガーベジコレクション(Garbage Collection: ごみ集め) とは不要になったメモリを自動的に破棄するための機構です。 オブジェクト指向プログラミングの特徴である、
Microsoft Developer Blogs Get the latest information, insights, and news from Microsoft. AI agents are quickly moving from experiments to production‑critical components of modern applications. But while many teams know how to build agents, far fewer are confident they’re hosting them on the right foundation. Most organizations start by deploying agents the same way... We're shipping two major capa
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く