読者です 読者をやめる 読者になる 読者になる

YAPC::Kansai 2017 OSAKA に行ってきた #yapcjapan

perl yapcjapan yapc

YAPC::Kansai 2017 OSAKA に行ってきました。
以下、参加したセッションと感想などです。

Opening


A 会場がいい感じでした。

メールフォームからメールを送る近代的な方法

メールをちゃんと送るのは大変。
バウンスメール処理はしっかりやろう。
Sisimai 初めて知りました。

オープンデータを利用したWebアプリ開発

PosgreSQL に PostGIS で拡張すると、Geometry 型が使えるようになる。
MySQL は、Geometry 型がある。

Elasticsearch 超入門

インストールしてちょっと触ったことがある程度だったので、勉強になりました。
kuromoji 初めて知りました。

Elasticsearch で作る ranking system のスヽメ

Elasticsearch でランキングシステムは試したことがなかったので勉強になりました。
試してみたいです。

Webアプリケーションのキャッシュ戦略とそのパターン

トーク面白かったし、一番勉強になりました。
世の中、いろいろなことがあるけど、キャッシュに頼り過ぎるのは良くない。
キャッシュは麻薬、キャッシュは最終兵器。

(CGI/)Perl でわかる!サーバレス

Azure Functions 面白そうなので、試してみたいです。
CGI/Perl はお父さんがやっていた Perlmod_perl はシニア世代がやっていた PerlPlackナウでヤングな Perl
CGI 世代には辛かったです。

利用しているBaaSが終了するときにすべきこと または Parse.com の終了と私たちの取り組み

BaaS に限らずマネージドなサービスは、機能によるロックとデータによるロックがある。
いつでもサービスを止められるように考えておく必要がある。
Baas の利用は借金に近い。

PerlのWebアプリケーションをデプロイする時に僕達が考えたこと

初めから作り過ぎるのはよくないけど、雑なビジョンだと、構築コストと実施コストがアゲアゲ。
デプロイ方法に絶対な回答はないと思うので、規模に合わせて成長させる感じがいいかなと思いました。
はてなのデプロイは「餃子の王将

カヤックのゲーム開発・運用の「今」 力技と効率化の先に我々が目にしたものとは

ソーシャル・モバイルゲーム運用すると、同じようなポイントで苦労するなぁと思いました。
特にデプロイの話は共感できたし、勉強になりました。
「覚悟と気合」大事。

Perl ウェブ開発の中世 〜CGIPlack の間〜

CGI から Plack への歴史。
懐かしい感じでした。

はてなシステムの考古学

はてなの歴史学。
はてなのサービス好きだし、興味深かったです。
@motemen さんのトーク聞きやすかったです。

Lightning Talks

YAPC っぽい LT でした。
Azure Functions で Sisimai 動かした話とか興味深かったです。

Keynote

「温故知新」な Keynote でした。
若い人への技術(UNIXアセンブラ etc...)伝承大事。

Closing

ベストトーク賞は、「Webエンジニアに知ってほしいRDBアンチパターン」でした。
おめでとうございます。

まとめ
  • 勉強になったし、刺激になりました。
  • 今回も素晴らしい YAPC でした。
  • スタッフと関係者のみなさま、参加者のみなさま、ありがとうございました。
  • 次は Fukuoka です。

YAPC::Kansai 2017 OSAKA

YAPC::Hokkaido 2016 SAPPORO に行ってきた #yapcjapan

perl yapcjapan yapc


※ 写真はイメージです

試される大地での開催でした。
最近カンファレンスとか行ってないし、YAPC はほぼ毎回参加してるから気楽な気持ちで行ったら 3 日間も参加することになりましたが、良い YAPC でした!!

前夜祭

Perl 成分低めなタイムテーブルでしたが、他の言語を学ぶことも大事だと思いました。
各テーブルにコースっぽい料理が提供される形式で、ガッツリ食事だけしてしまった感。
雪降ってるけど北海道感あっていいなぁとまだウキウキしていた頃です。

YAPC::Hokkaido 2016 SAPPORO (1 日目)

参加したセッションどれも勉強になったのですが、特に kazeburo さんの Site::Reliabiliby::Engineering のセッションが良かったです。
あと、クラウド 4 社が一同に集まったスペシャルセッションも、各クラウドの特徴が分かって興味深かったです。
以下、参加したセッションと感想などです。

  • オープニング
  • MySQL 5.7 の次の MySQL
    • サービスで使っている MySQL を 5.7 にしたい。
    • よく使うミドルウェアは GA になる前のバージョンも触っておくことが大事だと痛感。
  • 近年の OSS 開発における CI 選択のベストプラクティス
    • Perl の CI は Travis CI がオススメ。
    • CPAN Testers はいろいろな環境でテストしてくれるのでありがたい存在。
    • カバレッジの可視化は、Codecov が良いみたい。
  • APIPerl で作る時に僕達が考えたこと
    • API ではなく DB を介して連携するようにすると、マイグレーションがつらくなる。
    • 内部用に使う API でもドキュメント大事。
  • iOS/Android アプリにおける API サーバーのいろは
    • JWT(JSON Web Token/RFC7519)、初めて知りました
    • 複数のエラーコードを処理するのは、人類には早すぎる
  • Perl6 と Web 開発と
    • Perl6 にそろそろ手を出そうと思った。(遅い)
  • 2017年、飛躍する技術と共に命懸けのダイブ!「普段使い言語環境」更新によるスキルリセットサバイバルガイド
    • 内容はあれですが、すごく面白かったセッション。おじさん、ガンバろうと思いました。
  • TBD(Site::Reliabiliby::Engineering)
    • Perl が SRE (インフラ)にとって良い道具であることを再認識した。
    • SRE のような働き方やチーム作りをしたいので、とても勉強になった。
  • 今から始めるMicrosoft Azure - Dive into Azure
    • Azure を使ってみようと思った。
    • Vision API、面白そう。
  • スペシャルセッション「今さら聞けない、でも聞きたい。クラウドの過去・現在・未来」
    • クラウドの特徴が分かり、面白かった。
    • 構築するシステム要件で、各社クラウドの使い分けが大事かと思った。
  • はてなのインフラ環境を自宅で再現する
    • 勉強は泥臭く、仕事はスマートに。
    • 地雷は踏んだ数だけ強くなる。
    • 読む、軽く触るではよく分からない。設計したり作ったりするとよく分かる。
  • TBD(Delivering a CDN)
    • Keep innovate. Stable means dead.
    • 継続的デリバリーはツールだけの話ではなく考え方。
  • Lightning Talks
    • ベスト LT 賞の sakura さんおめでとうございます。
  • クロージング
    • 参加者、185 名
    • 今後の YAPC スケジュール
      • 2017.3.4 YAPC::Kansai
      • 2017.7.1 YAPC::Fukuoka
      • 2018 YAPC::Tokyo


懇親会

ビールもたくさん飲めたし、楽しかったです。
LINE Beacom もらいました、ありがとうございます!!

感想

  • 貴重なインプットと刺激をもらえて、とても楽しかったです。
  • Kansai, Fukuoka, Tokyo と続くので、どこかでアウトプット(発表)してみたい。
  • ツイートしたらステッカーもらえるとか最高です。ありがとうございました。


  • スタッフのみなさん、参加者のみなさん、ありがとうございました。お疲れ様でした。

おまけ

YAPC::Hokkaido 2016 SAPPORO (2 日目)

夕方の便だったので、航空機ガチャには参加せず、寿司食べて温泉入っていたら、出発が遅延してました。
検査場通って、そろそろ搭乗手続き始まるかなと思ったら、欠航しました。







YAPC::Hokkaido 2016 SAPPORO (3 日目)

スープカレー食べて、空港行って、夕方の便で帰ってきました!
君の名は。は時間の都合上観れませんでした!!





YAPC::Hokkaido 2016 SAPPORO

OS X + Vagrant 1.8.7 で vagrant up できない時の対応 #El Capitan

apple osx vagrant

Vagrant 1.8.7 の curl が壊れているようで vagrant up すると box の取得に失敗します。

$ VAGRANT_LOG=DEBUG vagrant up
...
DEBUG subprocess: stderr: dyld: Library not loaded: @rpath/libcurl.4.dylib
...

Issues にあるワークアラウンドで解決します。

$ sudo mv /opt/vagrant/embedded/bin/curl /opt/vagrant/embedded/bin/curl.orig
$ sudo ln -nsf /usr/bin/curl /opt/vagrant/embedded/bin/curl

Curl broken in macOS vagrant 1.8.7 · Issue #7997 · mitchellh/vagrant · GitHub

OS X の OpenSSL をバージョンアップ #El Capitan

apple osx security

OS X の OpenSSL はバージョンが古いので、Homebrew の OpenSSL を使うようにします。

$ openssl version
OpenSSL 0.9.8zh 14 Jan 2016

OpenSSL インストール

$ brew install openssl

Homebrew な OpenSSL を使うための設定

以前は brew link コマンドで、Homebrew の OpenSSL を使うようにしましたが、OpenSSL のリンクはできなくなったようです。

$ brew link openssl --force
Warning: Refusing to link: openssl
Linking keg-only openssl means you may end up linking against the insecure,
deprecated system OpenSSL while using the headers from Homebrew's openssl.
Instead, pass the full include/library paths to your compiler e.g.:
  -I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib

なので、PATH を通すようにします。

$ echo 'export PATH=/usr/local/opt/openssl/bin:$PATH' >> ~/.bash_profile
$ . ~/.bash_profile
$ which openssl
/usr/local/opt/openssl/bin/openssl
$ openssl version
OpenSSL 1.0.2j  26 Sep 2016

落穂ひろい

Homebrew な OpenSSL のヘッダファイルを使ってコンパイルする時は、以下のオプションで明示的に指定する必要があるようです。

-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib

(インストール時のメッセージ)

Generally there are no consequences of this for you. If you build your
own software and it requires this formula, you'll need to add to your
build variables:

    LDFLAGS:  -L/usr/local/opt/openssl/lib
    CPPFLAGS: -I/usr/local/opt/openssl/include

Golang はじめました

golang macintosh

だいぶ出遅れましたが、ようやく Golang の勉強をはじめました。
備忘録的に書いていきたいと思います。

Golang とは?

Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.

The Go Programming Language

以下のような特徴があります。

Golang のインストール

OS X に homebrew でインストールしました。

$ brew install go
$ go version
go version go1.6.2 darwin/amd64

環境変数 GOPATH*1 を設定します。

$ mkdir -p $HOME/go
$ echo 'export GOPATH="$HOME/go"' >> $HOME/.bash_profile
$ . $HOME/.bash_profile

Golang で Hello, World

コード(hello.go)

package main

import (
    "fmt"
)

func main() {
    fmt.Println("Hello, World!")
}

実行

$ go run hello.go 
Hello, World!

コンパイル

作成した hello.go をコンパイルして、実行ファイルを作成します。

$ go build -o hello hello.go
$ ./hello 
Hello, World!

これから

Golang のスタートラインに立つことができました。(たぶん)
Golang でインフラ管理系ツールとか書きたい。


The Go Programming Language

*1:ワークスペース、外部パッケージ、外部ライブラリ用ディレクトリパス