2015-08-26

Laravel 5 の独自パッケージを作成する手順

少し前に第二の故郷、カナダのバンクーバーでの生活が始まり、最近は少し落ち着いてきたので、そろそろLaravel5(現在5.1)を見据えた活動をしていきたいと考えています。
ということで、今回はLaravel 5 の独自パッケージを作る手順を今回も備忘録的にお届けしたいと思います。

※ここでの開発手順を自動でやってくれるパッケージ「PackageCreator」を公開しました。詳しくは以下のページをご覧ください。
Laravel の独自パッケージを作成する「PackageCreator」を公開しました。





[結論] おそらく自由度が上がった分、より根本を理解する必要がでてきたなー、という印象です。


まず、前提として

1.Laravel 5以上(私の場合は5.1)がインストールされていること。
2.composer がインストールされていること。

として話を進めます。


では!
実際にパッケージの作成に移りましょう。
手順は以下の6点です。

1.パッケージ開発をするためのフォルダ構造を作成
2.composer.json を作成
3.Rootフォルダ直下にある composer.json にパッケージを追加
4.ServiceProvider を作成
5.パッケージのクラス本体を作成
6.ServiceProvider を登録






1.パッケージ開発をするためのフォルダ構造を作成


まずパッケージを開発するためのフォルダを作成します。

(Laravel5のフォルダ)/packages/Vendor/Package/src


※便宜上、ベンダー名には「Vendor」、パッケージ名は「Package」として説明します。
そのため、もしあなたの開発者名が「Sukohi」で、これから開発する独自パッケージが「Own」の場合は「(Laravel5のフォルダ)/packages/Sukohi/Own/src」となります。


2.composer.json を作成


1番で作成した (Laravel5のフォルダ)/package/Vendor/Package へコマンドで移動し、

composer init

を実行してください。色々と質問を聞かれるので自分にあった情報を打ち込み composer.json を作成します。

※composer.json は後でエディタで変更可能ですので、あまり深く考える必要はありません。


3.Rootフォルダ直下にある composer.json にパッケージを追加

以下のように「autoload/psr-4」内に独自パッケージのネームスペースとパスを追加します。

"autoload": {
    "psr-4": {
        "App\\": "app/",
        "Vendor\\Package\\": "packages/Vendor/Package/src"
    }
}
※もちろんカンマで区切ることで複数のパッケージを指定できます。



4.ServiceProvider を作成

(Laravel5のフォルダ)/packages/Vendor/Package/src」 内に PackageServiceProvider.php を作成し、以下をコピペする。

<?php namespace Vendor\Package;

use Illuminate\Support\ServiceProvider;

class PackageServiceProvider extends ServiceProvider {

    /**
     * Indicates if loading of the provider is deferred.
     *
     * @var bool
     */
    protected $defer = true;

    /**
     * Bootstrap the application events.
     *
     * @return void
     */
    public function boot()
    {
        //
    }

    /**
     * Register the service provider.
     *
     * @return void
     */
    public function register()
    {
        $this->app['package'] = $this->app->share(function($app)
        {
            return new Package;
        });
    }

    /**
     * Get the services provided by the provider.
     *
     * @return array
     */
    public function provides()
    {
        return ['package'];
    }

}

※実際には  を以下のようにあなたのベンダー名とパッケージ名に置き換える必要があります。

PackageServiceProvider ・・・ (独自パッケージ名)ServiceProvider
package ・・・ (独自パッケージ名)
Vendor ・・・ (あなたの開発者名)


※独自に view を利用する場合は boot() 内に「loadViewsFrom()」で読み込みができます。
※独自にpublishする必要がある場合は同じく boot() 内で publishes() を使う。

詳しくはこちら
↓↓↓

Resources
Publishing File Groups


5.パッケージのクラス本体を作成

以下のようにネームスペース付きでクラスを作成

<?php namespace Vendor\Package;

class Package {

    // ここにプログラムを作成

}

6.ServiceProvider を登録


(Laravel5のフォルダ)/config/app.php に、


(i)ServiceProvider を登録

    'providers' => [

        // その他のServiceProvider

        /*
         * Package Service Providers
         */

        Vendor\Package\PackageServiceProvider::class,

    ],
(ii)エイリアスを登録

    'aliases' => [

        'Package'       => Illuminate\Support\Facades\Package::class,

    ]


(iii)コマンドラインでルートフォルダへ移動し、以下のコマンドを実行

composer dumpautoload -o


はい!
これで Controller 内などから

 Package::something();

という形で独自パッケージを呼び出すことができます。


[参考ページ](参考というかほぼ全体的に訳しただけです^-^;)

https://laracasts.com/discuss/channels/tips/developing-your-packages-in-laravel-5

Thank you, davidxd33!
Your tip helped me out. :)))



■おまけ(Laravel5.1に関して)

※これからは実際に Laravel 5.1を使って開発をしていきたいと考えています。だけど、5.1は要件がPHP5.5.9以上ということもあり、いわゆるレンタルサーバーと呼ばれる環境では使えるようになるにはまだまだ時間がかかりそうってとこがネックになりそうですねー。


以上です。
おつかれさまでした!



2015-07-09

私がウェブ開発で行っている「時短」テクニック【全9件】

今回はいつものITに関する技術紹介とは違って、普段私がウェブ開発で利用している「時短テクニック=(時間を短縮する方法)」をまとめてみました。
中にはテクニックというよりアプリやサービスを使ってるだけ、というものもありますが時間を短縮することにつながっている全9テクニックです。




【紹介の前に】

今回は 「時短度」を最大5つとして独断と偏見で評価しています。

では以下から実際のテクニックの紹介です!



1.マウスジェスチャ

これはブラウザだけでなくデスクトップでも使っています。
昔はいちいちアプリケーションやページを閉じるのも「x」と書かれた右上のボタンをクリックしていましたが今では「マウスを右クリックしながら下へ移動させる」だけですのでとても時短に貢献してくれています。

ちなみに、私が利用しているのは

(1) Linux ・・・ Easystroke
(2) Windows ・・・ Smalker
(3) ブラウザ ・・・ Fire GesturesSmooth Gestures Plus

です。
マウスジェスチャは一度使い出すと本当に便利で、たまに他人のPCを使ったりするとイライラするぐらいです。


【時短度】 ★★★★☆



2.パソコンの機能アップ、改善

これは多少お金が必要ですが、劇的に時間短縮ができるようになります。

(1) HDD → SSD

特に他のものと比べても効果が高いですね。
SSDは今は比較的安く購入できるのでとてもオススメです。


(2) メモリーの増強、CPUの変更

現在の環境ではメモリーの増強のみですがこちらも効果が高いです。


(3)OSにLinuxを利用する

現在はWindowsのスピードも速いようですし、Linuxもものによっては重いものもありますので、選択するディストリビューションによってはとそれほど効果は高くないかもしれません。


【時短度】 ★★★★★



3.grunt

Grunt はいろいろな開発支援をしてくれますが、その中でもファイルを保存した瞬間にブラウザを自動で再読み込みしてくれる「livereload」は手放せないツールです。
これを使ってからは毎回毎回リロードするのがバカらしくなりました。
※最近話題になっているGulpでもリロードが利用できるみたいですね。


【時短度】 ★★★★★



4. パッケージ管理ツール

その昔は必要なパッケージがあると、GitHubなどからダウンロードしてきて、そのパッケージを解凍して、適当な場所に設定して、、、という流れでしたが次の2つを使うようになってからその作業を自動実行できるようになりました。
しかも composer などは使っているPHPの環境や依存までチェックしてくれているようなのでいたれりつくせりといった感じです。

(1)PHP: composer
(2)JSなど: bower


【時短度】 ★★★★☆



5.PhpStorm(IDE)

PhpStorm はPHP開発に特化したソフトウェアなので全ての人に当てはまらないかもしれませんが、とても軽く動作しますしファイル検索も楽にできるのでとてもおすすめです。
有料ですがお金を払う価値は間違いなくあります。

※使ったことはないのですが、Sublime Text も評価が高いようですのでこれを機に開発環境を見なおしてみてはいかがでしょうか。


【時短度】 ★★★☆☆



6.英語

よく言われることですが、ITなどの情報はやはり日本語だけでは情報収集がしにくいことが多いです。
例えば、何かのエラーが発生した場合に日本語だけで探しても全く参考になるページが見つからなくても英語ならほぼどんなものでも紹介ページを見つけることができます。
(いつも Stack Overflow には助けられっぱなしです。日本語版も活発になればいいですね ^-^)


【時短度】 ★★★★☆




7.プラグイン(汎用クラス)の作成

コンピュータの最も有利な点のひとつに「コピーが何でも簡単にできてしまう」というものが挙げられると思います。
これをウェブ開発でも最大限利用するために、私は常に「一度作ったプログラム」をいつでも他のものに流用できるよう心がけています。
私は最近Laravelでのウェブ開発が多いのですが、Laravel用のプラグインを作成しGitHubで公開することで時短を実現しています。


【時短度】 ★★★★★



8.外字登録


IMEにプログラム用の外字を登録することで毎回同じ文字を打たなくてもよくするというテクニックです。
例えば私の場合ですと、「p」と入力すると

echo '<pre>'. print_r($array, true) .'</pre>';

という文字が変換候補に現れるなどの設定を行っています。


【時短度】 ★★☆☆☆



9.MailCatcher

MailCatcher はプログラムからメール送信した際に実際にはPC外へは送信せず、送信されたメール内容の確認ができるというツールになります。(ダミーSmtpっていうんでしょうか?)
以前はメールの送信テストをする際にはG-Mail を利用して実際にメール受信してチェックをしていました。
このやり方でもほぼ問題は無いのですが、やはり受信するまでにタイムラグがあるのでMailCatcherを導入しました。
メールの誤送信もなくなりますし、スピードアップもできるのでとてもいい感じです。


【時短度】 ★★★☆☆



(おまけ) Git FTP

Git FTP はGitを使いつつFTP(SFTPなどもOK)でファイルをアップロードできるツールになります。
これがあれば、更新したファイルのみをアップロードできますし、.gitignore なども利用できるのでとっても便利です。


と、いうことで以上が私が行っているウェブ開発の「時短」テクニックでした。
皆さんももっとこんなものがあるよ!というのがあったらぜひ教えてください。
「時短」、好きです。^-^
お疲れ様でした。




2015-03-09

Modern.ie を Ubuntu で使う方法(IEを使った実行テストができます)

とんでもなく前回の投稿から時間が開いてしまいました。
もちろんいろんな開発をしていると「お!これはブログにのっけようかな。」というアイデアも浮かぶのですが、なかなか実行には移すのは難しいものですね。
さてさて、というわけで今回はそんな重い腰をあげ、私の大好きなOS「Ubuntu(14.04)」内でInternet Explore 11 を起動し、ローカル環境のサイトへアクセスする方法を備忘録的にお届けしたいと思います。




最終結論: Microsoftさん心からありがとう!(詳しくないけど社長が交代したからこんないいものがでてきたのかな?)

【前提条件】

Ubuntu に VirtualBox がインストールされていること。(Oracleにも感謝^^)


では、まずModern.ie に必要となるファイルを以下のサイトからダウンロードしましょう。

https://www.modern.ie/ja-jp


【ダウンロード方法】

※注:ダウンロードするファイルの容量はバカでかいので注意が必要です。私はパーティションの関係上いろいろなファイルを消す羽目になりました(汗)


1.ではまず、「仮想マシン」をクリックします。


2.画面下のバーチャルマシンを選びましょう(私の場合はWindows 7 の IE 11です。)


3.次にプラットフォームです。Linux用を選びましょう。


4.手順が楽なので、一番上の single-file を選んでダウンロードを実行します。


先ほど書きましたがダウンロードは時間がかかると思います。
気長に待ちましょう。

・・・


さぁ、ダウンロード が完了したら解凍して、「IE11 - Win7.ova」というファイルを取り出します。
では次からはVirtualBox へこのファイルをインポートする手順を紹介しましょう。(簡単ですけど)


 【VirtualBox へのインポート】


1.VirtualBoxを起動します。

2.仮想アプライアンスのインポートをクリックし、先ほどの 「IE11 - Win7.ova」を選択すると自動で開始されます。


※私の場合その他の設定はデフォルトで実行しました。
以上でインポートは完了です。
次は実際に起動をしましょう。

VirtualBox に IE11 - Win7と表示されているのでそこからWindowsを起動します。
ほんの少し時間はかかりますが・・・




はい。Ubuntu内で Windows 7 が起動しました!

ではここからは、このWindows 7内のIE 11 から起動元であるUbuntuのローカルホストを表示する方法をご紹介します。


【ローカルホスト参照する方法】

1.スタートメニューから Command Prompt(コマンドプロンプト)を実行します。



2.「ipconfig」と入力しエンターキーを押すといろいろな情報が表示されるので、その中にある「Default Gateway」の横に表示されている文字列を覚えておきましょう。(以下の例では 10.0.2.2です。)


3.では次に host 情報を変更するためにNotepad を開きます。(スタートメニューから 「Notepad」で出てきます)。

※この時通常どおり起動すると権限の関係から保存ができませんので、以下のように右クリックして「Run as administrator」から起動します。つまり管理者権限で実行するということですね。



4.Windows がOKかどうか尋ねてくるので、Yesをクリックしましょう。



5.ではやっと host ファイルの変更です。Notepadの「File」→「Open」をクリック。
その中から「C\Windows\System32\drivers\etc」のフォルダにある 「hosts」というファイルを開きましょう。

※もしこのフォルダに何も表示されない場合は、右下にあるドロップボックスの「All Files」を選択してください。

6.次に host ファイルの設定です。以下のようにファイルの最後に設定を書き込みます。(10.0.2.2は先ほど確認した Default Gateway になります。)



※私の場合は Ubuntu にも開発用ドメインを設定もしているので「****.dev」のようなアドレスも追加されていますが、必要なければ localhost のみで問題ありません。

7.さぁ、少し長かったですがこれで hostファイルの設定が完了です。このファイルを保存して Windows を再起動しましょう。


次にIEを開いた際には http://localhost/ へアクセスが可能なはずです。
お疲れ様でした。


【おまけ】

Modern.ie を使っていてまず最初にとまどったのですが、キーボード配列の違いから

1.:(半角コロン)
2.@(半角アットマーク)

の入力方法がわかりませんでした。

結論から言うと、

「:」は「Shift + ;(セミコロン)」で、
「@」は「Shift + 2(←テンキーではない方)」

で入力が可能です。ちょっと不便ですが実行テストだけなので覚えておいたほうがいいですね。
(もしかすると日本語化できるのかな?)


 【おまけ2】

次に困ったのが「コピペ」です。
そう。Ubuntu上でクリップボードにコピーしたテキストを Windows内でペーストしたい、、、けどできなかったので調べてみると、VirtualBoxの方で設定することでコピペが可能なようです。

手順としては、

画面中央の「一般」をクリックすると設定画面が出てくるので、「高度」タブを選択、

「クリップボードの共有」を「ホストOSからゲストOSへ」にして OKを押せば完了です。

※ちなみにその下はドラッグ&ドロップの設定です。お好みでここも設定しておくと便利ですよ。




以上です。
お疲れ様でした。^^