表題の通り、2016/05/16に行われたadtech x scala meetupでLTしてきました。
発表資料は以下
立食の懇親会で飲みながらだったので反応はよく分からなかったけれど喋れたので良し。
サンプルコードはgistに貼ってあります。
表題の通り、2016/05/16に行われたadtech x scala meetupでLTしてきました。
発表資料は以下
立食の懇親会で飲みながらだったので反応はよく分からなかったけれど喋れたので良し。
サンプルコードはgistに貼ってあります。
ずっとやりたかったやつをやったのでメモ
借りてるVPSにdocker入れようと思ったらのCentOS6だとダメだったから7入れようとして失敗してる
— こむ (@petitviolet) 2016年4月17日
CentOS6から7にOSアップデートしたので、この機会を活かしてやりたかったhttp2対応した。
まずやるべきこと。 httpとhttpsのportをあける。
firewall-cmd --permanent --zone=public --add-service=http firewall-cmd --permanent --zone=public --add-service=https firewall-cmd --reload
新しいバージョンじゃないとhttp2対応してないので注意
yum install http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm yum install --enablerepo=nginx nginx systemctl enable nginx
2016/04/18時点だと1.9.14だった
$ nginx -v nginx version: nginx/1.9.14
Let's EncryptでSSL証明書をwww
あり/なしの両方で取得しておく。
Dockerでやろうとしたら何故かうまくいかなかったので、cloneしてきてコマンドを実行する。
この時点でNginxが起動しているとLet's Encryptのプロセスと競合するので止めておくこと。
git clone https://github.com/letsencrypt/letsencrypt mv letsencrypt /usr/local/ /usr/local/letsencrypt/letsencrypt-auto certonly -a standalone --webroot-path /path/to/root -d www.example.com -d example.com
ちなみにDockerだと以下のようにすれば出来た、らしい。 上記のコマンドでやると色んな依存モジュールがインストールされて環境が汚れる感じがするので、可能ならDockerでやったほうがよい。 これぞDockerの使いどころという印象。 (このためにDocker入れたくてOSアップデートしたにも関わらず使えなかった)
sudo docker run -it --rm -p 443:443 -p 80:80 --name letsencrypt -v "/etc/letsencrypt:/etc/letsencrypt" -v "/var/lib/letsencrypt:/var/lib/letsencrypt" quay.io/letsencrypt/letsencrypt:latest certonly
まずはvirtualhostの設定をinclude
するように変更
... http { ... include /etc/nginx/conf.d/example_com.conf; }
次にinclude
されるconfファイルの設定。
今回はwww.example.com
のようにwww
付きに統一する。
listen
のところに443 http2
と書くのが大事らしいserver { listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; server_name www.example.com; ssl on; ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem; access_log /var/log/nginx/access.log main; location / { root /path/to/root/; index index.html index.htm; } } # httpで来たのをwww.example.comにhttpsに飛ばす server { listen 80; server_name example.com www.example.com; return 301 https://www.example.com$request_uri; } # httpsで来たけどwwwついてないのにwwwつける server { listen 443; server_name petitviolet.net; return 301 https://www.petitviolet.net$request_uri; }
ここまでやったらNginx再起動
systemctl restart nginx
brew reinstall curl -- --with-nghttp2 brew link curl --force exec $SHELL -l curl https://www.example.com -i --head
結果はこうなったので出来たらしい
HTTP/2.0 200 server:nginx/1.9.14 date:Mon, 18 Apr 2016 14:46:29 GMT content-type:text/html content-length:6009 last-modified:Sun, 17 Apr 2016 08:13:19 GMT vary:Accept-Encoding etag:"5713459f-1779" accept-ranges:bytes
https対応したしnginx新しくしてhttp2対応した
— こむ (@petitviolet) 2016年4月18日
let’s encrypt便利だな〜〜〜
— こむ (@petitviolet) 2016年4月18日
Let's Encrypt便利すぎる。 Nginx使えば簡単にhttp2対応できて最高。
このエントリ読んだ感化されたので自分も雑に振り返って書いてみる。
仕事は大きく分けて前半Android、後半Scalaという感じだった。
多少はエンジニアリングの知識があったこともあり、エンジニアとしての研修はだいたいスキップしてすぐに業務に入ることが出来たのは幸運だった。
そもそも人数が少なくてじっくり教育されてる暇も無かったし、こちらも出来るだけ早く何かしら貢献したかったので良かった。
入社して半年間は学生時代にとった杵柄でAndroid書いてた。
ちなみにちょっとiOS(Objective-C)もやってた。
東京に来てテンション上がってたこともあって、頻繁に勉強会に参加してた。
あとは自分自身で勉強会も開催してみたり。
petitviolet.hatenablog.com petitviolet.hatenablog.com
当時、業務ではSDKと呼ばれる類のものをpure javaで開発してて、
RxJavaとかRealmみたいな流行りの技術を使うことがなかったため、プライベートで触ってほくほくしてた。
ライブラリは使わないけど、アーキテクチャはそれっぽくしてやろうと思って、MVP + Clean Architectureを取り入れて開発していた。
この時に学んだことや試行錯誤した体験のおかげで、アーキテクチャとかに興味を持つようになった。
昔から思いついたらとりあえず手を動かして書きながら直していく、みたいなスタイルだったけど少しずつちゃんと考えながら書くようになってきている。
後半の半年間はチーム異動し、Scalaでサーバーサイドエンジニアとしてアプリケーション開発をしている。
AndroidはJavaじゃないな、と強く感じている。
Scala自体は学生の頃からほんのり触っていたのと、Scalaチームになる前にすごいH本を読んで関数型プログラミング勉強してたのが活きて、最初からぼちぼち書けて良かった。
今は特にパフォーマンスが要求されるタイプのアプリケーションを作っているが、だからこそより綺麗に実装しようという気持ちが強くなった。 そのためにもDDD勉強していて、これが最新のアーキテクチャか!と感動したけど、エリック・エヴァンスが最初に本出したのは10年以上前だと知ってエンジニアリングの進歩は意外と遅いのかもしれない。
エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)
関数型プログラミングとDDDを深めて自分の武器としたいと思っているが難しすぎる。
アプリケーションの運用を多少は自分もやっていて、環境構築とか障害対応とかで経験値だいぶ積めた。
とはいえ知識は不足してるし未だにDockerたいして分かってないし自動化もまだまだやれてないしまだまだ。
ScalaMatsuriには2日間フルで参加して世の中には強者がたくさんいると再確認したので、上を見て頑張っていこうという気持ちが強くなった。
最近はあんまり勉強会出てなくて、何となくぽけーっと話を聞くくらいなら自分で勉強したほうがよっぽど効率がいいので、
聴きたいトピックがピンポイントでないと参加しないようになってきた。
何かしらいい感じのネタがまとまったらどこかで発表したいなぁ。
社会人1年目だけど意外とやれている感覚はある、といっても26歳で全く若くないし危機感の方が強い。
いつまでものんびり.vimrcを弄っていられないんだ俺は。
あと「何を作るか」より「どうやって作るか」に意識が寄ってきている感覚があり、これはまずい。
どれだけ最高のアーキテクチャで高パフォーマンスで美しいコードでもユーザーがいなければ無価値なので、「何を作るか」が根本にはあるべきだと思っている。
普段の開発における姿勢を見直していかねば。