カテゴリー別アーカイブ: 未分類

2016 年の LT と登壇を振り返る

今年は意識的に外で発表しようと心がけた一年でした。

まずは、2016 年 1 月、メルカリで行われた PHP BLT#2 での発表スライド。

composer によってガンガンライブラリインストールしてるけど、ライブラリに含まれる脆弱性チェックって CI に組み込めないのかなっていう話。
ここでは、Circle CI / Travis CI 両方で試した例を交えて SensioLabs 社製の Security Advisories Checker を紹介してます。

次は 2016 年 2 月に行われた PHP 7 Casual Talks #1。 KDDI ムゲン Labo ルームという会場でした。

ちょうど PHP7 がリリースされて少し経ったぐらいのタイミングだったので、そのあたりに合わせた話題に。
個人ブログをさくらの VPS 使って WordPress で立ち上げていたんですが、あまりにもバージョンアップしていなかったりしたので、大幅に見直すタイミングで PHP7 に上げつつ、Ansible で playbook 書いてみたという感じの話ですね。
一番良くないのは、PHP7 の性能比較が出来なかったこと。もう少し時間取ってしっかり検証すべきでした。

夏ぐらいだったかな、、あまり公開できないないようなのでスライドはあげていないのですが、母校の東京高専でキャリアについて話す機会を頂きました。
学生向けに 10 分くらい話しましたが、現役学生に向けて熱のこもった話をしても響かないよなー。とか、いろいろと考えた時期。

そして、11 月頃にも同じく東京高専で、高専 OB / OG 達とセッション形式で講義しました。
こっちはこのポストに書いたとおり。
現役学生でも、学年によって伝える内容を変えないと、全く刺さらないよなーみたいなことを思いました。

同じく 11 月、ザッパラスでの初?のエンジニア向け勉強会の会場提供をしつつ、僕も LT させていただきました。
ゆとり世代エンジニア交流会という名前の通り、メイン参加者はゆとり世代のエンジニア。若干僕は外れてるんですが、だいたいそれぐらいならオッケーというゆるさがとても良い感じでした。

開催レポートも書いていただいているので、是非そちらもご覧ください。

発表スライドはこちらです。
新規サービスを立ち上げる際に、ちょうど AWS Inspector がリリースされて、とても良さそうだったので実験しつつ取り入れてみた話をしました。

そして、締めくくりは Minami Aoyama Night #1 です。
この中では、資料準備に一番時間をかけましたw

別途ポストも書いたので、そっちもご覧頂ければと思いますが、発表スライドはこちら。

前職でも ElasticBeanstalk を既に使っていたプロダクトに関わる機会があって、その良さは分かっていたつもりだったのですが、リソースが無い中で新規サービスを立ち上げるときには、大いに力を発揮するということを改めて感じました。
その良さが伝わればと思って発表しました。

振り返ってみると、それなりに外で発表する機会はあったかなと思ったので今年はこれで良しとしましょう。

高専の授業を通して「素直さ」の大切さに気付いた

16歳の学生にキャリアについて話す難しさ

ありがたいことに、母校(東京高専)の授業の一コマで、キャリアについてのパネルディスカッションをさせて頂く機会があった。

cwzbqbmukaewdok

高専OB集合写真

趣旨としては、高専のOBの人たちが卒業後にどんなキャリアを歩んでいるかというのを聞いてもらって、自分の進路の参考にしてもらう、というもの。

とはいっても、メインターゲットは2〜3年生(なんと16歳前後!)だったため「キャリア」なんてものにピンとくるはずがないだろうな、とは思ってた。

ふと、自分の高専2年生のころを思い出してみると、部活に精を出しつつも、彼女と遊ぶことぐらいしか考えてなかったな…。好きな授業は、パソコンが触れる実習と体育だったかな…というレベル。
卒業後のことなんか微塵も考えてなかった。

そういうこともあり、できるだけ気軽な気持ちで聞いて欲しいなという願いを込めて、Twitterのハッシュタグ #東京高専で授業やってる を設定して、授業中に好きなようにTweetしてもらうようにした。

学生がTogetterですぐにまとめてくれたので、どんな内容だったのか知りたい人はそっちを見てもらうとして。

教育そのものに通ずる「素直さ」の大切さ

パネルディスカッションしながら、Tweetをリアルタイムに追っかけていたんですが、僕らの話をどう受け止めるかってのは人によって温度差はやっぱりあるよなーっていうのを感じた。

授業が終わった後に教授と少し話したのですが、内容は概ね以下の感じ。

根底には、彼らにハッピーになって欲しい、という思いがある。
そして、人生の経験値上「これするよりは、こうしたほうがハッピーになると思う」ってのは少なくとも彼らより知っているはずなので、それを伝える努力はしているが、どうにも響かない。

この話をしてるときに、自分の子どもにも、会社の同僚や後輩にも通ずるところがあるなーと感じた。

もちろん伝える側の努力なくしては、伝わるものも伝わらないってのは大前提として、「響く」人と「響かない」人の差はなんだろうなーとグルグルと考えた。

で、今自分の中での結論は、「素直さ」なのかなと。「おすすめされたことを、四の五の言わずにとりあえずやってみる能力」、と言い換えることができるかもしれない。

なぜこの能力が大事かっていうと、「とりあえずやってみる」ことが、学習の阻害要因をある程度スキップさせてくれる。
結局、経験からの学習が一番効率が良い。

「おすすめされたこと」というのは、先達が通った道であるが故に「これをすれば、おそらくこういった学習ができるであろう」という思いのもとに成り立っているはずなので、イージーモードでプレイしたら?という提案がなされているに等しい。

イージーモードで一回プレイしてみるってのは、本当に大事だと思っていて、この差が後々大きな差になってくるんだろうなと感じる。

しかし、どうやったら素直さを会得できるのかは、なかなか難しいよなーと思い、いろいろヒントを探していた。

そんな中で @otiai10 氏のこのエントリはいろいろな意味でヒントになる。

「イージーモードで一回プレイしてみる」っていうのは @otiai10 氏が言うところの「進言された行動を一挙手一投足違わず遂行できる」という意味合いで同じで、

そしてそれは「言われた文言を一字一句違わず復唱する」という能力が訓練によって出来るようになるのと同じように、「進言された行動を一挙手一投足違わず遂行できる」という能力も、訓練によって出来るようになると思われる。

こう書かれている。

是非全文を読んでほしいが、素直さは才能でも性格でもなく、「能力」であると断言している。

どのようにしたら「素直さ」が習得できるのか

僕の中に未だに解はないが、ひとつは子どもの頃の親の教育が、能力の習得に大きな影響を与えそうだなとは思った。

よく観察し、寄り添い、適切なタイミングで提案し、褒めること。
良いフィードバックループに入るまでは親のサポートが必要だと思う。

では、大人になってから身につけることができるのか?というとできなくはない、ただしとても難しそうという印象。

自らに「素直さが足りない」ということを認知し受容するためにも、素直さ(ここでは謙虚な気持ちのほうが大事かも)が必要な気がするから。

大人になってからの習得が難しいからこそ、「素直である」ことは大きな武器になりえると思う。

Thanks, See you again!

個人的な次のミッション

12月末から1月頭にかけては順調にスタートを切れたので、今後もこの流れを継続するために目標を立てておく。

  • PHP7 CasualTalk の資料作成
    • WordPress のベンチマーク
  • Laravel brancher 検討
    • 実装方法検討
  • ウェブサービス作る
    • 企画は頭のなかにあるので極力シンプルに実装始める

CentOS 7 上の nginx で SSL 化 & HTTP/2 対応

冬休み中、SSL 化とそれにあわせて HTTP/2 対応だけやり残しました。
なので、空いた時間を使ってサクッと終わらせました。

Let’s Encrypt を使えば無料で SSL 証明書を取得できます。良い時代です。
以下のページを参考にさせていただき、手順通りにやれば問題無いです。

Let’s Encryptを使って簡単0円でサーバ証明書を取得

で、http/2 対応している nginx のバージョンは 1.9.5 以降のようなのですが、ソースからビルドするのはやりたくないなーということで yum からいけないかと調べた所ドンピシャな記事がヒット。

yumでnginx 1.9.5にアップデートしてHTTP/2に対応

この通りにやったら、今日時点では、Version 1.9.9 になりました。

で、nginx の設定ファイルの listen 443 ssl; となっている部分を listen 443 http2; に変更し、ssl_ciphers の先頭に AESGCM:HIGH を追加し、nginx を restart させれば完了。

serimacohttp2

無事に HTTP/2 対応できました。
正味、1 時間ぐらいで全部できるので暇な時に是非どうぞ!

冬休み中にやりたいこと

すでに仕事納めも終わっているので、あとはなんとかして空き時間を確保して以下をやりたい。

  • プライベートなサーバを、CentOS 7 にアップグレード
    • おそらく OS インストールから各種ミドルウェアセットアップも行うことになるので、Ansible 使ってみる
  • WordPress を PHP 7 で動作させる
  • nginx に移行
  • Let’s Encrypt で SSL/TLS 対応

(以下、余力があれば)

  • HTTP/2 対応
  • ローカルから簡単にデプロイできる仕組みを作る
  • Public repo な自分の project の CI 整備

VPN接続後、Vagrantに立てたホストにブラウザ経由でアクセスできなくなる問題

VPN クライアントは、Cisco AnyConnect Secure Mobility を使用しているのですが、
VPN 切断後に毎回 Vagrant に立てた環境に ssh はできるもののブラウザからアクセスできなくなってしまい、こうなってしまうと、vagraht halt -> vagrant up しても問題が解決せず、毎回 PC を再起動していました。

状況としてはこんなかんじ。

vagrant up -> (ブラウザアクセス可能) -> VPN 接続 -> VPN 切断 -> (ブラウザアクセス不能)

これだと本当に不便だし面倒なので良い解決策はないのかとググってみたところ、バッチリな回答が見つかりました。

http://stackoverflow.com/questions/24281008/vagrant-box-not-reachable-after-vpn-connection

I have the same problem – the only solution I got so far is to:

$ sudo ifconfig vboxnet0 down
$ sudo ifconfig vboxnet0 up

vboxnet0 というのは VirtualBox のホストオンリーネットワークというもので、仮想マシンを動作させているホストと、仮想マシンをつなぐネットワークインターフェースです。
(詳しくは、このあたりをご覧ください。)

http://kledgeb.blogspot.jp/2012/10/ubuntu-virtualbox-11.html

僕の環境では、これだけでは足りず vboxnet1 も同様に down up を行なうことで解消しました。

UNIX/Linux環境でcsv/tsvにクエリを投げることができるqが便利すぎて生きるのが辛い

UNIX/Linux環境でSQLコマンドが使えたらいいのに、と思ったことはありませんか?
私はあります。

10万〜100万行レベルのデータを集計したいけど、わざわざDBにぶっ込むほどではない。
そんな時は、awk, join, grep, paste, wc, uniqなどなどの各種コマンドを駆使して集計しています。

ちなみに、joinコマンドに関してはここに大変お世話になりました。
本当に便利すぎて生きるのが辛いです。

◆joinコマンドが便利過ぎて生きるのが辛い
http://d.hatena.ne.jp/yutakikuchi/20120907/1346975281

ただ、これが複数ファイルにまたがって処理をしたりして、複雑になってくるとだんだん何のデータを操っているか混乱してきます。
そんなときに、カジュアルにtsv, csvファイルに対してqueryを投げられたらいいのになぁと感じていました。

そんなときに、これを見つけました。

◆q – Treating Text as a Database
https://github.com/harelba/q

q という超絶短いコマンドのため、単語のググラビリティ(単語のググられやすさ/ググりやすさ。)が悪すぎて、あまり発見されないかもしれません。

俺が求めていたのはコレだぁ!
ということで、実務でも使っています。

もっと普及して欲しいので、インストール手順からちょっとした実行サンプルを紹介します。

久々に見てみたら、brewでインストールできるようになってました。下記インストール手順参照のこと。(2015/07/24 追記)
http://harelba.github.io/q/install.html

必要環境はPython 2.5以上か、SQLite3モジュールがインストールされているPython 2.4以上です。
(Python 2.5は、SQLite3が標準バンドルされています)

中身を見てみると、1行目にインタプリタの指定があります。
自分の環境は、2.4.3と2.7.1の両バージョンがインストールしてあるため、2.7.1で実行されるように変更します。

実行してみます。

動きました。

PATHを通します。

.zshrcに以下を追記。

パスが通りました!

Examplesが載っているので、試しにそのまま入力してみます。

おー!
素晴らしい。

% seq 1 1000

1
2
3
4
5
(略)
1000

を出力して、
これを標準入力として q に渡す。
c1というのが、カラムの1番目という意味なので、
avg(c1)で、1〜1000の総和の平均
sum(c1)で、1〜1000の総和が出力されています。

こんな風にgroup byも使える!

ちなみにawkでやろうとするとこうですか。

joinも書けます。

SQLに馴染みのある人はqを使ったほうがサクッと書けていいですね。

terminal

Macbook Proのメモリを16GBに増設した

Macbook Pro 15-inch, Late 2011を使っているのですが、買った時からメモリは4GBでした。
最近、ウェブブラウジングしてるだけでもChromeが重くてもっさりしてきたので、いっそのことメモリをがつんと増設してしまおうと考えました。

調べてみると、すでにやっている人はたくさんいて資料となるページはたくさんあるし、Appleのサポートページにも細かくやり方が書いてありました。

3000円でできたMacBook Proのメモリ増設。2GBから8GBに!わかりやすい解説

【メモリMAX!】MacBook Proのメモリを16GB(8GB × 2枚)に増設 ~新春Macパワーアップ大作戦w
Apple – MacBook Pro:メモリの取り外し方法と取り付け方法

上海問屋でこれを買いました。送料込みで7600円ほどでした。
http://www.donya.jp/item/21283.html

静電気に十分気をつけ、作業自体は15分くらいで完了。
改めて起動してみると、むっちゃサクサク。
こんなことならもっと早くやっておけばよかったかなーと思いました。

THEY LIVE AND WE SLEEP

マスメディア、消費社会、プロパガンダなどのキーワードにピンとくる人にはおすすめなSF。
途中のムダに長すぎるプロレスシーンも有名らしい。

1980年代にかつてないほどに増大した通俗的な商業主義に対する、カーペンター監督の嫌悪感が表現されている。カーペンター監督はかつて次のようにコメントしたことがある。「ふたたびテレビを見てすぐに気づいたことは、テレビ画面に映し出される映像は全て、我々に何かを売りつける意図のもとにデザインされているということです。映像は全て、我々に何かを買いたいという欲望を起こさせることを意図して作られているのです。彼ら(映像の作り手)がやりたいことと言えば、我々のお金を奪うことだけです」

Wikipedia ゼイリブより