Seminar report (Building a Linux server and AWS SDK for Ruby)
Upcoming SlideShare
Loading in...5
×
 

Seminar report (Building a Linux server and AWS SDK for Ruby)

on

  • 1,668 views

Amazon EC2 を利用したサーバ構築セミナーの実践報告.それと... AWS SDK for Ruby を使用したEC2インスタンス管理. ...

Amazon EC2 を利用したサーバ構築セミナーの実践報告.それと... AWS SDK for Ruby を使用したEC2インスタンス管理.

Seminar report of building a Linux server using Amazon EC2 and management of EC2 instances using AWS SDK for Ruby.

Statistics

Views

Total Views
1,668
Views on SlideShare
1,630
Embed Views
38

Actions

Likes
2
Downloads
1
Comments
0

2 Embeds 38

http://www.k-ruby.com 32
http://k-ruby.wabisabimoe.jp 6

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Seminar report (Building a Linux server and AWS SDK for Ruby) Seminar report (Building a Linux server and AWS SDK for Ruby) Presentation Transcript

  • Amazon EC2を利用した サーバ構築セミナーの実践報告 それと... AWS SDK for Rubyを使用した EC2インスタンス管理 @tamochia K-Ruby Sep. 27, 2012 112年10月1日月曜日
  • はじめに • 「サーバ構築セミナー」とは... - 某大学の某情報系センターにて,毎年,教職員向 けにLinuxのサーバ構築,いわゆるLAMP環境を構 築して,Web-DBコンテンツを実装しましょうと いうセミナー - 2008年度から実施,今回5度目 - 3時間/日 5日間連続 = 計15時間 - 内容は... ‣ Linuxセットアップ,Linux概要,Linuxシステム管理,Webサーバ構 築,MySQLサーバセットアップ,PHP概要,Web-DB連携など K-Ruby, 15th. September 27, 2012 212年10月1日月曜日
  • サーバ構築プラットフォームをどうするか (悩みどころ) • 前年度までは,受講者ノートパソコン持参 - HDDをフォーマットし,Linuxをインストール (2008∼2009年度) - 仮想環境(VirtualBox)をセットアップし,その 上の仮想マシンにLinuxをインストール (2010∼2011年度) ノートパソコンのスペックの差が, セミナーの進行を左右してしまう (ToT) K-Ruby, 15th. September 27, 2012 312年10月1日月曜日
  • 今年度(2012年度)は... • 「受講生持込みPC」→いりません(端末室利用) • Linuxサーバは,クラウド上で構築 - Amazon Web Service,Amazon EC2を利用 - 最もスペックの低いmicroインスタンスを利用 • 受講者全員のLinuxサーバ構築環境が同一 http://aws.amazon.com/jp K-Ruby, 15th. September 27, 2012 412年10月1日月曜日
  • 配布したパンフレット  情報システムの構築・運用は,クラウド コンピューティングの市場拡大に伴い, ユーザ自身がサーバを所有し,システムを構 築していくという形態から,パブリックに 提供されるサーバシステムやサービスを利用 する形態に変わっていっています.  このセミナーでは,Amazon Web Service上のLinuxによるWebサイト環境の 構築(Linuxのシステム管理,Web DB連 携)等,パブリッククラウドの各種サービ スを利用した,新しいスタイルのシステム構 築について,実操作を通して学習します. K-Ruby, 15th. September 27, 2012 512年10月1日月曜日
  • 5日間の内容 • 1日目 - クラウドサービス(AWS)について,Linux概要 • 2日目 - Linuxシステム管理,セキュリティ対策 • 3日目 - Web-DB開発環境構築 • 4日目 - PHPとMySQLによる動的Webページの作成 • 5日目 - Git入門,phpfogの利用,SaaSについて K-Ruby, 15th. September 27, 2012 612年10月1日月曜日
  • クラウドサービスについて確認 • クラウドの「構成要素」 - SaaS (Software as a Service) - PaaS (Platform as a Service) - IaaS (Infrastructure as a Service) アプリケーション ミドルウェア OS SaaS PaaS CPU/メモリ/HDD IaaS ネットワーク K-Ruby, 15th. September 27, 2012 712年10月1日月曜日
  • 使用テキスト(資料)について • NPO法人LPI-Japanが公開しているテキスト(標準 教科書)を利用(使用許諾確認済み) - Linux標準教科書 - Linuxサーバー構築標準教科書 ‣ http://www.lpi.or.jp/linuxtext/server.shtml K-Ruby, 15th. September 27, 2012 812年10月1日月曜日
  • 使用テキスト(資料)について • PukiWikiサイトを利用し,適時情報更新 K-Ruby, 15th. September 27, 2012 912年10月1日月曜日
  • Linuxサーバ構築関連内容 • SSHログイン - 公開鍵暗号方式について • viエディタの使い方 - すべてコンソールからの操作に対応 • Webサーバ構築 - htaccessによるアクセス制御,ベーシック認証 • ファイアウォール設定 - iptablesによるポート制御 K-Ruby, 15th. September 27, 2012 1012年10月1日月曜日
  • PaaSについて • PaaSの例として「phpfog」を利用 - PHP,MySQLの実行環境を無償で提供 - メールアドレスでのサインアップで即利用可能 K-Ruby, 15th. September 27, 2012 1112年10月1日月曜日
  • PaaSについて • Gitについて - デプロイツールとして必須(herokuも同様) - リポジトリの管理についての最低限の知識 - git add / commit / push / clone / pullなどは 最低限知っておく必要がある K-Ruby, 15th. September 27, 2012 1212年10月1日月曜日
  • PaaSについて • ここで問題事が... - 最初のアプリのひな形作成で,10∼20分以上か かってしまう問題が発生 - シェアサーバを利用しているので,全員が一度に処 理しようとすると負荷がかかるのは当然かも. タダだから仕方がない... (ToT) K-Ruby, 15th. September 27, 2012 1312年10月1日月曜日
  • SaaSについて • Microsoft Office 365 を例に説明 - 当大学でも今後使用する可能性があるかも - オフィスソフトが使える - メッセージアプリ「Lync」について実践 K-Ruby, 15th. September 27, 2012 1412年10月1日月曜日
  • セミナー風景 • 実習室環境 - 端末室のPC(Windows XP),7名受講(定員10名) K-Ruby, 15th. September 27, 2012 1512年10月1日月曜日
  • アンケート結果 • 最終日にアンケートをとりました - 紙ではなくWebで! - Google DocsのFormを利用(ここでもSaaS) アンケート項目数は14個 K-Ruby, 15th. September 27, 2012 1612年10月1日月曜日
  • アンケート結果(質問2,3) 質問2. 講習期間(5日間 質問3. 講習時間(3時間/ という期間)について 日という時間)について 17% 33% 100% 50% 長い やや長い 長い やや長い ちょうど良い やや短い ちょうど良い やや短い 短い 短い K-Ruby, 15th. September 27, 2012 1712年10月1日月曜日
  • アンケート結果(質問6,7) 質問6. 事前知識について 質問7. セミナーの内容レ ベルについて 17% 33% 50% 50% 50% ほとんど知らない 高い やや高い 2割程度は知っていた ちょうど良い やや低い 半分は知っていた 低い ほとんど知っていた K-Ruby, 15th. September 27, 2012 1812年10月1日月曜日
  • アンケート結果(質問9,13) 質問9. 講習環境について 質問13. セミナー全体に ついて 17% 17% 50% 33% 83% 満足 やや満足 普通 満足 やや満足 普通 やや不満 不満 やや不満 不満 K-Ruby, 15th. September 27, 2012 1912年10月1日月曜日
  • アンケート結果(質問12) • 今後,どのような講座を希望しますか? - 新しいWeb技術やサーバ管理の知識についてのもので あれば何でも受けてみたいです. - 今回のセミナーでやったPHPをもう少しやってみたい です. - 情報処理技術者応用以上の午後試験に対応した講座. - PHPの概要とMySQLデータベースとの連携の講座が 途中混乱してしまったので,もう少し詳細にあればい いと思いました. - もう少し優しくし,多くの人がきて勉強してほしいと 思います. K-Ruby, 15th. September 27, 2012 2012年10月1日月曜日
  • アンケート結果(質問14) • セミナーについてのご意見・ご感想をご自由にご記 入ください - 講師の先生達の努力を感謝します. - とても有意義な1週間でした.ありがとうござい ました.ウインドウを複数開いて作業したので, ディスプレイを2つ以上,もしくはもう少し(か なり)大きめのディスプレイがあると良いと思い ました. - 興味深く聞きました.ありがとうございました. これから安全にクラウドを利用する方法を逐次セ ミナーを開いてほしい. K-Ruby, 15th. September 27, 2012 2112年10月1日月曜日
  • アンケート結果(質問14) - わかりやすく教えていただけてよかったです.セミ ナー後にまた復習して身につけたいと思います.あ りがとうございました. - 各先生方,お疲れ様でした.のんびりメモをとる時 間がなく,進行が若干速かったような感じですが非 常に貴重な実習体験ができました.時間を見つけて は復習して身につけていきたいと思います. - とても勉強になりました.このセミナーでプログラ ムに触れたことでもう少し積極的にプログラムを 触ってみようと思いました.コンピュータへの興味 も増えたので,またセミナーが開催された時には参 加します.5日間ありがとうございました. K-Ruby, 15th. September 27, 2012 2212年10月1日月曜日
  • セミナーも無事に終わり... • インスタンスの使用状況を確認 - AMS Management Console により,インスタ ンス利用の統計データが取得できる ‣ クラウド利用の利点 K-Ruby, 15th. September 27, 2012 2312年10月1日月曜日
  • CPU Utilization (%) 1日目  2日目  3日目  4日目  5日目 最大値 4日目: Web-DB連携,PHPプログラミング 平均値 K-Ruby, 15th. September 27, 2012 2412年10月1日月曜日
  • Network In (Bytes) 1日目  2日目  3日目  4日目  5日目 最大値 2日目: yum update 1日目: 不明 特定のユーザのよう 平均値 K-Ruby, 15th. September 27, 2012 2512年10月1日月曜日
  • Network Out (Bytes) 1日目  2日目  3日目  4日目  5日目 最大値 後半高い: クライアントからのWebアクセス 平均値 K-Ruby, 15th. September 27, 2012 2612年10月1日月曜日
  • EC2インスタンス利用のまとめ • 一番低いスペック(最大2ECU,RAM: 約600MB) microインスタンスで,常時約10台稼動. • 一斉に「yum update」を行っても問題なし. • 5日間,コマンドの応答不能,コンソールの異常終了 などのトラブルは一切なかった. Amazonすごい! 受講生20名(20台) くらいでも問題ないのでは!(゚ ゚) しかし... 問題がただ1つ... AWSはタダ(無償)ではないということ... K-Ruby, 15th. September 27, 2012 2712年10月1日月曜日
  • EC2インスタンスの利用環境構築について • Amazon Web Serviceは,基本,有償である. - クレジットカード決済 - カード番号を登録しなければサインアップ不可 • 施設として某支払い代行業者と契約し,講習会用の 経費で,本セミナー用アカウントを準備する予定 だった. • しかし,間に合わず,私個人のアカウントを利用 • さて,支払いどうする... K-Ruby, 15th. September 27, 2012 2812年10月1日月曜日
  • まずはEC2インスタンスタイプの選択 • 料金の一番安い(約0.03ドル/時)のmicroタイプに一決 Linux 料金 タイプ CPU メモリ ストレージ (1時間) small 1ECU 1.7GB 160GB $0.092 medium 2ECU 3.75GB 410GB $0.184 large 2ECU 7.5GB 850GB $0.368 extra large 4ECU 15GB 1,690GB $0.736 micro Max. 2ECU 613MB 8GB, EBS $0.027 ※1 microタイプ以外のストレージは,すべてインスタンスストレージ ※2 「ECU(EC2 Compute Unit)」は,Amazon独自のCPU計算性能単位「1ECU 1CPU」    1ECUは,1つの1.0∼1.2GHz 2007 Opteron または 2007 Xeon プロセッサ相当,らしい. Amazon EC2 Pricing ¦ アマゾン ウェブ サービス(AWS 日本語) http://aws.amazon.com/jp/ec2/pricing/ Amazon EC2 インスタンスタイプ ¦ アマゾン ウェブ サービス(AWS 日本語) http://aws.amazon.com/jp/ec2/instance-types/ K-Ruby, 15th. September 27, 2012 2912年10月1日月曜日
  • 利用費負担をどうするか • 幸い「無料使用範囲」適用中なう AWSに新規登録した人対象に,1年間の無料利用枠を提供 Amazon EC2 microインスタンスを1年間無料で利用できる! K-Ruby, 15th. September 27, 2012 3012年10月1日月曜日
  • 無料利用枠内容 • EC2 - microインスタンス(Linux,Windows Server) 共に750時間分 - EBS 30GBまで,100万I/O,スナップショット用 2GBまで • S3 - ストレージ5GBまで - 20,000get/2,000putリクエスト • データ転送 - 全サービス,帯域幅「送信(アウト)」15GB http://aws.amazon.com/jp/free/ K-Ruby, 15th. September 27, 2012 3112年10月1日月曜日
  • 料金計算 • セミナー5日間 24時間 10名分=1,200時間 →450時間 overで,$12.15(約970円)ナリ∼ • 担当者の準備期間(事前5日間)を入れると,プラス 5日間 24時間 3名分=360時間($9.72,約770 円)で$21.87(約1,740円)ナリ∼ • セミナーに本当に必要な利用時間:610時間→OK! - セミナー5日間 5時間 10名分=250時間 - 準備期間5日間 24時間 3名分=360時間 • 公開用サーバではないので,常時稼動必要なし • インスタンスを無駄に稼動させない工夫が必要 K-Ruby, 15th. September 27, 2012 3212年10月1日月曜日
  • EC2 Management Console • 通常,インスタンスの管理はコレなんですが... K-Ruby, 15th. September 27, 2012 3312年10月1日月曜日
  • さてここで問題 • インスタンスのStart/Stopは,基本「Amazon Management Console」で操作(ログイン必須) • しかし,私個人のアカウントパスワードを教えるの はちょっと... • インスタンスのStart/Stopを綿密にスケジューリン グするか... • 利用者(受講生,担当職員)が自由にインスタンス を制御できる機構があれば... K-Ruby, 15th. September 27, 2012 3412年10月1日月曜日
  • さらに問題 • 外から引けるホスト名(Public DNS Name)や,IP アドレス(Public IP Address)が,インスタンス再 起動の度に変化してしまう. • その都度,利用者に最新の情報(ホスト名,IPアド レス)をお知らせしなければならない. コレよ∼(・ ・) K-Ruby, 15th. September 27, 2012 3512年10月1日月曜日
  • 結局,インスタンス管理どうする? • 利用者によるインスタンス制御,状態監視は必須 • 利用者は... - 現在のインスタンスの状態を知る必要がある. (Running or Stopped) - 現在のインスタンスのホスト名,IPアドレスを知る 必要がある. - 無駄な課金を抑止するために,インスタンスを適時 Start/Stopする必要がある. 独自のインスタンス管理ツールを作るしかない... K-Ruby, 15th. September 27, 2012 3612年10月1日月曜日
  • AWS SDK for Ruby • 「AWS SDK」とは? - Amazonの各種サービスAPIを利用するための開発 キット • それの,Ruby版公式SDK!(2011年07月公開) 「gem install aws-sdk」 でおk(・ ・)b 参考資料 AWS SDK for Ruby ¦ アマゾン ウェブ サービス(AWS日本語) http://aws.amazon.com/jp/sdkforruby/ K-Ruby, 15th. September 27, 2012 3712年10月1日月曜日
  • AWS SDK for Rubyを使ってみる • とりあえず試しに使ってみる - Bundlerでaws-sdkを入れてみる - 適当なディレクトリを作って,Gemfileを作成 $ mkdir awstest $ cd awstest/ $ bundle init Writing new Gemfile to /Users/hoge/work/awstest/Gemfile Gemfile source "https://rubygems.org" gem "aws-sdk" K-Ruby, 15th. September 27, 2012 3812年10月1日月曜日
  • AWS SDK for Rubyを使ってみる • PATHを指定して,「bundle install」 • irbでrequireできるか確認 $ bundle install --path vendor/bundle Fetching gem metadata from https://rubygems.org/........ : Post-install message from httparty: When you HTTParty, you must party hard! $ bundle exec irb irb(main)> require aws => true K-Ruby, 15th. September 27, 2012 3912年10月1日月曜日
  • AWS SDK for Rubyを使ってみる • AWSへアクセスするために必要な「アクセスキー」 と「シークレットアクセスキー」等を設定するコン フィグファイルを作成する. config.yml access_key_id: REPLACE_WITH_ACCESS_KEY_ID secret_access_key: REPLACE_WITH_SECRET_ACCESS_KEY simple_db_endpoint: ec2.ap-northeast-1.amazonaws.com irb(main)> conf_path = File.join(Dir::getwd, "config.yml") => "/Users/hoge/work/awstest/config.yml" irb(main)> AWS.config(YAML.load_file(conf_path)) => <AWS::Core::Configuration> K-Ruby, 15th. September 27, 2012 4012年10月1日月曜日
  • AWS SDK for Rubyを使ってみる • EC2のインスタンス生成はコレだけ. irb(main)> ec2 = AWS::EC2.new => <AWS::EC2> irb(main)> ec2.instances.count => 2 irb(main)> ins = ec2.instances["i-402ed043"] => <AWS::EC2::Instance id:i-402ed043> irb(main)> ins.exists? => true K-Ruby, 15th. September 27, 2012 4112年10月1日月曜日
  • AWS SDK for Rubyを使ってみる • EC2インスタンスのStart/Stopメソッド irb(main)> ins.status => :stopped irb(main)> ins.start => nil irb(main)> ins.status => :pending irb(main)> ins.status => :running K-Ruby, 15th. September 27, 2012 4212年10月1日月曜日
  • AWS SDK for Rubyを使ってみる • EC2インスタンスのホスト名/IPアドレスの取得メソッド irb(main)> ins.private_dns_name => "ip-10-123-34-56.ap-northeast-1.compute.internal" irb(main)> ins.public_dns_name => "ec2-175-XXX-YYY-ZZZ.ap-northeast-1.compute.amazonaws.com" irb(main)> ins.instance_type => "t1.micro" irb(main)> ins.private_ip_address => "10.123.34.56" irb(main)> ins.public_ip_address => "175.XXX.YYY.ZZZ" K-Ruby, 15th. September 27, 2012 4312年10月1日月曜日
  • AWS SDK for Rubyを使ってみる • EC2のコンソール出力 irb(main)> puts ins.console_output Xen Minimal OS!   start_info: 0xac4000(VA)     nr_pages: 0x26700  :  : Starting crond: [  OK  ] Starting atd: [  OK  ] Starting yum-updatesd: [  OK  ] Running cloud-init user-scripts (none found)[  OK  ] Amazon Linux AMI release 2012.03 Kernel 3.2.21-1.32.6.amzn1.x86_64 on an x86_64 ip-10-123-34-56 login: => nil K-Ruby, 15th. September 27, 2012 4412年10月1日月曜日
  • Railsでaws-sdkを利用する • 次に,Railsで「aws-sdk」を利用してみる - これもGemfileにaws-sdkを指定するだけ - 以下,Bundlerを使った基本的なRailsアプリ作成 $ mkdir ccaws $ cd ccaws/ $ bundle init Writing new Gemfile to /Users/hoge/work/ccaws/Gemfile Gemfile source "https://rubygems.org" gem "rails" gem "aws-sdk" K-Ruby, 15th. September 27, 2012 4512年10月1日月曜日
  • Railsでaws-sdkを利用する • Bundlerを使った基本的なRailsアプリ作成手順 • コントローラは一つ「Main」のみとしますー $ bundle install --path vendor/bundle $ bundle exec rails new . $ bundle install $ bundle exec rails g controller Main index Rails.root config app routes.rb controllers ec2.yml main_controller.rb views initializers aws.rb main index.html.erb K-Ruby, 15th. September 27, 2012 4612年10月1日月曜日
  • ec2.yml instance_id: - "i-40xec201" - "i-46x20303" - "i-44x20305" - "i-4ax20307" ※ここに記載しているのは架空のIDです - "i-48x20309" - "i-4ex2030b" - "i-4cx2030d" - "i-52x2030f" - "i-50x20311" - "i-56x20315" 10個のインスタンスIDを記載したYAMLファイル インスタンスを追加したり削除する場合はこのファイルを変更する aws.rb AWS.config ({ :access_key_id => REPLACE_WITH_ACCESS_KEY_ID, :secret_access_key => REPLACE_WITH_SECRET_ACCESS_KEY, :ec2_endpoint => ec2.ap-northeast-1.amazonaws.com, }) AWS設定.AWSクラスを呼び出す前に必ず実行しておく必要あり アクセスキー,シークレットキー,それとリージョンを指定する K-Ruby, 15th. September 27, 2012 4712年10月1日月曜日
  • main_controller.rb class MainController < ApplicationController INSTANCES_YAML_PATH = File.join(Rails.root, "config", "ec2.yml") def index instances = [] @infos = Hash.new{ |h, k| h[k] = {}} all = YAML.load_file(INSTANCES_YAML_PATH) @instance_ids = all["instance_id"] ec2 = AWS::EC2.new @instance_ids.each do |instance_id| instances << ec2.instances[instance_id] end instances.each do |ins| @infos[ins.id]["tag"] = ins.tags["ccsemi"] @infos[ins.id]["status"] = ins.status @infos[ins.id]["public_dns_name"] = ins.public_dns_name @infos[ins.id]["public_ip_address"] = ins.public_ip_address end end K-Ruby, 15th. September 27, 2012 4812年10月1日月曜日
  • main_controller.rb(続き) def stop_instance id = params[:id] ec2 = AWS::EC2.new instance = ec2.instances[id] if instance.status.to_s == "running" instance.stop end redirect_to main_path end def start_instance id = params[:id] ec2 = AWS::EC2.new instance = ec2.instances[id] if instance.status.to_s == "stopped" instance.start end redirect_to main_path end end K-Ruby, 15th. September 27, 2012 4912年10月1日月曜日
  • <table border="1"> index.html.erb <tr> <th>Instance ID</th> <th>Tag name</th> <th>Status</th> <th>Action</th> <th>Public DNS name</th> <th>Public IP address</th> </tr> <% @instance_ids.each do |id| %> <tr> <td><%= id %></td> <td><%= @infos[id]["tag"] %></td> <td><%= @infos[id]["status"] %></td> <td> <%= if @infos[id]["status"].to_s == "running" then button_to "Stop", stop_instance_path(:id => id) elsif @infos[id]["status"].to_s == "stopped" then button_to "Start", start_instance_path(:id => id) end %> </td> <td><%= @infos[id]["public_dns_name"] %></td> <td><%= @infos[id]["public_ip_address"] %></td> </tr> <% end %> </table> K-Ruby, 15th. September 27, 2012 5012年10月1日月曜日
  • routes.rb Ccaws::Application.routes.draw do root :to => main#index match main => main#index match stop_instance/:id => main#stop_instance, :as => stop_instance match start_instance/:id => main#start_instance, :as => start_instance end ルーティング設定.URLパターンは3つ Railsサーバの起動 $ bundle exec rails s Rails.root config app routes.rb controllers ec2.yml main_controller.rb views initializers aws.rb main index.html.erb K-Ruby, 15th. September 27, 2012 5112年10月1日月曜日
  • 実行結果画面 公開サーバにデプロイ  ・Apache + Passenger 構成 [ Start ]: インスタンス起動  ・ベーシック認証 [ Stop ]: インスタンス停止 インスタンスの状態 ホスト(FQDN)とIPアドレスを表示(インスタンス稼動時のみ) K-Ruby, 15th. September 27, 2012 5212年10月1日月曜日
  • おわりに • クラウドサービスを利用したセミナーということ で,色々と不安要素があったが無事に終わった. - クラウドサービスがダウンしたら,セミナーはで きない.→Amazon EC2 SLA(99.95%) • メリットはたくさん! - 受講者が同一の環境でセミナー構築実習できる - クライアントの環境はSSHクライアントのみ - スナップショットによるバックアップ/リストア - グローバルIPアドレスが利用できる K-Ruby, 15th. September 27, 2012 5312年10月1日月曜日
  • おわりに • 来年度は,インフラ関係とプログラム開発と分けて も良いかも... - 「クラウド利用とLinux構築(3日間)」 - 「Web-DB連携プログラミング(3日間)」 もちろんRuby on Railsでも • 本学の教職員だけでなく,一般向けにも実施しても 良いかも... • 参加募集してみて,人が集まるかな...? K-Ruby, 15th. September 27, 2012 5412年10月1日月曜日