PHP
Cybozu Garoon API Cybozu Garoon を社内で使っているんだけど、APIが公開されていることをつい最近知った。 developer.cybozu.io サイボウズ上の当日の予定をAPI経由で取得できるので、 毎朝チームのチャットグループに自分のスケジュールを自動投稿する、…
Interpreter パターンとは Interpreter パターンの基本的な考えは、定義された種類の問題を素早く解くために、ドメインに特化した言語を実装することである。 Interpreter パターン - Wikipedia Interpreterパターンでは、プログラムが解決しようとしている…
Proxy パターンとは Proxy(プロキシ、代理人)とは、大まかに言えば、別の物のインタフェースとして機能するクラスである。その「別の物」とは何でもよく、ネットワーク接続だったり、メモリ上の大きなオブジェクトだったり、複製がコスト高あるいは不可能…
Command パターンとは 動作を表現するオブジェクトを示す。Command オブジェクトは、動作とそれに伴うパラメータをカプセル化したものである。 Command パターン - Wikipedia クラスが仕事を行う時、自分のクラスや他のクラスのメソッドを呼び出す。メソッド…
Flyweight パターンとは 等価なインスタンスを別々の箇所で使用する際に、一つのインスタンスを再利用することによってプログラムを省リソース化することを目的とする。 Flyweight パターン - Wikipedia flyweighという名がついているように、このデザインパ…
State パターンとは 振る舞いに関する(英語版) デザインパターンの一種である。このパターンはオブジェクトの状態(state)を表現するために用いられる。 State パターン - Wikipedia Stateパターンでは、「状態」というものをクラスとして表現する。「状…
Memento パターンとは オブジェクトを以前の状態に(ロールバックにより)戻す能力を提供する。 Memento パターン - Wikipedia オブジェクト指向のプログラムでundo(やり直し)を実現するには、インスタンスの持っている情報を保存しておく必要がある。 ただし…
Observer パターンとは プログラム内のオブジェクトの状態を観察(英: observe)するようなプログラムで使われるデザインパターンの一種。出版-購読型モデルとも呼ばれる。 Observer パターン - Wikipedia 観察対象の状態をが変化すると、観察者に対して通知…
Mediator パターンとは Mediator パターンを用いると、オブジェクト間の通信は mediator によってカプセル化され、オブジェクト同士で直接通信せず、mediator を介して行うようになる。 Mediator パターン - Wikipedia mediatorとは、「調停者」「仲介者」と…
Facade パターンとは Facade(ファサード)とは「建物の正面」を意味する。異なるサブシステムを単純な操作だけを持ったFacadeクラスで結び、サブシステム間の独立性を高める事を目的とする。 Facade パターン - Wikipedia プログラムというのは段々大きくな…
Chain of Responsibility パターンとは Chain of Responsibility パターン - Wikipedia 一つの コマンドオブジェクトと一連の 処理オブジェクトから構成される。各処理オブジェクトは、処理できるコマンドオブジェクトの種類と、自身が処理できないコマンド…
下のような多重配列があるとする。 [ 'bar' => [ 'user_id' => 10 ] ] ]; この配列構造を知らない状態で、'user_id'キーの値だけ検索して取り出したい。 再帰処理を書けばいいだけなんだけど、PHPの標準ライブラリで実現できないかと思って検索すると、でき…
Visitor パターンとは アルゴリズムをオブジェクトの構造から分離するためのデザインパターンである。分離による実用的な結果として、既存のオブジェクトに対する新たな操作を構造を変更せずに追加することができる。 Visitor パターン - Wikipedia データ構…
目的 自社アプリのような信頼できるモバイルアプリケーションからAPIを利用したい モバイルアプリからAPIを利用する際のセキュリティ脆弱性は必ず排除する必要がある。 前提 APIは既に存在し自社webアプリケーションから利用されている。webアプリからの認証…
Decorator パターンとは このパターンは、既存のオブジェクトに新しい機能や振る舞いを動的に追加することを可能にする。 Decorator パターン - Wikipedia スポンジケーキが1つあるとする。クリームを塗れば何も載っていないショートケーキができあがる。い…
Composite パターンとは 「構造に関するパターン」に属する。Composite パターンを用いるとディレクトリとファイルなどのような、木構造を伴う再帰的なデータ構造を表すことができる。 Composite パターン - Wikipedia コンピュータにおけるディレクトリのよ…
Strategy パターンとは Strategy パターンは、コンピュータープログラミングの領域において、アルゴリズムを実行時に選択することができるデザインパターンである。 Strategy パターン - Wikipedia ようするにアルゴリズムの実装部分をごっそり交換可能にす…
Bridge パターンとは 「橋渡し」のクラスを用意することによって、クラスを複数の方向に拡張させることを目的とする。 Bridge パターン - Wikipedia この「橋渡し」をする場所は、「機能のクラス階層」と「実装のクラス階層」である。 機能のクラス階層 新し…
Abstract Factory パターンとは 関連するインスタンス群を生成するための API を集約することによって、複数のモジュール群の再利用を効率化することを目的とする。 Abstract Factory パターン - Wikipedia example サンプルプログラムは階層構造を持ったリ…
Builder パターンとは オブジェクトの生成過程を抽象化することによって、動的なオブジェクトの生成を可能にする。 Builder パターン - Wikipedia example 以下は、Builderパターンで文書を作成するサンプルプログラム。 Builder 抽象クラス
Prototype パターンとは 生成されるオブジェクトの種別がプロトタイプ(典型)的なインスタンスであるときに使用され、このプロトタイプを複製して新しいオブジェクトを生成する。 このパターンは Abstract Factory パターンでなされるように、クライアント…
Singleton パターンとは Singleton パターンを用いると、そのクラスのインスタンスが1つしか生成されないことを保証することができる。ロケールやLook&Feelなど、絶対にアプリケーション全体で統一しなければならない仕組みの実装に使用される。 Singleton …
Factory Method パターンとは Factory Method パターンは、他のクラスのコンストラクタをサブクラスで上書き可能な自分のメソッドに置き換えることで、 アプリケーションに特化したオブジェクトの生成をサブクラスに追い出し、クラスの再利用性を高めること…
Template Method パターンとは スーパークラスで処理の枠組みを定め、サブクラスでその具体的内容を定めるようなデザインパターンのこと。 Template Method パターン - Wikipedia example 文字や文字列を5回繰り返して表示する、というプログラムをtemplate …
Adapter パターンとは インターフェースが異なっている2つの間に入り、そのずれを埋めるためのパターン。既存のクラスに対して修正を加えることなく、インタフェースを変更することができる。 Adapter パターン - Wikipedia example Bannerクラス string = …
laravel で作成したmigrationファイルが不要になったため削除すると、migration時にエラーが出るようになった。 $ php artisan migrate:refresh [ErrorException] Undefined index: 2017_03_24_082414_xxx_table 上記は、削除したはずのテーブルだが、まだ参…
結城浩氏の「増補改訂版Java言語で学ぶデザインパターン入門」を読んでいる。 これは、デザインパターンについてまとめられた良書だ。 各デザインパターンについて、自分なりまとめてみようと思う。 Iterator パターンとは Iteratorパターンとは、何かの集合…
vagrant環境でlaravel 5.4 の認証機能をテストする # composer からlaravelをインストールする $ composer global require "laravel/installer" # プロジェクトを作成する $ laravel new myApp $ cd myApp $ composer install $ cp .env.example .env # .env…
phpdocumenterでソースコードからドキュメント自動生成をしたときに起きた問題。 https://github.com/phpDocumentor/phpDocumentor2 # ドキュメント生成コマンド $ phpdoc run -d <SOURCE_DIRECTORY> -t <TARGET_DIRECTORY> --template=responsive-twig すると、TARGET_DIRECTORY/packages配下にd</target_directory></source_directory>…
自分はsublime textは使ってないけども、調べる必要があったのでメモ。 fabpot/php-cs-fixer をインストール $ curl -sS https://getcomposer.org/installer | php $ mv composer.phar /usr/local/bin/composer $ composer global require fabpot/php-cs-fix…