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

blog.syfm

徒然なるままに考えていることなどを書いていくブログ

ホームページを移行した

(ホームページと言えばいいのかランディングページと言えばいいのか未だに曖昧…。)
http://syfm.0t0.jp から https://www.syfm.me へ移行

既存の環境

今までは MyDNS という DDNS サービスで syfm.0t0.jp というドメインを使っていて、デプロイ方法と環境には Git hook と自宅サーバを使っていた。
具体的には、Git のリモートリポジトリを自宅サーバに構築して、そこに push されると Git hook によって設定したスクリプトが実行され、新しいファイルが /var/www 以下の Apache 管理下にあるディレクトリにコピーされる感じだった。

一度設定してしまえば、あとは git push する度に自動で反映されるのでそこまで大変な管理でもなかったけど、自宅サーバにはこのホームページしか動いてなかったからすごいもったいない感があって、前々からどうにかしたいなぁと考えていた。

ついでに、ドメイン0t0 も気に食わないのでやはり独自ドメインで運用したいなぁとも思っていた。

新しい環境

そこで、今回はできるだけ管理コストを削減しようと思って環境を作った。
主に使用したのは、

の4つ。

独自ドメイン

とりあえず お名前.com で取得した。Route 53 とかで取得しても良かったかもしれない…。
本当は .com とか .ne.jp とか .net とかほしかったけど、既に取得されてたり、異常に高かったりしたので諦めて .me にした。400円くらいなのでとても安い。

GitHub Pages

サイトを公開するために利用。
知らない人の為に簡単に説明すると、GitHub Pages は、自前でサーバを持たなくても静的ファイルがホスティングできる機能で、<username>.github.io というリポジトリを作ると、https://<username>.github.io でアクセスできるようになるというとても便利な仕組み。
他にもリポジトリ名が上のような形でなくても、gh-pages というブランチをつくれば https://<username>.github.io/<project-name> という感じでプロジェクト毎に公開できる。

CircleCI

自動でデプロイするために利用。
GitHub で、lycoris0731.github.io (ホームページ公開用リポジトリ) と homepage (静的ファイルを生成するための作業リポジトリ) をつくり、homepage の方に CircleCI を設定した。
master ブランチに push されると、dest 以下のファイルが lycoris0731.github.io リポジトリにコミットされるように設定したので、push するだけで自動でデプロイされるようになる。

Cloudflare

DNS サーバ、SSL 対応のために利用。
取得した ドメインのプライマリサーバとセカンダリサーバを Cloudflare から提供されたものに変更した。
www.syfm.me にアクセスすると lycoris0731.github.io のコンテンツが表示されてほしかったので、CNAME を設定した。
また、<username>.github.io だとなにもしなくても HTTPS になっているけど、独自ドメインを設定すると、自前で設定する必要がある。
なので、Cloudflare の機能を使って HTTPS で配信されるようにした。とても簡単でびっくりした。

感想

独自ドメインの登録料以外はすべて無料の範囲内で使えるので苦学生にやさしい。

1日の予定を30分ごとにスケジューリングして過ごした

最近色々考えることが多く、普段やってることが全然手につかなくなってしまっていた。
その結果、なにもせず2時間くらい経ってたりして死にたくなっていたので、ふと思い立って1日の予定を30分を1単位としてスケジューリングして生活してみた。

今日はちょっと寝すぎて(最近早寝早起きしている)9時くらいに起きたので、30分程度で簡単にやりたいこと・やらないといけないことをまとめて Google カレンダーに登録した。
実際のスケジュールはこんな感じ↓

f:id:ktr_0731:20170305220147p:plain

開発[A-D]は実際には GitHubリポジトリ名と対応付けていた。
色々作りたいなと思っていたものの骨組みを書いてたり、Vim プラグイン書くために Vim script の勉強をしたりしていた。

DB はデータベーススペシャリストの勉強。わりと楽しいのでいい感じに進んでいる。ついでにまた学生課から3万貰っていきたい。(ディスプレイもう一台ほしい!)

DDD 本と AWS 本は以下の2冊。奈須きのこではない。
DDD 本は今日から読み始めた。1週間位で一度読み切りたい。

エリック・エヴァンスのドメイン駆動設計

エリック・エヴァンスのドメイン駆動設計

Amazon Web Services実践入門 (WEB+DB PRESS plus)

Amazon Web Services実践入門 (WEB+DB PRESS plus)

できるだけ集中力を持続させるために手とか体を動かす作業(開発、買い物、掃除)と読書で交互に構成した。
また、休憩時間を入れない代わりに22時以降は自由にすることにした。

実際やってみてどうだったかというと、自分でも驚くほど集中力が続いてすべての予定をこなすことができた。
常に時間に振り回されているので、余計なことを考えることが少なくなっていたのかなと思う。

とはいえ、毎日これをやるのは流石にしんどそうな気がする…。
時々やる気を出したい時に利用するといい感じになりそう。

Developers Summit 2017 に行ってきた

前々からデブサミに興味があったものの、行けていなかったデブサミですが、今回初めて行ってきました!
開催期間は2月17日から2日間でした。
詳しい内容は後日スライドが以下の URL から up されると思うので割愛しますが、見た各セッションの感想なんかを書いていきたいと思います。

codezine.jp

1日目

大学の期末考査につぶされました。
1限に実施されていたならば、午後セッションくらいは見れたと思いますが、4限(15時から16時くらいまで)だったので見事にすべてのセッションが見れませんでした。つらい

2日目

きゅうり農家から保険会社まで、機械学習を「民主化」する TensorFlow

Google の 佐藤 一憲 氏の発表。

機械学習を利用している Google photo や、Google 翻訳 などのサービスを例に、ユーザの位置に応じた機械学習の技術が紹介されていました。
自分は機械学習に関する知識はまったくないのですが、とてもわかりやすく、面白かったです。
特に機械学習Google 社内の消費電力を抑える仕組みなどは、こんなにも劇的に変化するのか…ととても驚きました。

サーバレスアーキテクチャにしてみた - エンタープライズチャットアプリでの挑戦 -

ドリーム・アーツ の 石田 健亮 氏の発表。

あるアプリのプロジェクトで、イケイケな技術を盛り込んだ結果、使い慣れていない技術のため想定以上にコストがかかってしまい、結果的に炎上という凄い状況だったらしいです…。
ビジネスとしてやっていくには、

  • 学習コストや運営コストなどの金銭的な問題
  • マルチプラットフォームのフロントエンド、バックエンドの開発にかかる時間的な問題
  • 技術の選定

が重要になるので、自分たちの興味のままに技術を取り入れていくだけでは生きていけないとおっしゃっていました。

そこでサーバサイドを Firebase や Heroku などの mBaaS や PaaS で置き換え、できるだけサーバレスにすることでサーバサイドに必要な開発を抑えたことでコストが劇的に小さくなったとのこと。

自分はまだ学生で、ビジネスの世界には踏み入れたことがないため、「興味のままでは生きていけない」という言葉がとても印象に残りました。

休憩時間

デブサミではスポンサーの企業の方々がブースを出展していて、自由に見ることができます。また、別室では同人誌の販売も行われていました。
はてなさんの Mackerel チームの方と本当にちょっとだけですがお話ができたので嬉しかったです。

f:id:ktr_0731:20170218114949j:plain

また、DevBooks では TechBooster さんのブースで Revised 型の国のTypeScriptThe Web Explorer 2 を買ってきました。

f:id:ktr_0731:20170218115002j:plain

コンテナをフル活用した現場

Wantedly, Inc の 坂部 広大 氏の発表。

コンテナを活用していく上での Wantedly さんでの取り組みやルールなどのお話。
以下の3つが取り上げられていました。

  • アプリケーションのルール
    The Twelve-Factor App を元にしていて、その根幹は Docker を利用することで実現しているとのこと。

  • コード化、ツール化
    言語やプロジェクトに関係なく、共通のディレクトリ構成、ファイル名を取り入れることで、特定の操作の方法を明確にする。
    例えば、プロジェクトルートに script ディレクトリを用意し、そこに bootstrapserver といった名前のファイルを配置することで、プロジェクトに新しく参加する人も迷うことなく操作ができる。

また、インフラを操作するようなものは CLI ツールにしてしまい、共通のインターフェースを介すようにしていました。
特にインフラが専門でない人にとって、既存の用意されている CLI ツールには不要な機能がたくさんあったり、逆に使いづらい部分があるため、それらを隠蔽、拡張した wrapper CLI ツールを作成していました。

こうやって、効率よく開発に移ることのできる環境を作っていました。

  • 変化に強いインフラ
    ※自分は Kubernetes(k8s) を使ったことがないのでちょっと曖昧です。

コンテナを使った開発をしていると、アプリケーションエンジニアが Docker ファイルを書くことになって大変だったり、コンテナをサーバにデプロイするための準備や、インフラチームとの調整があり、無駄が発生するという問題があります。
そこで Wantedly さんでは k8s を利用することで「アプリケーションがどこで動いているのか」ではなく、「アプリケーションがどう動いているのか」だけを意識できるようにし、デプロイなどに必要な複雑な手順を単純化したそうです。

C# で簡単にモバイルアプリを作ろう!

日本マイクロソフト の 千代田 まどか 氏 の発表。a.k.a ちょまどさん。

C# の構文や async/await などについての簡単な解説と、C# と Xamarin によるマルチプラットフォームなアプリの開発についてがメインでした。
Xamarin で Mac アプリや UWP アプリを開発できるのは知らなかったので参考になりました。

最後に Azure と Visual Studio 2017 の解説もありましたが、時間が…。
ある程度予想はしていましたが、聴講者が物凄く多かったです。

ニコニコ動画・生放送の配信基盤刷新

ドワンゴ の 後藤 哲志 氏の発表。

ニコニコ動画・生放送の変革と Web 技術の移り変わり(FlashHTML5) などを交えながら新しい配信基盤の DMC を開発したことを説明していました。

言語は ErlangC/C++、Rust が利用されていて、映像のトランスコードといった高速化が必要な部分は C/C++分散ファイルシステムは Rust、その他の大部分は Erlang で書かれているそうです。
既存の分散ファイルシステムでは要件を満たすものがなかったらしく、新しく開発したとのこと。なぜ Rust かというと、使ってみたかったかららしいです。

ロールと言った仕組みの導入によりダウンタイム無しでサーバの切り替えをできるようにしたり、問題が発生したサーバを膨大な数から見つけるために Elasticsearch + Kibana を導入していたり、いろいろな技術が盛り込まれていてすごく面白そうでした。

執筆を支える技術と技術書のトレンド

日高 正博 氏、高橋 征義 氏の発表。

日高 氏は TechBooster のひつじさんとして、高橋 氏は「たのしい Ruby」や高橋メソッドでも有名です。
TechBooster の同人誌をいくつか持っているので、どんなことを考えているのかを知りたくて発表を聴いていました。

本と Web の情報の違いについて話していました。
一般の技術書はある程度の期間は有用でないといけないため、ある程度安定した技術を扱うのに対し、Web はその変更の容易性、自由性から新しい技術をまとめるのに適していることなど、なるほどと思うことが多かったです。
そして、技術系同人誌は同人誌の特徴から、趣味(たのしー!)書きたいことを書けたり、一般の本よりかは圧倒的に楽に世の中に出せたりするので、技術書と Web の中間に位置するような存在だと感じました。

まとめ

どのセッションもとてもおもしろく、興味を惹かれるものばかりでした。
こうして振り返ってみると、割とインフラに近い分野が多かった気がします。
今回はタイミングが最悪で半分しか見れませんでしたが、また機会が合えば今度こそ最初から参加したいなぁと思いました。