タグ

ブックマーク / codezine.jp (150)

  • ドメイン駆動設計のメリットと始め方 ~ 1章「DDDへの誘い」

    はじめに ドメイン駆動設計(DDD)とは、2003年にエリック・エヴァンス氏が『Domain-driven design』という書籍にて提唱したソフトウェア開発手法です。DDDを簡単に説明すると「顧客と開発者が業務を戦略的に理解し、共通の言葉を使いながらシステムを発展させる手法」です。具体的には、チームの共通言語である「ユビキタス言語」を用いて「ドメインモデル」を構築し、それをコードとして実装します。また大規模で密結合なシステムにならないように「ドメイン」と「境界づけられたコンテキスト」にてシステムを分割し、「コアドメイン」という最重要領域に集中して開発を行います。 ソフトウェア開発の課題とDDDが解決すること DDDの登場から10年以上が経ち、DDDは着実に普及しつつあります。DDDが普及してきている背景として、システム開発がますます多機能/複雑になり、ビジネス的にも敏速な変更が求められ

    ドメイン駆動設計のメリットと始め方 ~ 1章「DDDへの誘い」
    nilab
    nilab 2019/06/03
    ドメイン駆動設計のメリットと始め方 ~ 1章「DDDへの誘い」 (1/3):CodeZine(コードジン)
  • 実践DDD本 第4章「アーキテクチャ」 ~レイヤからヘキサゴナルへ~

    前回記事:IDDDの第3章「コンテキストマップ」の解説 稿で紹介するアーキテクチャの種類 エバンズでは、DDDのアーキテクチャは「レイヤアーキテクチャ」を中心に紹介していました。これに対してIDDDでは「ヘキサゴナルアーキテクチャ」を提唱しています。さらにヘキサゴナルアーキテクチャと関係が強い「サービス指向(SOA、REST)」「コマンドクエリ責務分離(CQRS)」「イベント駆動アーキテクチャ(パイプ&フィルター、長期サーガ、イベントソーシング)」といった概念やアーキテクチャ方式についても取り上げています。 特定のアーキテクチャに依存しないDDD DDDは特定の技術に依存していないため、自由にアーキテクチャを選択することができます。アーキテクチャの選定においては、構築するシステムに求められる「機能要求(ユースケース、ユーザーストーリー、ドメインモデルのシナリオ等)」と「品質要求(性

    実践DDD本 第4章「アーキテクチャ」 ~レイヤからヘキサゴナルへ~
    nilab
    nilab 2019/06/02
    実践DDD本 第4章「アーキテクチャ」 ~レイヤからヘキサゴナルへ~ (1/4):CodeZine(コードジン)
  • Java 9のリリースとこれまでのトレンドを振り返る

    2017年9月にJava 9がリリースされました。この世に出てから20年以上が経過したJavaは、さまざまな技術トレンドを作ってきました。今でも広く使われている言語であることは間違いありません。連載ではJava 9がリリースされたこの機会に、Javaのリリースの歴史Java 9のリリース内容の概要を紹介していきます。1回目となる今回は、これまでリリースされたバージョンを簡単に振り返り、Java 9の変更点について全体像を解説します。 はじめに 2017年9月にJava 9がリリースされました。Javaという名前で初めて世の中に出てきたのは1995年なので、それから20年以上も経過したことになります。これまでJavaは、いろいろな技術のトレンドを作ってきました。 最近では、Java自体がITのトレンドとして扱われることも減りました。そのためか、なかなか細かい内容まで広く取り扱われることが

    Java 9のリリースとこれまでのトレンドを振り返る
    nilab
    nilab 2017/11/14
    Java 9のリリースとこれまでのトレンドを振り返る (1/3):CodeZine(コードジン)
  • 20代後半からJavaScriptを学び、Node.jsのコラボレーターに。古川陽介氏に聞く、エンジニアとして急成長する方法

    サーバサイドJavaScript環境 Node.jsにおいて、日で二人いるコラボレーターのうちの一人である古川陽介さん。新卒で入社した企業では、主にJavaとデータベースといったフロントエンドとは遠い技術を扱っていた。仕事にも慣れた20代後半のころ、これまでやってきたこと以外に新たに「プラスα」を学びたいという気持ちから、JavaScriptの勉強を始め、34歳となった現在は、Node.js 日ユーザーグループの代表を務めるほどに技術を極めている。そこまで技術を研鑽できるモチベーションはどこから生まれているのか。古川さんのキャリアと、コミュニティ活動やOSSへの貢献について話を聞いた。 リクルートテクノロジーITソリューション統括部 インフラソリューション2部 APソリューショングループ 古川陽介氏 Node.jsコミュニティの会長、JavaScriptは20代後半から学んだ ――

    20代後半からJavaScriptを学び、Node.jsのコラボレーターに。古川陽介氏に聞く、エンジニアとして急成長する方法
    nilab
    nilab 2017/02/11
    20代後半からJavaScriptを学び、Node.jsのコラボレーターに。古川陽介氏に聞く、エンジニアとして急成長する方法 (1/2):CodeZine(コードジン)
  • 新しい仕様でより進化したPHP 7を体験してみよう

    PHPの新しいバージョンであるPHP 7がまもなく正式リリースされる予定です。そこで、2回に分けてPHP 7で新しく追加された仕様や機能、そして注意すべき点を紹介します。ただ、読者の皆様の中にはPHP 5.3からPHP 5.6でのリリースですらついて行けていないという方もいると思います。実際、PHP 5は数字こそマイナーバージョンにもかかわらず、かなり大きな言語仕様に変更があったと思いますので、これらの復習もかねてPHP 7の機能について紹介します。 対象読者 PHPについて基的な概念を理解している方 WEBアプリケーションを開発している方 必要な環境 この記事では、PHP 7(RC5)を使ってLinux(Ubuntu14.04)とMac(10.11)で確認を行っています。インストール手順などは各環境によって違いがある部分もありますが、今回紹介する仕様に関しては環境による違いはありません

    新しい仕様でより進化したPHP 7を体験してみよう
    nilab
    nilab 2016/05/18
    新しい仕様でより進化したPHP 7を体験してみよう (1/3):CodeZine(コードジン)
  • PHP 5からPHP 7へ移行する際に気を付けるべきポイント

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    PHP 5からPHP 7へ移行する際に気を付けるべきポイント
    nilab
    nilab 2016/05/18
    PHP 5からPHP 7へ移行する際に気を付けるべきポイント (1/4):CodeZine(コードジン)
  • 関数型リアクティブプログラミング言語Elmに学ぶ フロントエンド開発の新しい形 【前編】

    前編では、Elm言語の基礎とFRPのエッセンスについてコードを通じて学びます。 後編では、実際にElmを使ってアプリケーションを作る方法と、その際に重要になるアーキテクチャを学びます。 なお、執筆時点でのElmのバージョンは0.15.1です。 注意! Elmはバージョン0.17で大きな変更がありました。現在は「関数型リアクティブプログラミング」のための言語ではありません。 参考:A Farewell to FRP(さらば FRP) また、言語自体のシンタックスやライブラリのAPIも以前とは大きく変わっています。これからElmを始める方は、必ず公式ドキュメントを参照してください。 公式ガイド FRPとは何か リアクティブプログラミングの直感的な説明としてよく挙げられるのが、Excelのような表計算ソフトです。 例えば、セルの間にC1 = A1 + B1という関係があるとします。 このように宣

    関数型リアクティブプログラミング言語Elmに学ぶ フロントエンド開発の新しい形 【前編】
    nilab
    nilab 2016/04/28
    関数型リアクティブプログラミング言語Elmに学ぶ フロントエンド開発の新しい形 【前編】 (1/5):CodeZine(コードジン)
  • PHPエクステンションでクラスを作成する

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    PHPエクステンションでクラスを作成する
    nilab
    nilab 2016/04/04
    PHPエクステンションでクラスを作成する (1/3):CodeZine(コードジン)
  • Google発の深層学習フレームワーク「TensorFlow」が一般エンジニアに与える可能性

    こんにちは、PyData.Tokyoオーガナイザーのシバタアキラです。先日公開され大きな反響を呼んだGoogle社の深層学習(ディープラーニング)フレームワーク、TensorFlow(テンソルフロー)。今回はPyData.Tokyoのハッカソンイベントで、参加者の皆さんとTensorFlowについて学び、コーディングし、ディスカッションした内容から得た所感を共有したいと思います。深層学習のネットワーク設計という非常に高度な課題は、一般のエンジニアやデータサイエンティストにはとっつきにくいものですが、既存のさまざまな手法やツールがTensorFlowに移植されつつあり、今後ここが深層学習開発の拠点になる予感がしました。 シバタアキラ PyData.Tokyoのハッカソンイベント 前置き~今回のハッカソンを行うに至った経緯 PyData.Tokyoは昨年秋に開始し、第1回のテーマとして深層学習

    Google発の深層学習フレームワーク「TensorFlow」が一般エンジニアに与える可能性
    nilab
    nilab 2016/03/24
    Google発の深層学習フレームワーク「TensorFlow」が一般エンジニアに与える可能性 (1/3):CodeZine(コードジン)
  • ASF、リアルタイム分散処理システム「Apache Storm」をトップレベルプロジェクトへ昇格

    The Apache Software Foundation(ASF)は、Apache Incubatorプロジェクトとして開発を進めていた、リアルタイム分散処理システム「Apache Storm」を、より優先して開発を行うトップレベルプロジェクトに昇格させたと、9月29日(現地時間)に発表した。 Apache Stormは、パフォーマンスに優れ、組み込みやすい、大量のデータを高速処理可能なリアルタイム分散処理システム。Apache Hadoopでも使用されており、効率的なクラスタ処理を可能にしている。 Stormは、もともとBackTypeが開発を行っていたが、TwitterBlackTypeを買収した際に、オープンソースとして公開していた。2013年9月にはApache Incubatorに採用され、Hortonworks、Twitter、Verisign、Yahooなどのコード提供

    ASF、リアルタイム分散処理システム「Apache Storm」をトップレベルプロジェクトへ昇格
    nilab
    nilab 2015/11/06
    ASF、リアルタイム分散処理システム「Apache Storm」をトップレベルプロジェクトへ昇格:CodeZine(コードジン)
  • GitHub、オープンな地図サービス「OpenStreetMap」への投稿機能を提供

    従来より、GitHub上では地理データ版のWikipediaともいえるOpenStreetMapと連携して地理的なデータの表示や比較ができたが、今回追加された機能によって、GitHub上のGeoJSONファイルからOpenStreetMapへのコントリビュートが可能になる。 OpenStreetMapはコミュニティベースで運営されている地図サービスで、レイヤーに道路や川、建物などの情報を備えており、データは自由に使える。 GitHub上にアップロードされているGeoJSONファイルを開き、「improve the underlying map」リンクをクリックすれば、地図へ情報を投稿できる。 なお、2014年には非常に多数のユーザーが、OpenStreetMapとの地理的データの連携機能を利用しており、今回の投稿機能の追加によって、GitHubユーザーからOpenStreetMapへの「恩

    GitHub、オープンな地図サービス「OpenStreetMap」への投稿機能を提供
    nilab
    nilab 2015/10/19
    「GitHub上にアップロードされているGeoJSONファイルを開き、「improve the underlying map」リンクをクリックすれば、地図へ情報を投稿できる」
  • 「HTTP/2」がついに登場! 開発者が知っておきたい通信の仕組み・新機能・導入方法

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    「HTTP/2」がついに登場! 開発者が知っておきたい通信の仕組み・新機能・導入方法
    nilab
    nilab 2015/10/19
    「SPDY/4はHTTP/2と同等の仕様だと思って問題ありません」
  • GitHub、JavaScriptでデスクトップアプリが作れるライブラリAtom Shellを、Electronに改称

    GitHubは、4月23日(現地時間)にJavaScriptによってデスクトップアプリケーションを作成できる、クロスプラットフォームのデスクトップアプリケーションシェルAtom Shellの名称を、Electronに変更した。今回の改称に合わせて、公式サイトのURLも変更する。 Electron(旧Atom Shell)は、もともとAtomエディタでChromiumやNode.jsのイベントループやネイティブAPIを用いるために作られた。しかし、テキストエディタのサポートだけが目的ではなく、Web技術を使用したクロスプラットフォームのネイティブデスクトップアプリケーション開発の実現も目指していた。 開発開始から2年が経過し、Electronは自動アプリアップデートWindowsインストーラー、クラッシュレポートなど、ネイティブアプリケーションに役立つさまざまな機能を、JavaScrip

    GitHub、JavaScriptでデスクトップアプリが作れるライブラリAtom Shellを、Electronに改称
    nilab
    nilab 2015/05/01
    GitHub、JavaScriptでデスクトップアプリが作れるライブラリAtom Shellを、Electronに改称:CodeZine
  • いま最も注目のライブラリ「React.js」でシングルページアプリケーションを作ってみよう! 【前編】

    対象読者 JavaScriptフレームワーク・ライブラリの選定に悩んでいる方 格的にJavaScriptを触るのが初めてという方 jQueryでの大規模なフロントエンド開発に限界を感じている方 必要な環境 Node.jsがインストールされていることが推奨です。 React.jsとは何か React.jsは最近注目を浴びているFacebook製のライブラリで、MVCアーキテクチャでいうViewにあたる機能を提供します。 前提として、JavaScriptの世界でMVCのVといえば、紛れもなくDOM(Document Object Model)のことを指します。特に何も意識しないで作った場合、都合の良いDOMからデータを引っ張り出しては別のDOMを書き換えるといった、行き当たりばったりな作りになりがちです。そこで、MVCの考え方を導入することにより、データを画面とは独立した構造体として切り出し

    いま最も注目のライブラリ「React.js」でシングルページアプリケーションを作ってみよう! 【前編】
    nilab
    nilab 2015/04/04
    いま最も注目のライブラリ「React.js」でシングルページアプリケーションを作ってみよう! 【前編】 (1/3):CodeZine
  • Perl開発者Larry Wall氏が、Perl 6.0の正式バージョンを2015年のクリスマスにリリースすると発言、Perl開発者の中には懐疑的な見方も

    Perlの開発者であるLarry Wall氏が、ブリュッセルで開催中のオープンソース開発者カンファレンス「FOSDEM」において、2月1日(現地時間)に、同氏が2015年に61歳の誕生日を迎えることを明らかにするとともに、Perl 6.0のバージョン1.0を2015年のクリスマスにリリースすると発言した。 Perlは現在、最新バージョンであるPerl 5系列と、開発中のPerl 6系列に分岐しており、Perl 6の開発は2000年のスタート以来、難航している。なお、Perl 6では言語仕様の大幅な変更が行われており、Perl 4やPerl 5との後方互換性が失われる。 今回のLarry Wall氏の発言について、Perl開発者の中には懐疑的な見方もあり、今回の発言によって、2015年のクリスマスにPerl 6のバージョン1.0が確実にリリースされるわけではないが、バージョン1.0について語

    Perl開発者Larry Wall氏が、Perl 6.0の正式バージョンを2015年のクリスマスにリリースすると発言、Perl開発者の中には懐疑的な見方も
    nilab
    nilab 2015/02/02
    Perl開発者Larry Wall氏が、Perl 6.0の正式バージョンを2015年のクリスマスにリリースすると発言、Perl開発者の中には懐疑的な見方も:CodeZine
  • Composerを使ってPHPのパッケージを簡単インストール

    連載では、Composerを使ったパッケージ管理を紹介します。PHPではデフォルトでインストールされているPEARがありますが、最近では、Composerというパッケージ管理ツールも使われつつあります。例えば、JavaなどではMavenのようなツールでパッケージ管理をしたり、Rubyではbundlerといったパッケージ管理が使われるなど、現在では多くの言語でパッケージ管理ツールが使われています。 パッケージ管理ツールを使うとプロジェクトで使われているライブラリの依存関係を管理しやすくなり、依存しているライブラリのインストールも簡単になります。CakePHPもComposerを使ってインストールができるようサポートしており、開発環境ではZend Studioなどでの標準サポートされているなど、PHPでの開発では必須知識といえるほどの広がりを見せています。 連載では、Composerの導入

    Composerを使ってPHPのパッケージを簡単インストール
    nilab
    nilab 2014/12/15
    Composerを使ってPHPのパッケージを簡単インストール (1/3):CodeZine
  • プログラミング言語「Go 1.4」がリリース、Androidを正式にサポート

    今回のリリースは、前回のメジャーリリースから6か月を経たもので、いくつかの仕様変更とともに、対応するOSやCPUアーキテクチャを拡大している。 もっとも重要な変更点は、コアとgolang.org/x/mobileレポジトリにおけるAndroidの正式なサポートで、今回の正式サポートによって、Go言語だけで簡単なAndroidアプリが作れるようになった。現段階では、高レベルな開発に使えるライブラリはほとんどサポートしていないが、Go言語によるAndroidアプリ開発をいち早く楽しめる。 言語仕様については、for-rangeループにおける文法を変更しており、「for range s {」の記述によって値やループインデックス、マップキーなどの定義なしでループできる。また、ソースコードを自動で作成可能なサブコマンドも新たに用意している。 このほか、数多くの機能向上とバグフィックスが行われた。 「

    プログラミング言語「Go 1.4」がリリース、Androidを正式にサポート
    nilab
    nilab 2014/12/12
    プログラミング言語「Go 1.4」がリリース、Androidを正式にサポート:CodeZine
  • マンガで分かるプログラミング用語辞典一覧

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    マンガで分かるプログラミング用語辞典一覧
    nilab
    nilab 2014/01/02
    マンガで分かるプログラミング用語辞典:CodeZine(コードジン)
  • 「ガーベジコレクタ」 ~マンガでプログラミング用語解説

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    nilab
    nilab 2014/01/02
    「garbageは、発音記号をそのまま日本語読みするとガービジ/ガーベジ/ガーベッジに近いのですが、ドキュメントによってはガベージなど表記がまちまちです」 / 「ガーベジコレクタ」 ~マンガでプログラミング用語解説
  • 「ガーベジコレクタ」 ~マンガでプログラミング用語解説

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    nilab
    nilab 2014/01/02
    「ガーベジコレクタ」 ~マンガでプログラミング用語解説 (1/5):CodeZine