jtwp470’s blog

日記とかプヨグヤミングとか

ElixirConfに参加してきた

表題の通り,ElixirConfが秋葉原で昨日(4/1)にありました.これは参加記と自分のメモを載せておくための記事です.

www.elixirconf.jp

Opening Keynote

Elixirの作者であるJosé Valimさんのセッションでした.全編英語でしたがものすごく聞き取りやすい英語で5割程度は理解できました. 2011年にElixirという言語を設計したときの悩みや開発の進みなど言語開発者でしか味わうことのないようなお話で非常に興味深いものでした. 後半で述べていましたがこれからElixirにどんな機能を追加していくかというものでUTF-8 Atomが導入されたようです.例でも挙げていたように次のようにテストなどを書くことができるようになります.

test "こんにちは世界" do
    assert :こんにちは世界
end

個人的にはあんまりこのように書きたくはありませんがやはり非英語ネイティブからすると英語ベースではないというのも1つの強みなのでしょうか.

また,質問コーナーで盛り上がった型チェックの導入の検討.よいですね.静的型チェックがデフォルトで入ってくれればIDE等も対応してきてやりやすくなるのではないでしょうか.Pythonでも3.5からType Hintingなどがはいってきたように言語に型情報をつけるの流行ってますね.

Phoenixで作るスケーラブルゲームサーバ

www.slideshare.net

モンストを手がけるmixi社において一部サーバーをElixirで書いているようです.Erlang VMの安定性と軽量プロセスは突発的なアクセスに非常に強く作られているようです.

また,Erlangと違い文法がRubyライクなのが新たなエンジニアの参入障壁を下げているようです.確かにそれは一理ありそうです.関数型言語でもいきなりHaskellLispに手を出すと途中で詰む人が多いですしね.(諸説あると思いますが) やはり大人数の開発ではなるべくみんなが理解しやすい文法で書けるという言語はよいのでしょう.だからこそRubyPythonといったライトな言語が流行っているのですし.

最後にHot Code Loadingとかいうワード.はじめて知りましたがErlang VMはデータはそのままにコードだけを最新に置き換えるという機能があるみたいです.ただ,謎バグを踏んだりと大変みたいですが.

Functional Programming with Elixir

関数型言語についてElixirで入門しようという話.対象ははじめて関数型の知識を勉強しようという人向け.確かにElixirで学んだほうが文法が辛いとか考えなくてよくわかりやすいかもしれない.あと発表で言っていたとおりElixirの=演算子は一般的なプログラミング言語の代入という意味ではなく,「パターンマッチング」ということに気をつけておかないといけないし,案外そのことで突っかかるかもしれないなぁと思いました.

Rediscovery of OTP

ブラウザゲームの時代から現在のゲーム開発まで色んなお話が面白かったです.Elixirは安定と信頼**のErlang VMで動いているという話と「Erlang VMは安定しているけど乗ってるサーバー(AWS)が安定しない」という話は名言な気がする.

あとgumiのPython 2コードは3へは移行せずにElixirに書き直すというお話だったのでぜひ今年か来年のPyConで話してほしいなぁと思った.

これ以降はMacのバッテリがなくなりスマホで頑張ってメモを取りながら聞いていましたがとりあえずElixirを勉強するには以下を理解する必要があるということがわかりました.

  • Elixirの文法 (当たり前)
  • OTPについて理解
  • Erlangを少し書ける読めるようになること.

大学を卒業しました

こんにちは.今日は3/31ですね.本年度も終わります.

さて,私事ですが先週の金曜日に大学を卒業しました.Facebookには特に何も上げてないですがこれからあげますよ.振り返らないと過去を忘れてしまいそうなので今のうちに振り返っておきますよ.

f:id:jtwp470:20170331230348j:plain

続きを読む

卒業旅行ということで東京から大阪間を青春18切符で旅した話

f:id:jtwp470:20170331224633j:plainこんにちは.たんごです.先日は大学の友人4人と一緒に4泊5日の大阪,京都旅行に行きました.

色々観光する場所や大阪への行き方などを調べていたところ,1日目にUSJに行きたいという話になりました. USJは開演時間前に入場できないと大渋滞になってしまって大変なそうです.開演時間8:30に間に合うためには新幹線の始発か高速バス,または前日泊という選択肢がありました. 新幹線の始発は東京駅にみんな間に合わないということから却下され,高速バスは安いけどTrySailのツアーで名古屋に行った際の苦行を思い出しそんな苦痛は味わいたくないという気持ちです.

jtwp470.hatenablog.jp

そこでかんがえだされた案が前日に青春18切符でダラダラと大阪に行き1泊するという謎プランでした.まぁ鉄オタでもなければ学生のうちにしかできないやろーという謎テンションでその案が承認されて無事?青春18切符で大阪に向かうこととなりました.

続きを読む

Google Compute Platformの無料枠がちゃっかり拡大されたらしいので使ってみる

こんにちは.たんごです.ニュースを読んでいたら常時無料プランができたらしいですね.AWSは1年間無料枠があるのとバイト先で利用しているので慣れ親しんでいますし,さくらのクラウドはよくクーポンをもらっていたのでそれで楽しんでいました.またAzureに関しても昨年のISUCONで使ってみてWeb UIはハゲるほど使いづらいなぁという印象を受けていましたがGCPだけは使っていませんでした.

しかし

jp.techcrunch.com

の記事にあるようにGCPのCompute Engine (AWSのEC2に相当)にも常時無料枠が登場したとのことなのでせっかくですが試してみます.

残念ながら私にはないのですが初めて利用する方には12ヶ月有効の300ドルクレジットがもらえるらしいですよ

始め方

  1. プロジェクトを作成する.
    • IAMの画面にあるプロジェクト作成を選択して適当な名前で.
  2. アカウントに課金を有効化させる.
    • 多分課金を有効化させないとCompute Engine等が作成できない

実際にインスタンスを作成する

Always Free Usage Limits  |  Google Cloud Platform Free Tier  |  Google Cloud Platform

によればGCEは次の条件下で無料になるらしい.

  • 1つのf1-microインスタンスを1ヶ月 (USリージョンのみ)
  • 30 GBのHDDと5GBのスナップショット
  • 1GBの北米から全地域への月間ネットワーク利用.(中国およびオーストラリアを除く)

またf1-microインスタンスは以下のような性能らしいです.

  • vcpu: 0.2 (バースト機能有効)
  • メモリ: 0.60 GB
  • 利用料金: $0.008 (1時間あたり)

性能はAWSのt2.microよりゴミっぽいですね.

VMインスタンスを適当にus-west1-aに立てて放置しました.この間にgcloudコマンドを使えるようにしておきます.

私はmacOSユーザーなので Quickstart for Mac OS X  |  Cloud SDK Documentation  |  Google Cloud Platform を読み進めて入れていきます. ダウンロード先を適当に/usr/local/CellarにしてHomebrewでインストールさせる場所と同じにしておくと楽かと思います.

f:id:jtwp470:20170312175825p:plain

にあるgcloudコマンドを表示を用いると簡単にコンソールからSSH接続できてしまいます.AWSだとSSH鍵を登録しますがGCEでは勝手に鍵を生成してログインまで出来てしまうようです.(強い)

ちなみにCPU

jtwp470@vm-instance:~$ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                1
On-line CPU(s) list:   0
Thread(s) per core:    1
Core(s) per socket:    1
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 79
Model name:            Intel(R) Xeon(R) CPU @ 2.20GHz
Stepping:              0
CPU MHz:               2200.000
BogoMIPS:              4400.00
Hypervisor vendor:     KVM
Virtualization type:   full
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              56320K
NUMA node0 CPU(s):     0
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_goodnopl xtopology nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms rtm adx xsaveopt

メモリ:

jtwp470@vm-instance:~$ cat /proc/meminfo  | head
MemTotal:         602480 kB
MemFree:          119756 kB
MemAvailable:     399200 kB
Buffers:           16956 kB
Cached:           337440 kB
SwapCached:            0 kB
Active:           308828 kB
Inactive:         112556 kB
Active(anon):      70044 kB
Inactive(anon):     1512 kB

感想

  • gcloudコマンドが以上に便利
  • インスタンスの作成から利用開始までがクソ速い. 体感で30秒程度?
  • アメリカ西海岸のリージョンを選択して日本からSSHしてるけど体感遅くない.あまりもっさりという感じでもない.
  • 安い

今のところAWSしか利用することはないでしょうが,趣味ではGCPというのは普通にありかなと思います.