日頃の行い

個人的な日頃の行いをつらつら書いてます\\\\ ٩( 'ω' )و ////

(だいたい)新卒エンジニア向け技術交流会vol.5 を実施した話

この記事は Dark - Developers at Real Kommunity Advent Calendar 2015 - Adventar の14日目として書かれています。

12/12にこんなイベントが有りました。

ngineerxiv.doorkeeper.jp

dark.connpass.com

ついに1年間続きました。よかった。
今回の参加人数は34人中29人の参加で約85%でした。わりと高めな気がする。

【参加された方々へ】
Slackの方にもぜひぜひ参加してください。
認証情報わからん・・・等あればこちらから招待送るので、__dark__ (@ngineerxiv) | Twitter にリプライやDMまたは、 https://ngineerxiv.doorkeeper.jp/contact/new などから連絡ください〜

http://yamiga.waka.ru.com/slack

発表内容

@equal_001氏による「Django 1.9」

www.slideshare.net

ディージャンゴ。
12/1にPythonフレームワークDjangoの最新版1.9がリリースされたので、新しい機能の一部紹介をしてくれました。
Django 1.9 released | Weblog | Django

@jp_taku2 氏による「Varnishの設定ファイルを幸せにした話」

(資料は見つかり次第更新します)

Varnishの設定変更が所々の理由により大変だった状態から容易にしていった話をしてくれました。
バージョン管理やレビューは大事ですよね。
そういえばお化け退治のIoTを実現したらしいです。
RaspberryPi - IOTにIoTで対抗してみた - Qiita

@hoto17296 氏による「闇の魔術に対する防衛術」

www.slideshare.net

テーマ通りでした←
闇を許容せよというとてもいい話。

@yamadagenki0607 氏による「でも、機械学習ってお難しいんでしょ?」

www.slideshare.net

12/24 (平日)についての話・・・←
いえ、Rのコードを利用しつつ、回帰分析や分類モデルの話をしてくれました。

最後に

イベントの開催は3ヶ月後とかになるかと思いますが、もくもく会とかやってるんで、興味があったら下記のアカウントとかに連絡ください〜

twitter.com

明日のDarkアドベントカレンダーはいないので、きっと私がDark botのデプロイについて話すんだと思います。

Laravel製マイクロフレームワークLumenを使おうとして困ったこととその解決策

この記事はLaravelアドベントカレンダーの13日目として書かれています。

www.adventar.org

最近Laravel製のマイクロフレームワークLumenを使って個人的な開発をしています。
その時にこれしたいんだけど、どうやるの?みたいなことを思ったタイミングが何度か合ったので、それをまとめようと思います。

目次

下記のことについて触れようと思います。
ほんとはLumenからLaravelに移行したい時にどうすればよいのかとかも検証したかったのですが、Laravel力が足りなかったので割愛しました。

  • lumenコマンドを使わずにプロジェクトを作成する方法
  • debugをオンにする方法
  • Laravel用のプラグイン利用時にconfigを置く場所について
  • テンプレートエンジンにtwigを使う方法
  • 自前のクラスを置く場所について

lumenコマンドを使わずにプロジェクトを作成する方法

lumenコマンドを利用せず特定のディレクトリにLumenプロジェクトを作成する方法です。
composer create-projectコマンドを利用すれば簡単でした。
Lumen - PHP Micro-Framework By Laravel

$php -r "readfile('https://getcomposer.org/installer');" | php
#!/usr/bin/env php
All settings correct for using Composer
Downloading...

Composer successfully installed to: /path/to/composer.phar
Use it: php composer.phar

$php composer.phar create-project laravel/lumen my_project_dir
Installing laravel/lumen (v5.1.4)
  - Installing laravel/lumen (v5.1.4)
    Loading from cache

Created project in my_project_dir
Loading composer repositories with package information
Installing dependencies (including require-dev)
...
$tree -L 2
.
├── composer.phar
└── my_project_dir
    ├── app
    ├── artisan
    ├── bootstrap
    ├── composer.json
    ├── database
    ├── phpunit.xml
    ├── public
    ├── readme.md
    ├── resources
    ├── server.php
    ├── storage
    ├── tests
    └── vendor

9 directories, 6 files

debugをオンにする方法

Lumenは初期状態だとデバッグがオフになっています。
なので例えば下記のようにしょうもないミスをしていたりするときにLumenを実行したとしても500ページが出るだけで、何が起こっているのか全くわかりません。

<?php

/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It is a breeze. Simply tell Lumen the URIs it should respond to
| and give it the Closure to call when that URI is requested.
|
*/

$app->get('/', function () use ($app) {
    $a = $app->welcome();
    return $b;
});

アクセスしたとしてもこのように500エラーのページが表示されるのみ。

f:id:arata3da4:20151213220445p:plain

ビルトインサーバ側も特に何も言ってくれません。

$php artisan serve
Lumen development server started on http://localhost:8000/

これを切り替えるために .envファイルを利用します。
参考 http://lumen.laravel.com/docs/errors

$cd /path/to/my_project_dir
$ls -a
.             .gitignore    bootstrap     database      readme.md     storage
..            app           composer.json phpunit.xml   resources     tests
.env.example  artisan       composer.lock public        server.php    vendor
# この.env.exampleをコピーして利用します。
$cp .env.example .env

よしこれでデバッグがオンになるぜ。って思うじゃないですか。
実はならないです。
理由はこのenvファイルを読みに行くという設定がbootstrap/app.phpコメントアウトされているからです。

$head -n 10 /path/to/my_project_dir/bootstrap/app.php
<?php

require_once __DIR__.'/../vendor/autoload.php';

// Dotenv::load(__DIR__.'/../');

/*
|--------------------------------------------------------------------------
| Create The Application
|--------------------------------------------------------------------------

このDotenv::load(__DIR__.'/../');のコメントアウトを外すと.envファイルを読みに行くようになり、APP_DEBUGがtrueとなっていればデバッグがオンになります。
こんな感じ

f:id:arata3da4:20151213221542p:plain

Laravel用のプラグイン利用時にconfigを置く場所について

Laravelのプラグイン等をインストールし、設定を上書きして変えたい時、configディレクトリにその設定を書けば良いと思うのですが、初期状態のLumenにはconfigディレクトリがありません。
Document見るとなにか書いてあります。
http://lumen.laravel.com/docs/installationConfiguration Filesあたり
なるほど、勝手に足せばよいみたいです。
次の「テンプレートエンジンにtwigを使う方法」でtwigbridgeというプラグインを使うのですが、その場合だとこんな感じになりました。

$cd /path/to/my_project_dir
$mkdir config
$ls
Makefile      bootstrap     composer.phar phpunit.xml   resources     tests
app           composer.json config        public        server.php    vendor
artisan       composer.lock database      readme.md     storage
$cp ./vendor/rcrowe/twigbridge/config/twigbridge.php ./config/
$ls ./config
twigbridge.php

これでプラグインの設定を上書きすることが出来ます。

テンプレートエンジンにtwigを使う方法

よーく考えてみたら、昔記事書いてました。
わりとまじめに書いたのでこちらを参考に・・・

arata.hatenadiary.com

自前のクラスを置く場所について

自前のクラスをどこに置けば良いのかふと悩んだのでその時のメモです。
autoloaderの設定がどうなっているかがわかれば良いので、composer.jsonを見れば良さそうですね。

$cat composer.json
{
    "name": "laravel/lumen",
    "description": "The Laravel Lumen Framework.",
    "keywords": ["framework", "laravel", "lumen"],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": ">=5.5.9",
        "laravel/lumen-framework": "5.1.*",
        "vlucas/phpdotenv": "~1.0"
    },
    "require-dev": {
        "phpunit/phpunit": "~4.0",
        "fzaninotto/faker": "~1.0"
    },
    "autoload": {
        "psr-4": {
            "App\\": "app/"
        },
        "classmap": [
            "database/"
        ]
    },
    "autoload-dev": {
        "classmap": [
            "tests/"
        ]
    },
    "config": {
        "preferred-install": "dist"
    }
}

autoloadの項目を見る限りappディレクトリ以下を見るようになっているので、そこに置けば良さそうです。
app/Hoge/Foo.phpというファイルを置いてみました。

<?php

namespace App\Hoge;

class Foo {
    public static function hello() {
        return "hello namespace";
    }
}

app/Http/routes.phpを編集して動くか確認してみます。

$cat app/Http/routes.php
<?php

/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It is a breeze. Simply tell Lumen the URIs it should respond to
| and give it the Closure to call when that URI is requested.
|
*/

$app->get('/', function () use ($app) {
    $m = \App\Hoge\Foo::hello();
    var_dump($m);
});
$php artisan serve &
[1] 43243
Lumen development server started on http://localhost:8000/

$curl localhost:8000
string(15) "hello namespace"

呼べている様子でした。

まとめ

Lumen使ってみて、なんか困ったことをまとめてみました。
.envファイルデフォルトで読みにいかないんかいとかconfigディレクトリ作らないといけないんかいとか思ったりしましたが、そこまでやりたいならLaravel使えよってメッセージなんですかね。
Laravelの方はあまり触ってないので、そちらの方も触っていきたいなーと思った日でした。

AJITOの利用は用法用量を守って正しくお楽しみください。

この記事は#ajitingアドベントカレンダーの12日目として書かれています。
主に日記というか特に意味を成さないポエムです。

www.adventar.org

唐突ですが休日(特に土曜日)って大体昼まで寝て、夜までぐうたら過ごして、あれ、今日何やってたんだっけみたいになるじゃないですか(個人差があります

ちょっとはまともで有意義な生活をしたいと思いつつ金曜日に寝ると
ぇ…もうこんな時間とかあるわけですよ。
ルーズな生活を送り土日を無駄にすることってあると思うんですよね。
しかし、それが続くとやっぱ良くないので、有意義な生活を行いたいと思うことがあるかと思います。

そこで土日AJITOですよッ!
私自身はDark - Developers at Real Kommunity | Doorkeeper というコミュニティに属していて、土曜日にもくもく会としてAJITOの近くの部屋を利用することが多々あります。
数人でもくもくと活動すると、家で一人いるよりも捗って素晴らしいです。
この時、夕方くらいから飲むというモチベーションの元にもくもくするとやりたかったことを色々片付けるということが出来て、土日を有効活用した感じがすごいです。
※ちなみにAJITOは禁煙です。その階の奥のほうにある喫煙室で吸うルールです。

モチベーションを高めつつ、コミュニケーションを取る場としても有用なAJITOは最高ですね。
友人を誘って日本酒を持ち込む、または目の前のスーパーで日本酒を買って一緒にわいわいするのもとても楽しいのでおすすめです。
ただし、いくらタダだからと言いつつ知り合いがいない時にお酒を勝手に持って帰るのは窃盗なのでちゃんと社内の人がいる状態が必須ですね。
AJITOを利用するのはVOYAGE GROUP内の知り合いがいる時にしましょう。

まとめると、AJITOはお酒を飲めるし、もくもくも出来る。
だけど、喫煙したり、お酒を持って帰ったり、知り合いがいないのにお酒を勝手に飲んだりするのは良くないよという話でした。

Dark - Developers at Real Kommunity | Doorkeeper では、AJITOも利用させていただきつつ、もくもく会を行ってます。
是非興味ある方々こちらのコミュニティに参加頂ければと思います!!!1111

なにが言いたかったかよくわからなくなってきましたが
チェルシー事件は嫌な事件でしたね。
鮫島事件 - Wikipedia

明日のajiting アドベントカレンダーは @hironomiu さんによる記事です。
乞うご期待。

【ポエム】Darkのコミュニティの現状とかそれに対する気持ちとか

この記事は Dark - Developers at Real Kommunity Advent Calendar 2015 - Adventar の10日目として書かれています。

こんにちは。たなあら (@ara_ta3) | Twitter です。
今日は技術的な話は出てこないでしょう。完全なポエムです。
Dark - Developers at Real Kommunity | Doorkeeper というコミュニティの運営をやってる一人ですが、1年経って現状をみての気持ちをポエムにします。

<PR>明後日イベントがあります。ngineerxiv.doorkeeper.jp
まだまだ参加者増えてきたりするので、すごく嬉しいです。

そして、ページ開いてみたらコミュニティの参加人数だけみると100人越えててすごいなぁ。嬉しいなぁって思いました。
このコミュニティではSlackを利用していますが、Slackを見るといつも仲いい人たちばかり。
僕個人として言えば、すんごい楽しいです。ものすごく。
ちなみにSlackの統計はこんな感じ。
f:id:arata3da4:20151210003331p:plain

でも、コミュニティを作った人間としてはそんな感じの状態に特化すると排他的になってしまう気がしています。

最近の悩みは今の個人的な楽しさをそのままに、外の人が何も気にしない状態をどうやったら作れるかということ。
あいつら仲良くて入りづらいなーみたいに思われてしまって人が入ってこないような状態は本当に嫌いで、閉じたコミュニティですよみたいな空気感をどんな人が見たとしても微塵たりとも感じさせたくないんですよね。
なのでもし、私自身がそんな空気を出してしまっていたら死ねと言って欲しい。
シンプルに言ってください。死ねと。でもその後に何故と聞くので、お前らのコミュニティ入りづらいと言ってください。頑張ります。
それ以外の理由だとへこむのでほんの少しでいいのでオブラートに包んで言ってもらえると幸いです。

死ねこのゴミクズめ!と思う方々へ

下記アカウントのいずれかに、文句を言ってください。
真摯に受け止めます。

__dark__ (@ngineerxiv) | Twitter

あら松 (@ara_ta3) | Twitter

別に死ねとは思わないけどなにかやってるなら参加してみようかなって思う方々へ

ここにもくもく会の日程を載っけています。
Darker than Black

いやよくわからないという方は、下記のTwitterアカウントに「もくもく会あるって聞いたけど、参加してみたい!」って送ってみてください。
返事がない場合は多分僕が病気で返事できてない時なので、__dark__ (@ngineerxiv) | Twitterの方に何回か送ってみてください。
た、たぶん返ってきます。返ってこない時は反応する人がいないだけだと思うので、申し訳ないですが、根気よく・・・w

__dark__ (@ngineerxiv) | Twitter

あら松 (@ara_ta3) | Twitter

まとめ

  • Darkは閉じた状態には絶対したくない。
  • 閉じてて絡みづらかったらごめんなさい、言ってもらえると幸いです。
  • 気になる人はTwitterのアカウントに連絡欲しいです。

明日は・・・いない・・・w
Dark botのデプロイ周りの話でもしようかな。