DevFest Tokyo 2017に行ってきました
今日はDevFest Tokyo 2017に行ってきました。
去年も参加していたので今回で2回目になりますが、記事にするのは今回が初めてです。
DevFest Tokyoとは
GDG(Google Developer Group)が開催する開発者向けのイベントになります。
DevFestは日本だけのイベントではなく、世界中で開催されているようです。
「ボーダーレス」がテーマとなっていて、色んな分野のコミュニティがワイワイしていました!
オープニング
去年に引き続き、今年もコミュニティ紹介からスタート。
女性コミュニティ増えた?かな?コミュニティ多い!
去年は最後に写真撮影をしましたが、今年はこの時間に撮影。
ガッツポーズで!って言われたけどなんかみんなバンザイしてたw
発表中に出てきたGopherがやはりかわいい。
しゅっ #DevFest17 pic.twitter.com/yOJkRd9nIJ
— noko.☕開発再開 (@noko_k) 2017年10月9日
聞いてきたセッション
クラウドってなんだろ?クラウドを活かすアプリケーションの設計とは?
AMの僕の資料 クラウドってなんだろ?
— 真 (@sinmetal) 2017年10月9日
クラウドを活かすアプリケーションの設計とは?
https://t.co/ZX6ql5QApC #DevFest17
クラウドとはそもそも何か?から、
いざクラウドでアプリケーションを開発するときにどのような点に気をつけるべきか?をメインに基本的なところを押さえられるセッションでした。
- クラウドの強みはAPIにある
- クラウドも壊れる。しかしすぐに蘇る
- 壊れるのを前提で設計をするべき。具体的にはリトライとリクリエイトを考慮する。さらには適切なタイムアウトを設定する。
- サービスの単位で見るとすぐに蘇るが、リクエストを送ったその瞬間のリクエストは復活できない。
- 当たり前だが障害が発生したインスタンスが持っていたメモリの内容は消失するので、特にGCE等のIaaS側で状態を持たないようにする。
- GCE側で状態を持たないようになると、不要なときはインスタンスを閉じておけるなどコスト的なメリットもある。
LT
スケジュールに無かったものの急遽設定されたLT。
「近くにデイリーヤマザキしか無いからこの時間を潰すのはちょっと厳しいかと思って」
そうなんですwまさに暇してたところでしたw
Abema TVの人が多かった(3人)。聞きやすかったです。
後の方に法律関係の方のLTがあったのですが新鮮で良かったです。ちょい時間オーバーでしたがw
GCPパネルディスカッション
GCPのサービスを計算とストレージの2つに分けてあれこれ話していくゆるいパネルディスカッションでした。
「GCEは使ったことあるんだけど他は全然知らないんだよねーw」的なところが本当にあるあるで、話の内容も楽しく分かりやすかったですw
ストレージ周りの話が聞けたのが良かったかな〜と
あとは、よくある前に何人か座って、順番に話すみたいな(ちょうど次のセッションみたいな)ものではなかったのでこれはこれはゆるくて良いなーと思いました。新鮮な感じ。
- GCPのサービスのロゴが全部六角形で見づらい。たまにGCP側の人でも間違えてる(w) これすごく分かる
- Dataprep便利そうなので使っていきたい
- 「StackDriver Monitoringはすべてのユーザーが幸せになれるサービス」
- バッチならDataFlowに任せたほうが、構成がすっきりする上に安く済みそうなのでこちらも使っていきたい
- SpannerはFK使えない、主キー必須など内部のKVSが見え隠れする点でRDBと同列に扱うのは微妙っぽい。そして高い
- DataStoreの内部はBigTableで実現されている
Goによるプロダクト開発 〜設計、テスト、Go2に向けて〜
こちらもパネルディスディスカッションでした。
はてなのMeckerelの方、Mercariの方、エウレカの方、CyberAgentのAWAの方の4人出ていました。
- goはチーム開発に使いやすい。go fmt等のツールが充実している
- AbemaはGoを使って15人で開発している。多い!
- 毎週勉強会をやっているはてなすごい
- パッケージの話をすると止まらないエウレカの方の話をもう少し聞いてみたかったw
- 後方互換大事だけど新しい機能も使いたい
- GoにGenericsは要るか?→sliceになら使いたいかも程度
途中に紹介されていた記事。 後で読む。
いまさら聞けないPWA講座
今日一番学びがあったセッション。
私自身は「PWA、名前は知っているんだけどどういうものなのかよく分かってないんだよねー」程度の知識レベルでしたが、
PWAのメリットや、やらなければいけないこと、すべきことについて分かりやすく説明してくれた点がすごく良かったです。
勉強せねば。
- PWAにするとAndroidの場合はネイティブアプリのように使える
- PWAからIntentも飛ばせる
- PWAのポイントはFIRE(Fast Integrated Reliable Engaging)
- PWAにするとストレージ容量の削減になる。Twitter Liteの容量は0.6MB
- PWA = SPAではない。
- Service WorkerのAPIは低いレイヤーを触る感じなので扱いづらい。ライブラリを使う。https://workboxjs.org/
- APIで出来ることが強力になっていくので、HTTPSが前提条件となっている
- SafariでのService Workerは開発中なので今後に期待
ServiceWorker(PWA)、iOS対応したら審査なくなるんかな… #DevFest17 #DevFest_main
— あおれい - 月が綺麗かどうかおいていま (@bhind13) 2017年10月9日
確かにこれ気になりました。
App Storeと競合しそうですしどうするんでしょうね。
クロージング
まさかのネットワーク不調によりエアスライドとサムネイルによる発表になってしまいましたが
それはそれで面白かったですw
聞けなかったセッション
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
超人気。移動中に立ち見含め満員との告知があり入れずw
Go人気すさまじい。
まとめ
全体を通して面白くて、コミュニティの方々もワイワイしてて楽しいイベントでした!
また参加したいと思います!
お疲れ様でした!
Debian StretchにRailsがすんなり入らないときのメモ
$ sudo apt install ruby sqlite3 $ sudo gem install rails
この後OSに死ぬほど怒られた
コマンド一発でインストールできないフレームワークって…というわけで頑張るログ。
mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h
で怒られる
事象
$ sudo gem install rails Building native extensions. This could take a while... ERROR: Error installing rails: ERROR: Failed to build gem native extension. current directory: /var/lib/gems/2.3.0/gems/nokogiri-1.8.0/ext/nokogiri /usr/bin/ruby2.3 -r ./siteconf20170814-1797-1ktxt56.rb extconf.rb mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h extconf failed, exit code 1 Gem files will remain installed in /var/lib/gems/2.3.0/gems/nokogiri-1.8.0 for inspection. Results logged to /var/lib/gems/2.3.0/extensions/x86_64-linux/2.3.0/nokogiri-1.8.0/gem_make.out
確認すべきところと解決策
1. RubyとRubygemsのバージョンを確認する
Rails 5.1.3は Ruby 2.2.2、Rubygems 1.8.11以上が要求されている。
$ ruby --version ruby 2.3.3p222 (2016-11-21) [x86_64-linux-gnu] $ gem --version 2.5.2
aptから降って来るRubyが古い。。。(いつもの話
2. ruby-devを入れる。
mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h
mkmfと呼ばれるライブラリに ruby.h が含まれていないことに起因するエラー。
ruby-dev(CentOSならば ruby-devel) をインストールすると解消する。
sudo apt install ruby-dev
checking if the C compiler accepts ... *** extconf.rb failed ***
で怒られる
事象
$ sudo gem install rails Building native extensions. This could take a while... ERROR: Error installing rails: ERROR: Failed to build gem native extension. current directory: /var/lib/gems/2.3.0/gems/nokogiri-1.8.0/ext/nokogiri /usr/bin/ruby2.3 -r ./siteconf20170814-1913-1ni2g2j.rb extconf.rb checking if the C compiler accepts ... *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options.
Cコンパイラ系のエラーっぽい。
解決策
build-essential
をインストール
調べたらそもそもmkmfがMakefileを作るやつとのことだったので、 makeやらCやらC++が一式入ってないとまともに動かないだろうと判断。
sudo apt-get install build-essential
困ったときの build-essentialで解決。
zlib is missing; necessary for building libxml2
で怒られる
事象
ERROR: Error installing rails: ERROR: Failed to build gem native extension. current directory: /var/lib/gems/2.3.0/gems/nokogiri-1.8.0/ext/nokogiri /usr/bin/ruby2.3 -r ./siteconf20170814-7887-bxemei.rb extconf.rb checking if the C compiler accepts ... yes Building nokogiri using packaged libraries. Using mini_portile version 2.2.0 checking for gzdopen() in -lz... no zlib is missing; necessary for building libxml2 *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options.
zlibが無いらしい。
解決策
zlib1g-dev
をインストールする。
$ sudo apt install zlib1g-dev
これで解決した。
私のQiitaより転載した記事になります。
WindowsでLinuxのfindのような検索を行う
WindowsでLinuxのfindコマンドと同等のものをやりたいとき、結構困りますよね。
うっかりWindowsのFINDを使ってしまうと
FIND: パラメータの書式が違います
とか言われてしまう…これがあのいつものdirコマンドでなんとかできます。
dir
コマンドを使ったfindのような検索
dirコマンドの再帰的にファイルを表示するオプションを使う方法です。
dir /s /b *検索文字列*
例えば「カレントディレクトリ以下のJavaファイルを検索したい場合」は
dir /s /b *.java*
となります。
find . -name "*.java"
に近い結果が表示されます。
dirに指定しているオプションの/s
と/b
の意味は次のとおりです。
/B ファイル名のみを表示します (見出しや要約が付きません)。 /S 指定されたディレクトリおよびそのサブディレクトリのすべての ファイルを表示します。
他に設定できるオプションの詳細は次のコマンドでわかります。
dir /?
コマンドの返り値( %ERRORLEVEL%
)によって、ファイルが見つかったかどうかがわかります。
0が返ると検索成功、1が返ると検索失敗(ファイルが見つからなかった場合など)です。
... > dir /s /b *.java* (ここに結果が表示される) ... > echo %ERRORLEVEL% 0 ... > dir /s /b *.javaaaaaaa* ファイルが見つかりません ... > echo %ERRORLEVEL% 1
これを覚えればFINDで怒られることもなさそうです。