北海道大学 理学院 宇宙理学専攻 惑星宇宙グループ 博士1 年 三上 峻

Slides:



Advertisements
Similar presentations
ECLフレームワー ク 近畿大学 理工学部 情報学 科 間野 哲 弥.
Advertisements

Ruby on Rail の紹介 石渡正樹 Ruby on Rails とは? スクリプト言語 Ruby で書かれた web アプリケー ションフレームワーク 作者 –Devid Heinemeier Hansson という人だそうです ( 詳 しいことは知りません.
Web アプリケーション開発 ~図書館管理システム~ 北海道情報大学 情報メディア学 部 情報メディア学科 新井山ゼミ 高橋 隼.
Ruby on Rails (RoR) 講習会 近畿大学大学院 田中大介. 本日の目標 Web アプリケーションを作ろう!
1 安全性の高いセッション管理方 式 の Servlet への導入 東京工業大学 理学部 千葉研究室所属 99-2270-6 松沼 正浩.
Struts VS SAStruts ・ STRUTS と SAStruts を比較します。. Struts のメリット1 STRUTS はディファクトスタンダード。 ↓ プログラマがたくさんいる。 ライブラリ、ツールがたくさんある。 ビジネス案件が豊富。 書籍などの情報元が豊富。
BBT 大学 Ruby on Rails 開発環境セットアップマニュアル Mac 版 1.1 最終更新日: 2013/1/5.
OWL-Sを用いたWebアプリケーションの検査と生成
Web アプリをユーザー毎に カスタマイズ可能にする AOP フレームワーク
「図書管理」のための Webアプリケーション開発 -Apache/Tomcat/MySQL/Java on Windows XP-
BBT大学 Ruby on Rails開発環境セットアップマニュアル
株式会社co-meeting パブリッククラウドエバンジェリスト 吉田 パクえ
オープンソースCMS「ZOMEKI」を利用した 業務システムの開発手法
ZKプラグインで、Grailsの Viewをリッチに楽しく
情報基礎A 情報科学研究科 徳山 豪.
DB(データベース)のおはなし 作成者:小野正広 DBと言っても、  ドラゴンボール ではないですぞ! 3/1/2017.
JPAを利用した RESTful Webサービスの開発
Ruby on Rails 勉強会 11月5日「土」 崔 昌権
らくらく学校連絡網 スライドショーで見る操作ガイド -3- 登録 抜粋-管理者作業 escで中断、リターンキーで進みます
Day3 Day4 Day3 Day4 Copyright (c) 2009 Fusic Co.,Ltd.
Mavenによる プロジェクト管理 近畿大学理工学部 情報学科3年  小野実.
JavaServlet&JSP入門 01K0018 中村太一.
第4回 個人の動画配信補足のためのWeb構築
平成19年5月19日 第3版 東京大学理学部生物化学図書室 前田 朗
ビューとコントローラ.
HTTPプロトコルとJSP (1) データベース論 第3回.
Webを利用した授業支援システムの開発 北海道工業大学 電気電子工学科 H 渋谷 俊彦.
Curlの仕組み.
Day3 Day4 Day3 Day4.
HTTPプロトコル J2EE I 第7回 /
経済学のための情報処理 ホームページの作成.
Day3 Day4 Day3 Day4.
Day3 Day4 Day3 Day4.
サーバ構成と運用 ここから私林がサーバ構成と運用について話します.
Ruby on Rails (RoR) をほんの少し語ってみる
マイクロソフト Access を使ってみよう 第1回
PDF管理Webアプリケーションの制作 ~PDFファイル探索時間の短縮化~
C++とオブジェクトデータベース入門 8.オブジェクトデータベースとは 森井 喬 Webページ
サンデーPonセットアップマニュアル <目次> 1.動作環境について 2.セットアップ作業 ①. ソースの設置
プログラミング 設計資料 メンバー:.
第8章 Web技術とセキュリティ   岡本 好未.
2004年度 サマースクール in 稚内 JavaによるWebアプリケーション入門
2003年度 データベース論 安藤 友晴.
【プログラミング応用】 必修2単位 通年 30週 授業形態:演習.
11.Webサイトとデータベース, Webサイト+ブログシステムの開設手順例
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
北海道大学 理学院 宇宙理学専攻 惑星宇宙グループ 修士2 年 三上 峻
第2回.リレーショナルデータベース入門 SQL を用いたテーブルへの行の挿入 SQL 問い合わせの発行と評価結果の確認.
第1回.リレーショナルデータベースを使ってみよう
第1回.リレーショナルデータベースを使ってみよう
第2回.リレーショナルデータベース入門 SQL を用いたテーブルへの行の挿入 SQL 問い合わせの発行と評価結果の確認.
Webアプリケーションの方向性 データベース論 第13回.
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
WEBアプリケーションの開発 2002年度春学期 大岩研究会2.
すぐできるBOOK -基本設定編-.
Jakarta Struts (2) ソフトウェア特論 第11回.
gate-toroku-system のしくみ
プロジェクト管理ソフトの群雄割拠をどうやって勝ち抜くか?②
7-0.SWORD Client for WEKO インストールマニュアル Version 2.2
Javaによる Webアプリケーション入門 第11回
コンピュータ プレゼンテーション.
JSFによるWebアプリケーション開発 第3回
Firebaseを用いた 位置情報共有システム
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
Jakarta Struts (1) ソフトウェア特論 第10回.
稚内北星学園大学 情報メディア学部 専任講師 安藤 友晴
第1回.リレーショナルデータベースを使ってみよう
地理情報コンテンツ・データベースコンテンツ新規作成
クリエイティブ リサーチ 2019/05/20 日本工学院八王子専門学校 M.Katsube.
P2Pによる協調学習システム 唐澤 信介   北海道工業大学 電気工学専攻.
Presentation transcript:

北海道大学 理学院 宇宙理学専攻 惑星宇宙グループ 博士1 年 三上 峻 レポート投稿システム 「suu」 について 北海道大学 理学院 宇宙理学専攻 惑星宇宙グループ 博士1 年 三上 峻

目次 はじめに suu 概要 Ruby on Rails suu におけるMVC suu の課題 最後に

はじめに

諸注意 Rails の細かいところに関しては若干危ういところがあります 興味のある人は各自勉強してください 習うより慣れろ 質問・コメントたくさんして盛り上がってくれるとうれしい かといってすべて答えられるとは限りませんのでご容赦ください suu のソースコードはgithub にあります mikataka@github https://github.com/mikataka/report

suu 概要

suu INEX課題提出用レポート投稿システム Ruby on Rails (RoR, Rails) で作成 管理者:三上 (2 代目) 2013/04/01- 稼働開始 Ruby on Rails (RoR, Rails) で作成 Rails 3.2.3 で構築 管理者:三上 (2 代目) 名前の由来:猫(メス)の名前 Jet サーバで稼働中(https://jet.ep.sci.hokudai.ac.jp/) Jet: Rails サービス提供サーバ redmine (プロジェクト管理システム) Radius (無線LAN 利用認証システム) 1 代目の(元?)彼女が飼っている猫(メス)の名前 Rails: 最新版は4.2.0 Ruby の最新版は2.2.0 suu で使われているのは1.9.3

Jet TOP ページ https://jet.ep.sci.hokudai.ac.jp/

suu ログインページ https://jet.ep.sci.hokudai.ac.jp/report/login

suu TOP ページ

2013-2014 年度のレポート課題一覧

suu の現状 アカウント数: 124(testuser 含め) 投稿レポート数: 836 (テスト投稿含め) 2013 年度: 77 (うちStaff 21) 2014 年度: 47 (うちStaff 1) 投稿レポート数: 836 (テスト投稿含め) 2013 年度: 427 2014 年度: 409 アカウント 2014 追加分は齊藤さんのみ レポート課題数 2013: 5 2014: 5

Ruby on Rails

Ruby on Rails Ruby 言語で記述され, Ruby 環境で動作するWeb アプリケーションフレームワーク 開発者 開発年 David Heinemeier Hansson デンマークのプログラマ 開発年 2004 年に最初のバージョンが公開 最新版: Rails 4.2 (2014/12/19)

Web アプリケーションフレームワーク フレームワーク(枠組み) アプリケーションフレームワーク Web アプリケーションフレームワーク 「開発・運用・意思決定を行う際に、その基礎となる規則・構造・アイデア・思想などの集合のこと。」(Wikipedia, フレームワーク, 2015/02/13) アプリケーションフレームワーク 再利用可能なクラス・ライブラリの集合 アプリケーションを新規作成する際に,再利用可能なコードをまとめておくことで開発者の手間を省くことができる Web アプリケーションフレームワーク Web サイト等の開発をする際に用いられるアプリケーションフレームワーク * クラス: オブジェクトの型(文字列: String, 配列: Array など) * オブジェクト: Ruby におけるデータの基本単位(文字列, 時刻) ライブラリ: 汎用性の高い複数のプログラム 最近のスマートフォンアプリもこのWeb アプリケーションフレームワークというのが用いられている Gunyasif(グニャシフ) => FFRK

アプリケーションフレームワークのメリット 開発生産性の向上 コード開発に規約があるので品質均質化 比較的役割分担がしやすい メンテナンス性に優れる コードの一貫性による可読性の向上 先端の技術トレンドに対応しやすい フレームワーク規模での対応が可能 Ruby 2.0, HTML5 など 一定以上の品質が期待できる もともとある程度できているものから作るため

アプリケーションフレームワークのデメリット 制約が多いので慣れるのに時間がかかる こんなアプリケーションはフレームワークを導入しないほうがいい 小規模なアプリケーション その場限りのアプリケーション

Rails プログラミングに必要な環境 Ruby HTTP サーバ Database Ruby on Rails Apache, WEBrick… Database SQLite, MySQL… Ruby on Rails Ruby

Rails プログラミングに必要な環境 Ruby on Rails Ruby クライアント HTTP サーバ Database (Web ブラウザ) Ruby HTTP サーバ Database

Rails 基本理念 DRY(Don’t Repeat Yourself) 同じことを繰り返さない 定義などの作業は一回だけで済ませろ CoC(Convention over Configuration) 設定より規約 慎重に設計された規約に従うことにより,設定が不要(あるいは軽減)

ソフトウェアアーキテクチャ MVC パターンを採用 Model View Controller データベースとのデータのやりとり データを表示 Controller ユーザの入力に対し応答・処理 アーキテクチャ:基本設計

MVC の基本的なシナリオ Web ブラウザ Database Controller Model View

MVC の基本的なシナリオ View Model Controller Web ブラウザ Database ⑥結果をview に渡す ④データ のやりとり ⑦ブラウザに出力 ①UI を通してViewに入力 ②Viewからの入力を処理 ③Controller がユーザの操作に応じたデータのやりとりを指示

ディレクトリ構造 ルートディレクトリ以下の構造は基本的に以下のようになる suu の場合ルートディレクトリはreport report/ |--app |--models -- *.rb |--controllers -- *_controllers.rb |--views -- 各クラス -- *.html.erb … |--db |--migrate erb: Embedded ruby HTMLやXML などにRubyスクリプトを埋め込む仕組み

厳格なファイル名規則 report/ |--app |--model |-- user.rb |-- repbody.rb |--controllers |-- users_controllers.rb |-- repbodies_controller.rb |--views |--users |-- show.html.erb |-- new.html.erb |-- repbodies |-- index.html.erb 実際に見てみる(Github)

user クラスの例 (データベース) マイグレーションファイルにて作成 db/migrate/ 以下に存在 詳細は割愛 データ型 名前 String 型 account(アカウント名) username(フルネーム) studentid(学籍番号) email(メールアドレス) grade(学年) password_digest(パスワード) machine(情報実験機番号) year(受講年度) owner(責任者) furigana(名前の読み仮名) integer 型 id(主キー) role_id(役職番号) datetime 型 created_at(作成日) updated_at(アップデート) boolean 型 acception(アカウント認証)

user クラスの例 (モデル, user.rb)

user クラスの例 (users_controller.rb) show アクション find メソッドを使って変数を格納 new アクション new メソッドを使ってデータの格納先変数を作成 params[:user] はURL から送られてきた値やフォームで入力した値をparams[:パラメータ名]で取得する newext アクション new メソッドを使ってデータの格納先変数を作成

user クラスの例 (users/show.html.erb)

Scaffolding 機能をおすすめ!! けっこう大変そう… 規則覚えるのが大変 最初頑張れば後で楽できます とはいっても一から全部作っていくのはなかなか厳しい… そんなあなたに… Scaffolding 機能をおすすめ!!

Scaffolding 機能 (スキャフォールディング) 基本機能をあらかじめ実装したアプリケーションの骨格を作成する機能 実演

Scaffolding 機能による開発 test1 ディレクトリの作成(test だと怒られる) $ rails new test1 関連ファイルの作成 $ rails generate scaffold book isbn:string title:string publish:string published:date マイグレーションファイルの実行によるテーブルの作成 $ rake db:migrate サーバ起動, ブラウザ確認 $ rails s ブラウザで http://localhost:3000/books にアクセス $ ruby –v $ rails -v $ rails new test1 $ nano Gemfile gem 'libv8', '~> 3.11.8‘ gem 'execjs‘ gem 'therubyracer‘ $ bundle install $ rails generate scaffold book isbn:string title:string publish:string published:date $ rake db:migrate $ rails s

質問タイム

suu におけるMVC

ここからは… アカウント申請の際のMVCの動きを ソースコードと併せて具体的に追っていきます ソースコードはgithub においてあります mikataka@github https://github.com/mikataka/report branch にmaster とwork があるがどちらも同じ

MVC の基本的なシナリオ(復習) View Model Controller Web ブラウザ Database ⑥結果をview に渡す ④データ のやりとり ⑦ブラウザに出力 ①UI を通してViewに入力 ②Viewからの入力を処理 ③Controller がユーザの操作に応じたデータのやり取りを指示

①UI を通してViewに入力 user Controller のcreateext アクションに入力情報を引き渡し ブラウザへの表示 /app/views/user/newext.html.erb ユーザ新規登録画面

②③④⑤View ⇒ Controller ⇔ Model new はモデルの生成 params[:user] はURL から送られてきた値やフォームで入力した値をparams[:パラメータ名]で取得する /app/controllers/users_controller.rb の一部

②③④⑤View ⇒ Controller ⇔ Model ・オブジェクトの生成 ・Viewからの入力を変数に格納 new はモデルの生成 params[:user] はURL から送られてきた値やフォームで入力した値をparams[:パラメータ名]で取得する /app/controllers/users_controller.rb の一部

②③④⑤View ⇒ Controller ⇔ Model モデルがデータベースとデータのやりとり メールを送信 new はモデルの生成 params[:user] はURL から送られてきた値やフォームで入力した値をparams[:パラメータ名]で取得する /app/controllers/users_controller.rb の一部

⑥⑦Controller ⇒ View ⇒ ブラウザ Model がView にデータを送り,ブラウザに表示 new はモデルの生成 params[:user] はURL から送られてきた値やフォームで入力した値をparams[:パラメータ名]で取得する /app/controllers/users_controller.rb の一部

⑥⑦Model ⇒ View ⇒ ブラウザ /app/controllers/users_controller.rb の一部 new はモデルの生成 params[:user] はURL から送られてきた値やフォームで入力した値をparams[:パラメータ名]で取得する /app/controllers/users_controller.rb の一部

⑥⑦Model ⇒ View ⇒ ブラウザ /app/controllers/users_controller.rb の一部 new はモデルの生成 params[:user] はURL から送られてきた値やフォームで入力した値をparams[:パラメータ名]で取得する render /app/controllers/users_controller.rb の一部 /app/views/users/accept.html.erb

質問タイム

suu の課題

suu で出来ること レポート投稿・修正・削除 コメント付加 アカウント機能 ファイルアップロード 参考URL 貼り付け アカウント作成・情報更新 等 ファイルアップロード 参考URL 貼り付け new はモデルの生成 params[:user] はURL から送られてきた値やフォームで入力した値をparams[:パラメータ名]で取得する

suu の課題 Rails4 へのアップデート レポート中の画像貼り付け パスワードクラック 受講生のコメント返し 画像のURL だけ貼ればレポート閲覧画面でも画像を見れるようにしたい パスワードクラック Bcrypt-ruby で暗号化していることがわかったが,中身がよくわからない 受講生のコメント返し 昨年度の受講生からのリクエスト new はモデルの生成 params[:user] はURL から送られてきた値やフォームで入力した値をparams[:パラメータ名]で取得する

まとめ suu とはRoR を使って作った新しいINEXレポート投稿システムである RoR のソフトウェアアーキテクチャはMVCである とりあえずは受講生のコメント返しとレポート中への画像貼り付けをできるようにしたい

参考文献 Ruby on Rails - ウィキペディア – Wikipedia Rails 4 パート1:Rails 4の最新情報 (翻訳版) http://www.engineyard.co.jp/blog/2013/rails-4-changes/ Web アプリケーションフレームワーク - ウィキペディア – Wikipedia 新しいinex レポート投稿システム開発の現状とこれから, 川畑拓也, 2012/02/15 http://www.ep.sci.hokudai.ac.jp/~epnetfan/zagaku/2012/0215/pub/ Model View Controller - ウィキペディア – Wikipedia

参考文献 Ruby on Rails 3 アプリケーションプログラミング, 山田祥寛, ISBN-13: 978-4774146638