Upload
mayumi-emori
View
145
Download
0
Embed Size (px)
Citation preview
ミッションクリティカルなシステムを 支えるアプリ開発
~初心者がつまずくポイント解説と コミュニティの歩き方~
株式会社ケーシーエスキャロット 江森 真由美
2015.03.28 @ヒューマンソシリア
自己紹介• 江森 真由美 (@emorima)
• 株式会社ケーシーエスキャロット ユニットマネージャー
• Asakusarb メンバー
• Rails Girls Tokyo 3rd & 4th オーガナイザー
• Rails Girls Shiojiri 1st コーチ
会社概要
放送局ビデオ編集・配信システム開発 AV機器・情報家電組込みシステム開発 Windowsアプリケーション開発 通信制御アプリケーション開発 Webアプリケーション開発 Androidアプリケーション開発
業務経歴• 入社~2年Visual Basic、C、Java とか業務で色々な言語を触れる機会はあるが、6ヶ月程度の業務が終わればそれで終わりの繰り返し
• 3年~C++でWindows アプリを作りまくる (ThreadでのSocket通信アプリ、バイナリデータ解析アプリ等)
• 6年PHPでWebアプリを作る
• 7年 (2003年)~「来月からRubyをやってもらいます」というお客さんの一言でRubyを使い始める。「今度、Railsが出ます」の一言で、 Rails 0.11を使い始める。
• 現在に至る
‘ミッション クリティカル’ とは
• 任務や業務の遂行に必要不可欠な要素(機器、プロセス、手順、ソフトウェアなど)のこと。
• 障害の発生による中断や停止が発生した場合に社会的影響が大きい、交通機関や金融機関などの機関システムは一般的にミッションクリティカルであり、停止しないことが求められる。
• (中略)ミッションクリティカルシステムを想定した技術や製品では、信頼性・可用性・保守性といった面が高められている。 ~wikipediaより~
Started GET "/" for ::1 at 2015-03-28 11:00:22 +0900 Processing by Rails::WelcomeController#index as HTML Rendered /Users/emorima/.rvm/gems/ruby-2.2-head/gems/railties-4.2.0/lib/rails/templates/rails/welcome/index.html.erb (0.0ms) Completed 200 OK in 3ms (Views: 2.3ms | ActiveRecord: 0.0ms)
Started GET "/users" for ::1 at 2015-03-28 11:00:24 +0900 Processing by UsersController#index as HTML User Load (0.2ms) SELECT "users".* FROM "users" Rendered users/index.html.erb within layouts/application (2.4ms) Completed 200 OK in 1333ms (Views: 1330.5ms | ActiveRecord: 0.3ms)
項目1 項目2 状態あ A 正常あ B 正常い A 異常い C 異常
状態管理テーブル(日単位)
項目1 項目2 時刻 値あ A 00:00:00 1あ A 00:01:00 2あ A 00:02:00 2あ B 00:00:00 3
データテーブル(日単位)
940万レコード/日
FizzBuzzプレイヤーは円状に座る。 最初のプレイヤーは「1」と数字を発言する。 次のプレイヤーは直前のプレイヤーの次の数字を発言していく。 ただし、3で割り切れる場合は 「Fizz」、5で割り切れる場合は 「Buzz」、両者で割り切れる場合は 「Fizz Buzz」 を数の代わりに発言しなければならない。 発言を間違えた者や、ためらった者は脱落となる。 ~wikipediaより~
1.upto(50) do |i| if i % 15 == 0 puts ‘FizzBuzz’ elsif i % 3 == 0 puts ‘Fizz’ elsif i % 5 == 0 puts ‘Buzz’ else puts i end end
「3と5の両方で割りきれる」と 「15で割りきれる」は
同じではない
V1 = 3 V2 = 5 1.upto(50) do |i| s = ‘’ s.concat ‘Fizz’ if 0 == i % V1 s.concat ‘Buzz’ if 0 == i % V2 s.concat i.to_s if s.empty? puts s end
cronA データファイルがあったら、データ登録を行う(処理時間3sec) cronB Aが更新したデータがあったら、データ更新を行う(処理時間2sec) cronC Bが更新したデータがあったら画面表示用のデータ更新を行う(処理時間2sec)
cron 最長4分
class Foo def initialize data @key = data end private def do_fuga p 'secret' end end
some = Foo.new 'XXX' some.instance_eval{p @key} #=> "XXX" some.instance_eval{do_fuga } #=> "secret" # private メソッドも呼び出せる
http://docs.ruby-lang.org/ja/2.2.0/method/BasicObject/i/instance_eval.html
String#blank?
Rails Loading development environment (Rails 4.2.0) 2.2-head :001 > 'a'.blank? => false 2.2-head :002 >
Ruby 2.2-head :001 > 'a'.blank? NoMethodError: undefined method `blank?' for "a":String from (irb):1 from /Users/emorima/.rvm/rubies/ruby-2.2-head/bin/irb: 11:in `<main>' 2.2-head :002 >
自己紹介• 江森 真由美 (@emorima)
• 株式会社ケーシーエスキャロット ユニットマネージャー
• Asakusarb メンバー
• Rails Girls Tokyo 3rd & 4th オーガナイザー
• Rails Girls Shiojiri 1st コーチ
自己紹介• 江森 真由美 (@emorima)
• 株式会社ケーシーエスキャロット ユニットマネージャー
• Asakusarb メンバー
• Rails Girls Tokyo 3rd & 4th オーガナイザー
• Rails Girls Shiojiri 1st コーチ