プロフィール
DTIブログ!

Search

考えることの重要性

今日、面接に行ってきました。(就職活動)
色々と反省点はありましたが、結果待ちです。

さて、反省点、改善策など考えていたら、
「考えることの重要性について」の記事が目に入りました。

初めは、IT Mediaのこの記事から読み始めたのですが
内容が面白かったので、バンクナンバーまで読んでしまいました。

気になる方は読んでみてください。リンク

その流れで、教育方法についての記事を読んでいて
陰山メソッドなるものをみて、ちょっとチャレンジ
10x10の升目をつくり、左上に+,-,*を書きその下と右に1桁の数字を書く。あとは、演算しに基づいて、計算結果を記述するって簡単なものです。

+353807478
2         
5         
7         
2         
8         
6         
9         
4         
8         

暗算の練習、考える訓練になるみたい

自動生成Webページがあった
リンク

システム開発現場におけるSOA構築の実際

セミナーに参加に参加

今、現在利用しているツール「パターンウィーバ」で
・どのようなことができるのか
・どのように使われているのか
・どうようなプロセスで利用されるか
など気になるところが何箇所かあって参加させていただきました。

プログラムの詳細は、関連サイトへ
開催概要

プログラム内容は、3部構成
1.システム開発現場におけるSOA構築の実例」
株式会社日立製作所 ソフトウェア事業部
第2AP基盤ソフト設計部 チーフアーキテクト
桐越 信一

2.「SOAにおける分析から設計・実装までの開発プロセス」
株式会社テクノロジックアート UMLモデリンググループ
グループリーダー シニアシステムコンサルタント
照井 康真

3.「SOAにおける分析から設計・実装までの実演(デモ)」
株式会社日立製作所 ソフトウェア事業部
第2AP基盤ソフト設計部
浜口 弘志

特に、1つ目の講演が興味深い内容だった。

大規模システムの構築経験はないけど、
今まで経験したシステム開発との共通部分が見えた。

また、今までは小規模のシステム構築だったため、
開発時の階層の考え方がよくわからなったのだが、多少ながら理解できた。
システム間データの情報連携パターンの話
 ・業務データ(大きい)
 ・制御データ(小さい)
今度の情報システムは後者での構築が理想。ただし、例外も存在する。

システム間の情報連携は、情報が少ない方がいい。
以前、構築したシステムも同様になるべく制御データでやり取りするように意識した覚えがある。
また、データ共有(DB)ができていれば、キー情報だけで制御可能なはず。

さらに、連携情報は以下の3つにパターン分けられる
   1.業務終了通知、指示情報
   2.次の業務の開始に必要な最低限の情報(キー情報)
   3.ビジネスプロセスの中で分岐などの判断となる情報

まだまだ、沢山重要なポイントはあるのだが、メモ程度にもう一つだけ書いておく。

モデリング専攻のため、気になった(自分の中で区別できていなかった)点
ある業務をモデル化する上でどのような分析・設計アプローチが良いのか。

システム開発におけるモデリングの階層 − 3つ
 ・ビジネスプロセスモデリング
   ・業務フロー、業務アクション、分岐ルール、ロールを明確にビジネスプロセスを定義
 ・業務(サービス)モデリング
   ・ビジネスプロセスの1つのアクションを構成する業務で必要となる機能の振る舞いを定義
 ・データモデリング
   ・業務機能で必要となる情報(データ)を整理し、情報の関連や流れなどを定義

さら、2の講演で、モデリングツールを使った分析の実際。3で、デモを交えて実演と続いた。

続きを読む »

Curlプログラミングにチャレンジ

リッチクライアント言語Curlなるものがあるらしいので、
ちょっと、試してみようと思う。

Curlの情報は「Curl Developer Center - Curl言語技術者向けサイト -

環境の準備は大きく以下の流れでいけそう
1、Curl RTE 実行環境のダウンロード
2、Curl RTE 実行環境のインストール
3、Curl IDE 開発環境のダウンロード
4、Curl IDE 開発環境のインストール


1、実行環境をダウンロード(上)
「Curl RTE(実行環境)のダウンロードはこちらから」




2、インストールガイドを見ながら、インストール
インストールガイド
特に、問題なし

スタート - すべてのプログラム - Curl RTE
が追加されていたので、インストールは正常の模様


3、開発環境のダウンロード
赤枠下のやつでダウンロードページへ
但し、ユーザ登録が必要、ユーザ登録をして早速ダウンロード



4、開発環境のインストール
Downloadしたファイルでインストール開始
問題なく、インストール完了

他にも、Curl開発支援ツール」があるみたいなので、その辺も追加したい。


まずは、チュートリアルから簡単に作れるみたいなやつを試してみる
通常アプレットと独立型アプレットの作成

このチュートリアルではの2つで構成されている。
Webサイトよりの引用

「通常アプレットの作成」
InternetExploreなどのブラウザ内に表示されます。
.curl 拡張子および text/vnd.curl MIME 型が使用されます。
ブラウザで表示されるため[戻る]ボタンや[進む]ボタンを押した場合は一時停止状態になります。
「独自アプレットの作成」
Curl独自ウィンドウとしてユーザーに表示されます。
.dcurl 拡張子および text/vnd.curl.dcurl MIME 型が使用されます。
デフォルトの View はないため個別に生成して表示する必要があります。
ブラウザで表示されるWebアプリケーションのように一時停止状態になることはありません。
終了するためにはexit を明示的に呼び出す必要があります。
起動する場合はURL の先頭で特別な curl://launch/ プレフィックスを使用する必要があります。

チュートリアル通りに実行して、その通りに結果がでてきました。
どちらのそれほど難しくはなかったですね。


言語の仕様がさっぱりなので、開発者ガイドを見ることにした。
Curl 開発者ガイド

エスケープシーケンス



引用:
* 行末のコメント: || と行の最後の間にあるテキストは、すべて単一行のコメントとして扱われます。
* 複数行のコメント: |# と #| 間のテキストは、すべてコメントとして扱われます。
* タグ付きコメント: |tag-name# と #tag-name| 間のテキストは、すべてコメントとして扱われます。
* 長さ指定のコメント: tag-name の代わりに、コメント内の文字数を使用して連続する任意の文字を囲むことができます。


引用:
* 式とは本質的に Curl 言語のコマンドです。
* たいていの式は { と } で囲まれます。
* 式が検出されるとそれが評価されます。
* RTE は、式の中の部分式をすべて左から右へ順番に評価していきます。
* ほとんどの式は値を生成します。
* トップレベルの式によって生成された値はブラウザに表示されます。
値の初期化には⇒let
  {let x = 13} || 値の初期化

値の変更には⇒set
  {set x = 15} || 値の変更

一通り眺めたので今日はこのあたりで終了

第5章 まずはスケジュールの閲覧

参考本 「はじめよう Ruby on Rails」

この本は、RoR 1.xを対象に書かれている。
RoRの最新版は、2.xなのでその辺を考慮して本を進めたときのメモを残しておく。

第5章の通りにやったら、うまくいかない。
色々調べて、以下の項目をやればよいことがわかった。

本ではこのようになっているのを
>ruby scrip/generate scaffold Schedule

下のように書き換える。
>ruby scrip/generate scaffold Schedule datetime:timestamp title:string content:text --skip-migration


もう一つがこちら。
色々なサイトでも取り上げられている問題点として、paginateがPlugin化されたことがあげられている。Rails2では、自分でインストールしないといけない。

以下の2つをやってとりあえず問題は解決しました。
但し、上のやつが必要なのかはわかりません。
>gem install will_paginate

>ruby script/plugin install http://tools.assembla.com/svn/breakout/breakout/vendor/plugins/classic_pagination/

そして、Controllerを以下のように書き直す。

@schedules = Schedule.paginate(:page => params[:schedules], :per_page => 10, :order => 'datetime DESC')

一応、これで動作するようになりました。

参考サイト
よしたんのぶろぐ scaffold ς paginate ς なんじゃそれ?
るな〜るの実験室
Ruby on Rails |  コメント(-)  |  トラックバック(-)
TOP

第10章 複数ユーザ対応(2)

参考本 「はじめよう Ruby on Rails」

この本は、RoR 1.xを対象に書かれている。
RoRの最新版は、2.xなのでその辺を考慮して本を進めたときのメモを残しておく。

「Step7 複数ユーザ対応(2)」
006-01 ユーザテーブルの作成
006-02 各グループに属するユーザの一覧を表示する機能の実装
006-03 ユーザを追加できる機能の実装
006-04 ユーザを編集する機能の実装
006-05 ユーザを削除 する機能の実装

第10章では、scaffold(CRUDを自動生成する機能)を利用せずに
前の章までに作成してきたコードを見ながら以下の作業をする章
・belongs_toとhas_manyを利用したモデル間のリレーションの設定
・collection_selectヘルパーメソッドを利用したプルダウンメ入力

Ruby on Railsの最新版では、色々と仕様が変わっている。
今回はscaffold機能を利用して一気に006-01〜05を完了させる。

コードカラー表示規則はこのようにする
:差分の部分
:追加部分
削除部分

この章からテーブル間のリレーション定義がある
・ユーザは1つのグループに所属する
・1つのグループにユーザは複数所属する
ってことなので、 グループ:ユーザ ⇒ 1対nの関係

ユーザから見た関係はこんな感じ
 ユーザA ⇒ グループA
 ユーザB ⇒ グループA
 ユーザC ⇒ グループB
 ユーザD ⇒ グループC

グループから見た関係はこんな感じ
 グループA ⇒ ユーザA、ユーザB
 グループB ⇒ ユーザC
 グループC ⇒ ユーザD


ユーザ管理テーブルの定義
フィールド名内容
idプライマリキーinteger
group_idグループidinteger
nameユーザ名string

まず、ユーザ管理テーブルの定義(雛形)
> ruby script/generate scaffold User group_id:integer name:string
      exists  app/models/
      exists  app/controllers/
      exists  app/helpers/
      create  app/views/users
      exists  app/views/layouts/
      exists  test/functional/
      exists  test/unit/
      create  app/views/users/index.html.erb
      create  app/views/users/show.html.erb
      create  app/views/users/new.html.erb
      create  app/views/users/edit.html.erb
      create  app/views/layouts/users.html.erb
   identical  public/stylesheets/scaffold.css
  dependency  model
      exists    app/models/
      exists    test/unit/
      exists    test/fixtures/
      create    app/models/user.rb
      create    test/unit/user_test.rb
      create    test/fixtures/users.yml
      exists    db/migrate
      create    db/migrate/005_create_users.rb
      create  app/controllers/users_controller.rb
      create  test/functional/users_controller_test.rb
      create  app/helpers/users_helper.rb
       route  map.resources :users
      exists    test/unit/
      exists    test/fixtures/
      create    app/models/group.rb
      create    test/unit/group_test.rb
      create    test/fixtures/groups.yml
      exists    db/migrate
      create    db/migrate/002_create_groups.rb
      create  app/controllers/groups_controller.rb
      create  test/functional/groups_controller_test.rb
      create  app/helpers/groups_helper.rb
       route  map.resources :groups


次に、各テーブル間のリレーションの定義をモデルに追加する。
app/models/user.rb
Class User < ActiveRecord::Base
  belongs_to(:group)
end
*ユーザから見ると、1つのグループに所属している。

app/models/group.rb
Class Group < ActiveRecord::Base
  has_many(:users)
end
*グループから見ると、複数のユーザが所属している。

テーブル間の関係が定義し終わったのでmigrateする。
(多分、modelを参照しないので、テーブル間定義よりも前にやっても大丈夫)
> rake db:migrate
(in C:/Program Files/ruby-1.8/service/diary)
== 3 CreateUsers: migrating ===================================================
-- create_table(:users)
   -> 0.0310s
== 3 CreateUsers: migrated (0.0310s) ==========================================
=========

一応、確認のためサーバ起動
ruby script/server

サーバにアクセス
http://localhost:3000/Users

動作確認は 「New user」せずに終了する
この後に色々弄るので、ココでユーザ追加すると後で問題になると予想

ここから、コードに手に修正を加える
app/views/gorups/index.html.erb 編集
<h1>グループ一覧</h1>

<table>
  <tr>
    <th>グループ名</th>
  </tr>
<hr />
<% for group in @groups %>
  <tr>
    <td><%=h group.name %></td>
    <td><%= link_to 'ユーザ一覧', :controller => 'users', :id => group%>
    <td><%= link_to '編集', edit_group_path(group) %></td>
    <td><%= link_to '削除', group, :confirm => '削除しますかς', :method => :delete %></td>
  </tr>
<% end %>
</table>

<br />

<%= link_to '新規グループの追加', new_group_path %>
グループ管理画面に、そのグループに所属しているユーザ一覧を表示するためのリンクを追加


Ruby on Rails2の場合、デフォルトで「list.rhtml」から「index.html.erb」に変更されている。
「app/views/account/list_user.rhtml」 ×本ではこちら
「app/views/users/inex.html.erb」    ●今回はこっち(本の手順どおりにやっていないためです)

app/views/users/inex.html.erbを編集する
<h1>ユーザ一覧(<%= h(@group.name) %>)</h1>
<hr />
<table>
  <tr>
    <th>名前</th>
  </tr>

<% for user in @users %>
  <tr>
    <td><%=h user.name %></td>
    <td><%= link_to '編集', edit_user_path(user) %></td>
    <td><%= link_to '削除', user, :confirm => '削除しますか?', :method => :delete %></td>
  </tr>
<% end %>
</table>

<br />

<%= link_to '新規ユーザの追加', new_user_path %>
<%= link_to '戻る', :controller => 'Groups' %>


Ruby on Rails2の場合、デフォルトで「list.rhtml」から「index.html.erb」に変更されている。
「app/controllers/account_controller.rb」 ×本ではこちら
「app/controllers/users_controller.rb」   ●今回はこっち(本の手順どおりじゃないから)

app/controllers/users_controller.rbを編集する
  def index
    @group = Group.find(params[:id])

#    gorup管理ページから得たグループIDを元にユーザを検索する
#    ただし、ユーザが0人だった場合、nillが返る
    @users = User.find(:all, :conditions => {:group_id => @group.id})


    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @users }
    end
  end

グループ内にユーザが一人もいない場合(nil)の処理を追加
app/views/users/inex.html.erbを編集する
<h1>ユーザ一覧(<%= h(@group.name) %>)</h1>
<hr />
<table>
  <tr>
    <th>Group</th>
    <th>
名前</th>
  </tr>

<% if @users != nil then %>
  <% for user in @users %>
    <tr>
      <td><%=h user.group_id %></td>
      <td><%=h user.name %></td>
      <td><%= link_to '
詳細', user %></td>
      <td><%= link_to '
編集', edit_user_path(user) %></td>
      <td><%= link_to '
削除', user, :confirm => '削除しますか?', :method => :delete %></td>
    </tr>
  <% end %>
<% end %>
</table>

<br />

<%= link_to '
新規ユーザの追加', new_user_path %>
<%= link_to '戻る', :controller => 'Groups' %>

新規登録画面の編集 - グループ名をプルダウンメニューで表示
app/views/users/new.html.erbの編集
<h1>新規ユーザの登録</h1>
<hr />
<%= error_messages_for :user %>

<% form_for(@user) do |f| %>
  <p>
    <b>グループ名</b><br />
    <%= collection_select(:user, :group_id, @groups, :id, :name) %>
  </p>

  <p>
    <b>名前</b><br />
    <%= f.text_field :name %>
  </p>

  <p>
    <%= f.submit "作成" %>
  </p>
<% end %>
<%= link_to '戻る', :controller => 'groups' %>

編集ページの日本語化とプルダウンメニュー化
app/views/users/edit.html.erbの編集
<h1>ユーザ編集</h1>
<hr/ >
<%= error_messages_for :user %>

<% form_for(@user) do |f| %>
  <p>
    <b>グループ名</b><br />
    <%= collection_select(:user, :group_id, @groups, :id, :name) %>
  </p>

  <p>
    <b>名前</b><br />
    <%= f.text_field :name %>
  </p>

  <p>
    <%= f.submit "更新" %>
  </p>
<% end %>

<%= link_to '戻る', :action => 'index', :id => @user.group %>

app/views/users/show.html.erbの編集
<p>
  <b>グループ名:</b>
  <%=h @user.group_id %>
</p>

<p>
  <b>名前:</b>
  <%=h @user.name %>
</p>

<%= link_to '編集', edit_user_path(@user) %> |
<%= link_to '戻る', :action => 'index', :id => @user.group %>

ビューに必要な情報の追加 - コントローラーの編集
app/controllers/users_controller.rbの編集
class UsersController < ApplicationController
(略)
  def new
    @user = User.new
    @groups = Group.find(:all)

    respond_to do |format|
      format.html # new.html.erb
      format.xml  { render :xml => @user }
    end
  end

  # GET /users/1/edit
  def edit
    @user = User.find(params[:id])
    @groups = Group.find(:all)
  end

  # DELETE /users/1
  # DELETE /users/1.xml
  def destroy
    @user = User.find(params[:id])
    @group_id = @user.group_id
    @user.destroy

    respond_to do |format|
      format.html { redirect_to :action => 'index', :id => @group_id }
      format.xml  { head :ok }
    end
  end
(略)
end

動作確認のためにサーバ起動
ruby script/server

これで、グループ管理とユーザ管理の連動終了
・belongs_toとhas_manyを利用したモデル間のリレーションの設定
・collection_selectヘルパーメソッドを利用したプルダウンメ入力
も完了

参考サイト
ActiveRecordのfindについて
Rails で行こう! - Ruby on Rails を学ぶ

Ruby on RailsによるWebアプリケーション・スーパーサンプルをRuby on Rails2で実装
kuginiのブログ

続きを読む »

Ruby on Rails |  コメント(-)  |  トラックバック(-)
TOP
« | 2008/05 | »
S M T W T F S
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31