Post

プログラミング

2016-10-03 16:24:56

Reactで複数のinputを扱うフォームを実装する

Reactでフォームを実装するのはちょっと癖があります。 まずReactのフォームにはcontrolled formとuncontrolled formという2つのパターンがあることを先に理解しておくと良いかもしれません。参考:React ドキュメント 私はまだ理解が及んでいないところも多々ありますが、Reactの実装例が少ないので少しでも刺激になればという感じで記事を公開したいと思います。(もっと楽なやり方とかこうした方がいいといった指摘があると幸いです。) 今回の実装にあたり色々ググったのですが、inputが一つしかない実装例ばかりで結構しんどかったです。。。 やること 複数のinputを...

プログラミング

React

2016-10-03 16:24:29

Reactでフォローボタンをつくってみる

つくるものツ◯ッターのフォローボタンをパクったリスペクトしたものをつくります。仕様はだいたい同じだと思いますが、仕組みは異なります。クリックでフォロー/フォロー中とテキストが切り替わる、フォロー中の時にホバーした場合は解除というテキストを出す。これだけです。やや装飾にこだわって全体に無駄なCSSが設定されていますが、その辺は適宜スタイルシートを調整してください。 必要な知識 Reactの導入方法及び簡易的なコンポーネント作成方法 jsxとbabelについての多少の知識と理解 環境 React・・・v15.3.0 babel・・・コンパイラ(jsxもコンパイルしてくれるそうです) html...

プログラミング

React

2016-10-03 16:23:52

Reactでrequireしてたら、[BABEL] Note: The code generato...

ReactでComponentをrequireしてたら見慣れないエラーがでました。 環境 Laravel Elixir Babel Browserify ファイルでかいぞ![BABEL] Note:The code generator has deoptimised the styling of "D:/path/to/hoge.js" as it exceeds the max of "100KB" というエラーなわけですが、babelを使っていてファイルが大きすぎると発生するエラーのようです。 What does “The code generat...

プログラミング

React

2017-04-03 16:22:50

React+react-redux+react-router+ES6+webpackで作るSPAホ...

概要Reactで作るSPAの簡易的なボイラープレートをつくりました。最近のフロントエンドには何とかついていくだけで精一杯なため、ソースに自信はありませんが、一応形にはなっていると思いますと言い訳だけしておきます(_) 環境モジュール axios lodash react react-dom react-router react-redux redux redux-promise ビルド周り babel-core babel-loader babel-preset-es-2015 babel-preset-react babel-preset-stage-0 webpack webpack-d...

プログラミング

boilerplate ES6 React react-router Redux webpack

2016-11-23 16:19:22

React+Reduxのディレクトリ構成検討

React+Reduxをアプリケーションに導入しようとするときに、そのディレクトリ構成について悩んでいたのですが、良さ気な記事を見かけたのでまとめてみました。 A Better File Structure For React/Redux Applications Reduxの構成に従うパターンシンプルかつベタなパターンです。SPA開発ならこれが定番でしょうか。 actions/ CommandActions.js UserActions.js components/ Header.js Sidebar.js Command.js Command...

プログラミング

ES6 React Redux

2016-10-03 16:18:43

React+marked+highlight

wysiwygエディタではなく、マークダウンエディタをReactでつくってみました。 ソースコードの大部分はReact入門を参考にさせていただきました。 雑なgifサンプルはこちら(:3」∠) 環境 React marked(github)・・・マークダウンパーサー highlight.js(highlightjs.org)・・・シンタックスハイライト bower・・・上記全てのパッケージ管理に使用 準備markedとhighlight.jsをbowerでインストール bower install markedbower install highlightjs それぞれご自分の環境にインストー...

プログラミング

ES6 React highlightjs markdown marked

2016-10-03 16:18:00

React Tag Autocompleteを使ってサジェスト付きタグ機能を実装する

タグ機能をフルスクラッチで開発しようと思っていたのですが、便利なReact Componentが沢山見つかったのでそちらを利用してみました。 環境 React Babel Browserify React Tag Autocomplete npm 導入npmでReact Tag Autocompleteを導入します。 npm install --save react-tag-autocomplete インクルードの仕方は色々あるかと思いますが、今回の環境ではrequireを使います。 var ReactTags = require('react-tag-autocomplete&#3...

プログラミング

React

2016-12-01 16:17:16

PHPで学ぶデザインパターン - オブジェクト指向の基礎

概要今は絶版になっているPHPによるデザインパターン入門を教科書にして、PHPでデザインパターンを学びます。(※Amazonで中古がありますが、定価の倍以上の値段が付いているようです。) 本連載で扱うコードはgithubにまとめていきます。 本来であれば、OOPの先駆けである言語でデザインパターンを学びたいところでしたが、PHP以外の言語の素養がなかったことと、PHPでデザインパターンを解説している本に出会ったことから、PHPでデザインパターンを学んでみることにしました。 参考   PHPによるデザインパターン入門    Do You PHP はてな   Github shimooka/Php...

プログラミング

デザインパターン PHP OOP

2016-12-02 16:14:48

PHPで学ぶデザインパターン - Template Method ~処理の穴埋め~

Template Method パターンとは?似たような処理を枠組み(型)としてスーパークラスで定義し、より具体的な処理内容をサブクラスで実装するというパターンです。単なる継承ではなく、具体的な処理内容を抽象メソッドとして定義することで、スーパークラスのメソッドの実装を保証し、クラスの振る舞いをサブクラスによって定義させる継承を利用したパターンです。 構造AbstractClass処理の枠組みを定義するクラスで、枠組みを定義するメソッド(template method)とそれを利用するメソッドを含みます。 ConcreteMethodAbstractClassを継承するサブクラスで、Abstr...

プログラミング

デザインパターン PHP templatemethod

2016-12-04 16:13:57

PHPで学ぶデザインパターン - Singleton ~いくつ作るかを制限~

Singleton パターンとは?インスタンス生成のコストを制御するために、インスタンスが1つしかないことを保証するパターンです。 構造SingletonClasspriavateのコンストラクタとインスタンスを1つだけ返すstaticメソッドと自分自身のインスタンスを保持するためのstatic変数を用意するだけです。 メリットインスタンスへのアクセスを制御できるSingletonパターンが保持する自分自身へのアクセスをprivateに制限しているためクライアント側のコードからのアクセスを制御することができます。 インスタンス数を変更することができる生成されるインスタンスの数を2つ以上に変更す...

プログラミング

デザインパターン PHP singleton

2016-12-08 16:13:11

PHPで学ぶデザインパターン - Adapter ~APIを変更する~

Adapter パターンとは?API(互換性のないインターフェース)同士を適合させるためのパターンです。既存のコードの変更をせずに、再利用することで新しい機能を提供するというものです。再利用するコードには変更を加えないというのが特徴です。主にコードを再利用するためという後天的理由から成り立っているパターンです。(設計段階でラッパーを用意するパターンはBridgeパターンです。) 構造##TargetClassAPI(インターフェース)の定義をします。 AdapteeClassTargetClassに適合させる既存のAPIを提供します。 AdapterClassAdapteeClassのAPIを...

プログラミング

PHP adapter デザインパターン

2016-10-03 16:04:12

Laravelの多対多のリレーションでテーブル名を規則から外す時

多対多のリレーションを設計するときに、ドキュメント通りやっていたと思ったらちょっとした勘違いをした話です。 ここに3つのテーブルがあるじゃろ?今回のテーブル events event_tags event_tag_event←pivotテーブル 通常のテーブルは events tags tag_event って感じでデフォルトの規則通りリレーションを貼ればいいのですが、ちょっと癖のある名前にすると少し気をつけるところがあるようです。 ドキュメントを見てみるLaravel 5.1 Eloquent:リレーション ほうほう第2引数をもたせてあげればいいんだなー public functio...

プログラミング

Laravel

2017-03-20 16:03:43

Laravelのフォームリクエストでバリデーションされる値をカスタマイズする

概要Laravelのフォームリクエストで、バリデーションされる値をカスタマイズする方法です。APIのエンドポイントが/post/:id/deleteの時に、ルートパラメーターにフォームリクエストのバリデーションをかけたい・・なんて時に有効かもしれません。 validationDataメソッドをいじるLaravel APIにあるvalidationDataをいじります。 ルートパラメーターのidにバリデーションをかける例です。 <?php namespace App\Http\Requests\Api\v1\Category; use Illuminate\Foundation\Htt...

プログラミング

Laravel

2016-12-15 16:01:50

Laravelのredirect('hoge')とredirect()->to('hoge')の違い

些細な事ですが、気になったので調べてみました。 public function getIndex() { return redirect()->to('hoge'); } 今まで何となくこっちを使っていましたが、 public function getIndex() { return redirect('hoge'); } こっちでも問題なく動作するのでredirectヘルパーの実装について調べてみました。 redirectヘルパーの実装if (!function_exists('redirect')) { /** * Get an instance of...

プログラミング

Laravel

2016-10-03 15:57:50

LaravelにbowerでReactを導入してみる

先日、Laravel5.3ではフロントエンドフレームワークとしてVue.jsをデフォルトとして採用するのが決定したようです。 普段、フロントエンドはjQueryで開発しているのですが、最近の流行りに乗じてReactを使ってみることにしました。LaravelならVue.jsにしとくのが無難かなと考えたのですが、Reactが今一番伸びがある(らしい)のでReactにしました。AngularJSとで迷ったのですが、あくまでjQueryの代わりになるかつViewだけ担当するものを考えていたのでReactを選択しました。 それぞれのFWの技術的な利用価値について説明できるほどフロントエンドマンではないの...

プログラミング

Laravel React

2017-08-13 15:56:24

Laravelでエラーメッセージを共通のテンプレートで対応する方法

概要Laravelのエラーページを共通のテンプレートで対応する方法について説明します。 エラーハンドリングをカスタマイズapp/Exceptions/Handler.phpでrenderHttpExceptionメソッドをオーバーライドします。 Laravel API - Handler.php <?php namespace App\Exceptions; use Exception; use Illuminate\Auth\AuthenticationException; use Illuminate\Foundation\Exceptions\Handler as Exce...

プログラミング

Laravel

2016-10-03 21:17:47

LaravelでRestAPIをつくる

LaravelでReactをフロントエンドのフレームワークとして採用しているのですが、APIを設計する必要がでてきたのでやってみました。 やること ResourceControllerをつくってデータを出力するだけのAPIをつくる API公開を見越した認証用ミドルウェアを実装する やらないこと Restの説明 APIデータの更新や削除 Ajaxでのデータの取得と出力 環境 Laravel5.2 Resource Controllerをつくる職人さんの朝は早い・・・php artisan make:controller HogeController --resource 職人が仕事するとこ...

プログラミング

API Laravel React REST

2016-10-03 21:16:56

LaravelでEventを使う

ユーザー登録時や退会時など特定のイベントの時に発火させたいメソッドを管理したい時はイベントリスナーを使うと便利です。 今回は基本的なイベントとリスナーの定義の仕方についてはすっ飛ばし、一つのリスナークラスで複数のイベントを設定できるイベント購読について扱います。 環境 laravel5.2 ディレクトリ app\Events・・・イベント名=クラス名としたクラスを置く(厳密な命名規則はないです) app\Listeners・・・イベントごとの処理(リスナー)とsubscribeメソッドの実装(後述)したクラスを置く app\Providers・・・イベント購読で使用するリスナーを登録するクラ...

プログラミング

Laravel

2017-04-25 21:15:56

LaravelでCORS対応

概要LaravelでCORS(Cross-Origin Resource Sharing)に対応する方法をまとめました。クライアントサイドはReact, axiosを使用します。前提知識としては、CORSのリクエスト形態、シンプルなリクエスト方法と、preflightを使用するリクエスト方法の違いを抑えておけば良いかと思います。RESTfulAPIの場合は基本的にはpreflightを使用するリクエスト形式かと思います。この記事では、preflightを使用するリクエストに対応する例を取り上げます。 環境CORSなので当たり前ですが、apiとwebでドメインを用意しています。 api.hoge...

プログラミング

Laravel CORS

2016-10-03 21:15:10

Laravelでajaxの際にCsrfTokenに引っかかった話

Laravel+React+SuperagentでAjaxを実装していたら、500エラーがでて、「いやいやまさかTokenじゃないっしょ〜 そんなの知ってるもん〜」と捻くれていたら、CsrfTokenが原因でした。 解決方法ヘッダにTokenを含める方法もありますが、ハードコーディング感があるので、VerifyCsrfToken.phpで該当URLを除外する方法がスマートだと思うのでそちらを記載します。 <?php namespace App\Http\Middleware; use Illuminate\Foundation\Http\Middleware\VerifyCsrfTo...

プログラミング

AJAX Laravel React superagent