namusyakaぶろぐ

やぁやぁやぁ

Sinatra Sapporoに参加した

まずは簡易的なレポートから。 途中で離席していたところはスライドを見つつ補完した。 実際のところ、このレポートの正確性に自信はない。

自動化のあれこれ (@sinatrasapporoさん)

Vagrant

Chef

Capistrano

  • deployの自動化。
  • Capfile
  • cap install
  • gem install capistrano-rvm etc..

rvm

  • rubyのパッケージ管理システム。
  • (rbenv, ruby-build), (chruby, ruby-install)

Bundler

  • ライブラリをバンドルする。
  • gem 'hogehoge', group: :test, group :test do ~ endによるgemのグループ化。
  • bundle install --without test
  • bundle install --deploymentはプロジェクト直下にvendor/bundleを作成して、そこにgemをインストール。 (追記: bundle install --path vendor/bundleと同義ではなく、.bundle/configにBUNDLE_FROZEN=1が追加されることで、Gemfile.lockを元にgemのインストールを行うようになる)

Docker

  • VMを管理するという概念とは異なり、コンテナを管理する。
  • 「アプリケーション + Dockerfile => myapp」
  • 一番好き。
  • Dockerを最近は使っている。
  • Dockerがどっか行った。

ゲーム vs. Sinatra (@myokoymさん)

スライドが公開されています。

自己紹介

  • 将棋が好き。(アマ三段)
  • Ruby Kaja 2013

第一部

年表

  1. 2013/11/24 - SinatraSapporo初の勉強会
  2. 2014/02/28 - 札幌市中央区Ruby会議01
  3. 2014/05/10 - SinatraSapporo二回目の勉強会、Gosuについて
  4. 2014/06/14 - OSC 2014 Hokkaido, Sinatraの帽子を使ったゲームを展示
  5. 2014/08/17 - SinatraSapporoSaturday#01, ArduinoでLEDをチカチカして納涼
  6. 2014/10/11, 2014/11/16 - SinatraSapporoSaturday#02, SinatraSapporoSunday#03 Padrinoを使い始める

Rabbit

  • Rabbit - プレゼン作成用ツール、装飾(テーマ)をRubyで記述できる。
  • RabbitのキャラクターLavieさん。持っている赤い球体はRuby

Ruby-GNOME2

Ruby/GTK2
  • gem install gtk2
  • 開発はほぼ終了。
  • Rabbitやmikutterなどで採用、安定している。
  • 初めて使うならこちらがオススメ?
Ruby/GTK3

Gosu

SDL

第一部のまとめ:「Sinatra最高」

第二部

テーマは「VS.」

対比させる。

ポイントは

  • 動作環境
  • 画面構成
  • 更新方法

動作環境

ネイティブアプリ vs. Webアプリという構図

ネイティブアプリ
  • 動作速度が速い
  • デバイスの機能をいかしたインターフェース(push通知 etc)
Webアプリ
  • リリース、インストールが楽
  • 他のサービスと連携しやすい。つまり使われる技術が限られる。(HTTP, JavaScript etc)

適材適所で。

画面構成

  • GUIアプリ - osと紐づいたパーツを組み合わせる
  • ゲーム系 - 一から形を決めて描画する
  • Webアプリ - ブラウザのパーツを組み合わせる。

「誰もがデザイナー」

更新方法

  • イベント駆動
  • フレームレート
  • HTTP
イベント駆動
  • 起動すると共にイベント待機。起こったイベントにしたがって処理を行う。イベントハンドラ
  • イベントハンドラはコールバック関数。イベントが起こったときの処理を記述。クリックやアクティブ化 etc
  • イベント駆動はCPUに優しい(当社比)

フレームレート

  • 1秒間に一定回数の処理
  • 1秒間に60回の場合、60fps
  • 1フレームで状態の更新や画面への描画など。
  • 例えば1秒間に約60回呼ばれるメソッドの処理が1秒を超えたらどうなるか => かたまる。自分で計算しながらやるのが肝要?
  • ゲーム系。常にCPU使ってる感。

HTTP

  • 「何を」「どう」したいか
  • リクエスト-レスポンス型
  • 「何を」 = http://<ホスト名>/[パス]
  • 「どう」 = メソッド(GET, POST etc..)
  • Sinatraがわかりやすい。
  • いわゆるクラサバ。サーバがレスポンスを返せば一区切り。 基本的には状態を保存しない。

おわりに

  • Sinatraたのしいょ!
  • ゲームやGUIもたのしいょ
  • 組み合わせても良い。コミュニティ(Sinatra Sapporo)でチーム開発?

Padrino Frameworkのすゝめ (@namusyaka)

  • スライド資料
  • 案の定喋りすぎて最後は駆け足になった。
  • PadrinoやSinatraを知らない人でも、ということを念頭に置いていたつもりだったが、いくつかの部分で説明不十分な箇所が生じていたように思う。準備はしっかりすべきですね。

質疑応答

Q: Webアプリケーションフレームワークのパフォーマンスにおいて、ルーティング処理の占める割合が知りたい

A: Padrinoに関して言えばウェイトはそこまで大きくはない。速度にこだわっていたのはhttp_routerに負けたくなかったため。

LT

Railsでマップを使ったアプリを作ったり。

  • Railsでアプリ。
  • RoSP - railsライクなスマホアプリ開発、webの知識を利用できる。Androidでも安定して動く。

Sinatra風マイクロフレームワークで始めるPython (@kuroneko1988)

スライドが公開されています。

  • 書き方というか手段が多くはない。
  • 故にコードが汚いと叩かれる事も少ない?
  • Python楽しいよPython

参加した感想

Ruby系の勉強会に参加するのはこれが初めてで、新鮮だった。 Sinatraを普段から使っている人はもちろんのこと、PythonistaやGUIアプリケーション、あるいはAndroidアプリをメインに開発しているが、 レスポンスのテストのために部分的にSinatraを使っている人など、Webケーの枠組みを越えて色々な話を聞けた。

懇親会, 忘年会

ジンギスカン、美味かったです。昼食も用意してもらってすみません。。 改めてありがとうございました。