技術はあとからついてくる。

技術はあとからついてくる。

就活開始の半年前にエンジニアに目覚めた人

PHPDoc is 何

なぜ書くか

動的型付け言語に不足する部分を埋める

なにを書くか

1. 必須項目

型の情報

@var [型] 説明 @param [型] 変数名 説明 @return [型] 説明 (戻り値がない場合は省略可)

複数の型を返す場合にmixedと書けるが, これは避けたい. 複数の型を書く場合は, int|string|... のように記述できる.

- 型はなるべく具体的に書く

Builderと書いても * Core\Builder\Builder; * Illuminate\Database\Query\Builder など複数あり, 正しく判断できない場合がある.

- @return void is 何

voidは戻り値がないことを明示的に示す

例外オブジェクト

@throws [Exception Type] [説明]

メソッドが発行する例外オブジェクトを定義できる. これが書いてあると, メソッドを呼ぶときに, どのようなtry ~ catchを書くべきかを判断できる.

2. 必要に応じて書く項目

メソッドを実装する元になったやり取りへの参照

@link [url] [説明]

RedmineのチケットのURLやGitLabのissueなど

【phpcon2018 アウトプット】独立したコアレイヤパターンによる PHP アプリケーションの実装

独立したコアレイヤパターンによる PHP アプリケーションの実装

背景

なぜ独立したコアレイヤパターンを実装するのか

  1. 対象ドメインが違うから

MVC + Service

  • ユースケースをサービスとして切り出す
  • Webアプリケーションの一部の’関心ごとは分離できた
    • HTTPに間することはサービスには入れない
  • その他の技術詳細(RDBMS等)が分離できず

レイヤードアーキテクチャ

  • ドメインを中心
  • 分離はできるが、それなりに複雑
  • もう少しシンプルにできないか

ベースのアイデア

  • WhatとHowをレイヤで分ける
  • コアロジックと技術詳細(フレームワーク含む)の分離
  • 守るべきシンプルなルールのみを決める

独立したコアレイヤパターン

  • アーキテクチャパターンの1つ
  • 2つのレイヤに分離
  • コアレイヤ
    • コアロジックを実装
  • アプリケーションレイヤ (旧:サービスレイヤ)
    • HTTP/RDBMS/外部APIなどの技術詳細

コアレイヤ

技術詳細インターフェイス

要求をインターフェイスにする

  • 実装の共通箇所をまとめるのではなく、必要な機能をインターフェイスにする方法
  • 実装の数は問題ではない
  • 依存関係逆転の法則(DIP)

依存関係逆転の放送

  • Solid原則のD
  • レイヤやモジュール間の依存関係をインターフェイスを利用して逆転させる

依存関係逆転の法則

ユースケースインターフェイスに依存 アダプタがコアレイヤのインターフェイスに依存 * 依存関係が

アプリケーションレイヤ

まとめ

  • コアレイヤとアプリケーションレイヤに分離
  • コアレイヤからアプリケーションレイヤはインターフェースを利用する

実装例

コアレイヤパターンの現場

レイヤわけに迷う

コアレイヤへの入出力データ

ルールの明確化

まとめ

  • コアレイヤとアプリケーションレイヤに分離
  • コアレイヤからアプリケーションレイヤはインターフェースを利用してアクセス
  • 依存関係逆転の法則
  • フレームワーク、ライブラリは素晴らしい

全員がこのパターンをやるべきか?

質疑応答で出てきた用語

5分でTypeScriptしようぜ

typescript JSの動的型付けをコンパイル時に許容しないAltJSの代表格であるTypeScript。
前々から気になっており、時間ができたのでさわってみました。
TypeScirptさわったことあるよ!って5分で言える記事を書いてみました。

続きを読む

ステータスコードとその中身 (HTTP1.1)

f:id:ricken0203:20181209230554j:plain

ステータスコードの概要とよく見るステータスコードの意味とHTTP通信の中身について調べてまとめました。
エンジニアでなくても、404 NOT FOUNDは、見たことがある方も多いと思います。
エンジニアならば、ステータスコードを見て瞬時に取るべき手段を判断できるようになるといいですね。

続きを読む