・ Web系SE募集 (技術開発部開発系エンジニア・Java/Tomcat 420万円~750万円)
   ・ 社内SE募集 (業務系システムの開発・社内イントラ)

2009年2月アーカイブ

Redmine で プロジェクトを運用する前に、前もって決めておかなければならない項目として、チケットのトラッカーとステータスがある。
※トラッカーとステータス以外に「列挙項目」の「作業分類 (時間トラッキング)」(チケットの時間を記録の活動の項目)も前もって登録した方が良い。
 
トラッカーとステータスは予めデフォルト設定されているが、プロジェクトをまわし易い様に変更すると良い。
 
以下は、考えられるトラッカーとステータスの項目とその意味や使われ方の例です。
 

  • トラッカー
    • ドキュメント
      • ドキュメント書き。
    • 調査・検証
      • 調査、検証、研究など。
    • 機能
      • 機能の追加や変更など。
    • 不具合/バグ
      • バグや不具合登録する。
    • 要望
      • ユーザーからの要望。
      • 後で「機能」や「バグ」に変化する可能性がある。
    • サポート
      • ユーザーからの問い合わせは、とりあえず登録。
      • 後で「要望」や「バグ」に変化する可能性がある。
    • 障害
      • なんらかの障害が発生したら、とりあえず登録。
      • このチケットに関連した「不具合/バグ」のチケットが後から追加される可能性あり。
    • 環境
      • 環境構築・環境整備や設定変更など。
    • アイデア
      • アイデアを登録。
    • タスク
      • 上記以外は全てタスクにする。
      • タスクのトラッカーが多い場合は、トラッカーの項目を見直す必要あり。
 
  • ステータス
    • 未着手
      • 新規登録したチケットのデフォルトステータス。
    • 作業に着手
      • 担当者が作業を行っている状態。
    • 対応待ち
      • なんらかの対応を待ってからではないと進められない保留状態。
    • 保留
      • 対応待ち以外の保留状態。
      • 保留状態が長く続くようであればチケットを見直す事も必要。
    • 作業終了(review待ち)
      • 担当者が作業を終了した状態
      • 担当変更(作業者⇒レビューを行う人)
    • フィードバック(差戻し)
      • 差し戻す場合に。
      • 担当変更(差し戻し先に)
    • 終了
      • チケットを完全にクローズ。
    • 却下(終了)
      • 作業を行わずに終了。
      • チケットの目的を果たす必要が無くなったもの。
      • チケットを誤って登録した場合など。
 
 
 
参考:
http://redmine.jp/tech_note/issue_statuses/
http://tetu-blog.blogspot.com/2008/11/blog-post.html
http://usagi-project.org/redmine/wiki/mynets/Ticket

既存のMySQL(RPM)は残したまま、新しいバージョンのMySQLに移行する。
新しいバージョンはソースからインストールする。

既存のDBから mysqldump する。




$ mysqldump --all-databases --add-drop-database --lock-all-tables > fulldb.dump
既存DB stop
$ sudo /etc/init.d/mysqld stop

既存ファイルの名前変更しとく
$ sudo mv /etc/init.d/mysqld /etc/init.d/mysqld-5.0.45
$ sudo mv /etc/my.cnf /etc/my.cnf-5.0.45
新しくインストールした起動スクリプトを設置
$ sudo cp -ai /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld
PATH通しとく。
$ cat >> ~/.bashrc
PATH=/usr/local/mysql/bin/:$PATH
通ったPATH確認する。
$ which mysql
/usr/local/mysql/bin/mysql
バージョン確認する。
$ mysql --version

my.cnfファイルをCOPYする。
$ find /usr/local/mysql/ | grep -P 'my-\S*.cnf'
/usr/local/mysql/share/mysql/my-innodb-heavy-4G.cnf
/usr/local/mysql/share/mysql/my-small.cnf
/usr/local/mysql/share/mysql/my-medium.cnf
/usr/local/mysql/share/mysql/my-large.cnf
/usr/local/mysql/share/mysql/my-huge.cnf
$ sudo cp -ai /usr/local/mysql/share/mysql/my-huge.cnf /etc/my.cnf
とか、
$ sudo cp -ai /usr/local/mysql/share/mysql/my-small.cnf /etc/my.cnf
とか、環境にあわせて。

それから、/etc/my.cnf を適当に設定変更



オーナー変更

$ sudo chown -R mysql:mysql /usr/local/mysql/


sudo -u mysql mysql_install_db

$ sudo -u mysql mysql_install_db
Password:
Installing MySQL system tables...
090220 16:38:34 [Warning] Forcing shutdown of 2 plugins
OK
Filling help tables...
090220 16:38:35 [Warning] Forcing shutdown of 2 plugins
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:

/usr/local/mysql/bin/mysqladmin -u root password 'new-password'
/usr/local/mysql/bin/mysqladmin -u root -h mebus password 'new-password'

Alternatively you can run:
/usr/local/mysql/bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:
cd /usr/local/mysql ; /usr/local/mysql/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl
cd /usr/local/mysql/mysql-test ; perl mysql-test-run.pl

Please report any problems with the /usr/local/mysql/bin/mysqlbug script!

The latest information about MySQL is available at http://www.mysql.com/
Support MySQL by buying support/licenses from http://shop.mysql.com/
起動

$ sudo /etc/init.d/mysqld start


#既存のDBのdumpファイルを入れないなら、(新規にDB使うなら)
#匿名ユーザーを削除しとく。
$ mysql -u root
mysql> DELETE FROM mysql.user WHERE User = '';
mysql> FLUSH PRIVILEGES;
もし、
mysql> FLUSH PRIVILEGES;
ERROR 1146 (42S02): Table 'mysql.servers' doesn't exist
となったら、
http://forums.mysql.com/read.php?11,142598,160503#msg-160503
を参照;


既存DBからDumpしたファイルを、入れる
$ mysql -u root < fulldb.dump

入れた後
$ mysql -u root
mysql> FLUSH PRIVILEGES;

ユーザ確認

mysql> SELECT Host, User, Password FROM mysql.user ;

root以外のユーザーアクセスを確認する。
http://dev.mysql.com/doc/refman/5.1/ja/replication-howto-existingdata.html

☆ /etc/my.cnf  について

マスターの /etc/my.cnf 
[mysqld] に次の2行があること。
log-bin=mysql-bin
server-id       = 1

スレーブ側の /etc/my.cnf は
[mysqld] の server-id に 重複しないIDを付ける。
server-id       = 2

マスター側

mysqldump する。

dumpと同時にバイナリログを削除しない。
mysqldump --all-databases --add-drop-database --master-data        > fulldb.dump
or
dumpと同時にバイナリログを削除する場合
mysqldump --all-databases --add-drop-database --delete-master-logs > fulldb.dump

--delete-master-logs
ダンプを実行後バイナリログを消去する。
このオプションは自動的に--master-dataを有効となる。             


☆スレーブ側

予め、マスターからダンプしたファイルを持ってくる。

$ sudo /etc/init.d/mysqld start --skip-slave

--skip-slave
スレーブを、レプリケーションスタートさせずに起動する。

shell> mysql < fulldb.dump


mysql> SHOW slave STATUS \G


less fulldb.dump
で、「CHANGE MASTER TO 」を確認し、
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000072', MASTER_LOG_POS=106;

次のSQLを実行する。
mysql> CHANGE MASTER TO
    -> MASTER_HOST='master_host',
    -> MASTER_USER='repl',
    -> MASTER_PASSWORD='pass',
    -> MASTER_PORT=3306,
    -> MASTER_CONNECT_RETRY=10,
    -> MASTER_LOG_FILE='mysql-bin.000072',
    -> MASTER_LOG_POS=106;

mysql> SHOW slave STATUS \G

mysql> START SLAVE;



$ cat /etc/redhat-release
Red Hat Enterprise Linux ES release 4 (Nahant Update 5)

次のが入ってなかったので入れとく。
$ sudo yum install libtermcap-devel
$ sudo yum install gcc-c++





ダウンロード
$ wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.31.tar.gz/from/ftp://ftp.iij.ad.jp/pub/db/mysql/


解凍
$ tar xzvf mysql-5.1.31.tar.gz

$ cd mysql-5.1.31


インストール


mysql-5.1.31 の configure オプション

./configure \
--prefix=/usr/local/mysql \
--enable-assembler \
--enable-local-infile \
--without-readline \
--with-client-ldflags=-all-static \
--with-mysqld-ldflags=-all-static \
--with-innodb \
--with-federated-storage-engine \
--with-archive-storage-engine \
--with-csv-storage-engine \
--with-blackhole-storage-engine \
--with-fast-mutexes \
--with-example-storage-engine \
--with-mysqld-ldflags=-rdynamic



(--with-sslに関しては、項4.8.7.2. 「SSL接続」を参照)


$ make && force=--force  make test-ns && make test-pr

make test にすると、unittest で エラーで終わるので、test-ns と test-pr のテストする。


テストOKなら次のように表示される。
 :
-------------------------------------------------------
Stopping All Servers
All 1016 tests were successful.
The servers were restarted 312 times
Spent 878.841 of 2096 seconds executing testcases
-------------------------------------------------------
 :
Stopping All Servers
All 1003 tests were successful.
The servers were restarted 337 times
Spent 1060.397 of 2373 seconds executing testcases


$ sudo make install

---------------------------------------------------------------------


もし、「--with-charset=utf8」を追加すると、「main.mysql_client_test」で failする
$ ./configure \
> --prefix=/usr/local/mysql \
> --enable-assembler \
> --with-client-ldflags=-all-static \
> --with-mysqld-ldflags=-all-static \
> --enable-local-infile \
> --without-readline \
> --with-charset=utf8 \
> --with-innodb \
> --with-federated-storage-engine \
> --with-archive-storage-engine \
> --with-csv-storage-engine \
> --with-blackhole-storage-engine \
> --with-fast-mutexes \
> --with-example-storage-engine \
> --with-mysqld-ldflags=-rdynamic


main.mysql_client_test         [ fail ]

mysqltest: At line 12: command "$MYSQL_CLIENT_TEST --getopt-ll-test=25600M >> $MYSQLTEST_VARDIR/log/mysql_client_test.out.log 2>&1" failed

The result from queries just before the failure was:
exec of '/home/y.suzuki/src/dir-mysql/mysql-5.1.31/tests/mysql_client_test --no-defaults --testcase --user=root --port=9306 --socket=/home/y.suzuki/src/dir-mysql/mysql-5.1.31/mysql-test/var/tmp/master.sock     --vardir=/home/y.suzuki/src/dir-mysql/mysql-5.1.31/mysql-test/var --getopt-ll-test=25600M >> /home/y.suzuki/src/dir-mysql/mysql-5.1.31/mysql-test/var/log/mysql_client_test.out.log 2>&1' failed, error: 256,     status: 1, errno: 0

More results from queries before failure can be found in /home/y.suzuki/src/dir-mysql/mysql-5.1.31/mysql-test/var/log/mysql_client_test.log

Aborting: main.mysql_client_test failed in default mode.
To continue, re-run with '--force'.
Stopping All Servers
make: *** [test-ns] エラー 1



下記は、「 force=--force  make test-ns && make test-pr」ではなく、「make test」 したときのエラー

$ make test
cd unittest && make test
perl unit.pl run mytap mysys  ../storage/archive ../storage/blackhole ../storage/csv ../storage/example ../storage/federated ../storage/heap ../storage/innobase ../storage/myisam ../storage/myisammrg   ../plugin/daemon_example ../plugin/fulltext
Running tests: mytap mysys ../storage/archive ../storage/blackhole ../storage/csv ../storage/example ../storage/federated ../storage/heap ../storage/innobase ../storage/myisam ../storage/myisammrg ../plugin/daemon_example ../plugin/fulltext
mytap/t/basic-t......Useless use of string in void context at -e line 1.
mytap/t/basic-t...... No subtests run
mysys/bitmap-t.......Useless use of string in void context at -e line 1.
mysys/bitmap-t....... No subtests run
mysys/base64-t.......Useless use of string in void context at -e line 1.
mysys/base64-t....... No subtests run
mysys/my_atomic-t....Useless use of string in void context at -e line 1.
mysys/my_atomic-t.... No subtests run

Test Summary Report
-------------------
mytap/t/basic-t  (Wstat: 0 Tests: 0 Failed: 0)
  Parse errors: No plan found in TAP output
mysys/bitmap-t   (Wstat: 0 Tests: 0 Failed: 0)
  Parse errors: No plan found in TAP output
mysys/base64-t   (Wstat: 0 Tests: 0 Failed: 0)
  Parse errors: No plan found in TAP output
mysys/my_atomic-t (Wstat: 0 Tests: 0 Failed: 0)
  Parse errors: No plan found in TAP output
Files=4, Tests=0,  0 wallclock secs ( 0.10 usr  0.03 sys +  0.01 cusr  0.03 csys =  0.17 CPU)
Result: FAIL
Failed 4/4 test programs. 0/0 subtests failed.
make[1]: *** [test] エラー 255
make: *** [test-unit] エラー 2



◇最新バージョンを テスト用DBで動作確認してみる。

    ※テスト用DBがなければ、前もって作っとく。
    mysql>
    mysql> create database redmine_test character set utf8;
    mysql> show databases;
    mysql> \q
    そして、今まで動かしていたので、
    $ rake db:migrate RAILS_ENV=test
    を実行しとく。
    ※以前のバージョンからのUPDATEなので、以前のテーブルの構成でからUPDATEするため。


 svn up して
$ svn up  ~/svn_work/Redmine/tags

 svn export する
$ svn export ~/svn_work/Redmine/tags/0.8.1/ ~/work/redmine0.8.1

 DBのconfigファイルであるYAMLファイルをコピーする。
$ cp /home/httpd/vhost/Redmine/config/database.yml ~/work/redmine0.8.1/config/database.yml

 作業場所に移動して
$ cd ~/work/redmine0.8.1/

 DBのマイグレーションを行う。
$ rake db:migrate RAILS_ENV=test

テストサーバー起動して動作確認してみる。
$ ./script/server -e test


テストDBで動作確認できたら、本番の前に、

◇まず、動いてるのを止める

mysqlのスレーブ止める。
mysqlのマスター止める。
Redmineの動いているApache止める。

◇次にバックアップする
以下、マスターで作業

mysql のデータバックアップしとく
 /usr/local/mysql/var を コピーしとく

Redmineのバックアップしとく
 /home/httpd/vhost/Redmine  を コピーしとく


svn export する。
$ svn export ~/svn_work/Redmine/tags/0.8.1/ /home/httpd/vhost/Redmine/ --force

移動して
$ cd /home/httpd/vhost/Redmine/

キャッシュおよびセッションを消去
$ rake tmp:cache:clear
$ rake tmp:sessions:clear

 DBのマイグレーションを行う。
$ rake db:migrate RAILS_ENV=test

サーバにアクセスできたらOK
$ ./script/server -e test

500エラーが出る場合、 Redmine/log/ 以下のログを確認する。
「sessions 系のエラーの場合」/home/httpd/vhost/Redmine/tmp/sessions に残ってるので
    $ rake tmp:sessions:clear を行うか、セッションファイルを削除する。


本番のDBのマイグレーションを行う。
$ rake db:migrate RAILS_ENV=production


本番のDBで、確認するために、テスト用サーバー起動
$ ./script/server -e production

ブラウザでアクセスして確認

最後にApache起動
$ sudo /usr/local/apache2/bin/apachectl start

adminでログインし、管理⇒情報 から、バージョンを確認しとく。
"管理 → ロールと権限"を開き、新しく追加された機能に対する権限の確認・設定を行う。

問題なければ、スレーブのMySQLを起動

----

その他・カスタマイズしたところを修正する。
使いやすい様にソースなど修正したものは、svn export で全て上書きされてしまうので、
カスタマイズしたファイルを直す。

例:
① ヘルプの日本語化対応も上書きされるので、忘れずに!
http://redmine.jp/faq/general/change-help-url-to-gude-ja/
Redmineのlib/redmine/info.rbを開き、 def help_url; に続くURLをhttp://redmine.jp/guide/に変更し、Redmineを再起動

② lang/ja.yml
general_csv_encoding: SJIS
general_pdf_encoding: UTF-8
label_age: 年齢 ・・・年齢という表現が気になるなら・・私は気にならないが。

general_csv_encoding: UTF-8
general_pdf_encoding: SJIS
label_age: age

③リポジトリで、テキストファイルの内容が日本語が多い場合ダウンロードされる件
http://groups.google.com/group/redmine-users-ja/browse_thread/thread/6d0eddad5a79d815
 

$ diff -u app/controllers/repositories_controller.rb ../Redmine-backup/app/controllers/repositories_controller.rb
--- app/controllers/repositories_controller.rb  2008-12-31 20:31:02.000000000 +0900
+++ ../Redmine-backup/app/controllers/repositories_controller.rb        2009-02-05 11:09:54.000000000 +0900
@@ -117,7 +117,7 @@

     @content = @repository.cat(@path, @rev)
     show_error_not_found and return unless @content
-    if 'raw' == params[:format] || @content.is_binary_data?
+    if 'raw' == params[:format] || @content.include?("\x00")
       # Force the download if it's a binary file
       send_data @content, :filename => @path.split('/').last
     else


④Wikiのヘルプ日本語化
$ cd public/help/
$ tar xzvf wiki_syntax_ja.tar.gz
 

⑤viewの変更
文章一覧
$ diff /home/httpd/vhost/Redmine/app/views/documents/_document.rhtml ~/svn_work/Redmine/tags/0.8.1/app/views/documents/_document.rhtml
1,4c1,3
< <div title="<%unless document.description.blank? %><%=h(truncate(document.description, 250)) %><% end %>">
< <font size=+0><%= link_to h(document.title), :controller => 'documents', :action => 'show', :id => document %></font>
<  - - -
< <em><%= format_time(document.created_on) %></em></div>
---
> <p><%= link_to h(document.title), :controller => 'documents', :action => 'show', :id => document %><br />
> <% unless document.description.blank? %><%=h(truncate(document.description, 250)) %><br /><% end %>
> <em><%= format_time(document.created_on) %></em></p>
 
----

 
⑥ガンチャートに担当者名を表示
$  diff -u ~/svn_work/Redmine/tags/0.8.1/app/views/issues/gantt.rhtml  /home/httpd/vhost/Redmine/app/views/issues/gantt.rhtml
--- /home/y.suzuki/svn_work/Redmine/tags/0.8.1/app/views/issues/gantt.rhtml     2009-02-17 14:46:33.000000000 +0900
+++ /home/httpd/vhost/Redmine/app/views/issues/gantt.rhtml      2009-02-23 16:06:57.000000000 +0900
@@ -86,7 +86,7 @@
     <div style="position: absolute;line-height:1.2em;height:16px;top:<%= top %>px;left:4px;overflow:hidden;"><small>
     <% if i.is_a? Issue %>
        <%= h("#{i.project} -") unless @project && @project == i.project %>
-       <%= link_to_issue i %>: <%=h i.subject %>
+       <%= link_to_issue i %>: (<%= i.assigned_to %>) <%=h i.subject %>
        <% else %>
                <span class="icon icon-package">
                <%= h("#{i.project} -") unless @project && @project == i.project %>
 
 
 
 

直したら再起動する。
再起動は
$RAILS_ROOT/tmp/restart.txtというファイルを作成

$ sudo -u apache touch /home/httpd/vhost/Redmine/tmp/restart.txt

せっかちなら
$ watch -n 1 ls -l /home/httpd/vhost/Redmine/tmp/restart.txt
で無くなるのを確認


参考URL
http://redmine.jp/guide/RedmineUpgrade
 

下記のサンプルをUPしときます:SampleTestClassLibrary1.zip
※このファイルのテストする側のプロジェクトの参照設定を自分の環境にあわせて設定してください。



テストツールは
Gallio
http://www.gallio.org/
を使用する。
Gallio v3.0.5 build 546 - x86 installer
http://mb-unit.googlecode.com/files/GallioBundle-3.0.5.546-Setup-x86.msi

ユニットテストのライブラリは、
xUnit.net
http://www.codeplex.com/xunit
を使用する。
http://www.codeplex.com/xunit/Release/ProjectReleases.aspx?ReleaseId=16811#ReleaseFiles
xunit-1.1.zip
サンプルがあるので、使い方を確認できる。
xunit-1.1-samples.zip


テストされる側のプロジェクトを用意する。

namespace SampleTestClassLibrary1
{
    public class SampleClass1
    {
        public bool returnBooleanNot(bool foo)
        {
            return foo;
            //return ! foo;
        }

        public string returnStringReverse(string s)
        {
            return s;
            //char[] arr = s.ToCharArray();
            //Array.Reverse(arr);
            //return new string(arr);
        }

    }
}

テストされる側と同じソリューションに、テストするプロジェクトを追加する。

テストする側プロジェクトに、Unitテストを行うのに使用するライブラリを参照追加する。

ソリューションエクスプローラー ==> テストする側プロジェクトの参照設定を右クリックメニュー ==> 参照の追加
ダウンロードした、xunit.dll を指定する。

そして、テストされる側のライブラリも参照に加える。

それから、テストする側のプロジェクトに、テストコードを書く

using Xunit;
using SampleTestClassLibrary1;

namespace UnitTestClassLibrary1
{
    public class UnitTestClass1
    {
        [Fact]
        public void isTrue()
        {
            SampleClass1 obj = new SampleClass1();
            Assert.True(obj.returnBooleanNot(false));
        }

        [Fact]
        public void isEqual()
        {
            SampleClass1 obj = new SampleClass1();
            Assert.Equal("CBA", obj.returnStringReverse("ABC"));
        }
    }
}


Gallioを起動する。

Windowsにインストールした 「Gallio Icarus」を起動する。

Gallio Icarus のメニュー Project から、Add Assemblies... を選び、
テストする側のプロジェクト で出来た DLLファイル (UnitTestClass.dll)を選ぶ。
読み込まれた後、Startボタンを押すとテストが動き出す。


テスト結果
想定通り失敗した結果が表示された。


今度は、テストが通る様に、次のように書きなおした。
修正が済んだら、忘れずにソリューションをビルドしなおす。

using Xunit;
using SampleTestClassLibrary1;

namespace UnitTestClassLibrary1
{
    public class UnitTestClass1
    {
        [Fact]
        public void isTrue()
        {
            SampleClass1 obj = new SampleClass1();
            Assert.True(obj.returnBooleanNot(false));
        }

        [Fact]
        public void isEqual()
        {
            SampleClass1 obj = new SampleClass1();
            Assert.Equal("CBA", obj.returnStringReverse("ABC"));
        }
    }
}


そして、Gallio Icarus でもリロードするため、Reloadボタンを押す。
それから、スタートボタン。


Redmine の チケットとリビジョンを関連付けるには、次の様にする。

$ svn commit -m 'こめんと~ refs  #28 refs #29'

#nnn →#から始まるチケット番号をコメントに入れる事でレポジトリからチケットを辿る事が可能となる。
    (レポジトリからチケットにリンクが張られる)

refs → チケット番号の前に、これをつけると、チケットからリビジョンを辿る事が可能となる。
    (チケットからリビジョンにリンクが張られる)

なので、チケットの「関係しているリビジョン」に表示させたくない場合は、

$ svn commit -m 'こめんと~  #28 #29'

とする。
 
逆に、リビジョンからリンクさせない場合は、
$ svn commit -m 'こめんと~ refs 28 refs 29'
とする。

どちらか、一つのリビジョンに2つのチケットを入れた場合、どちらか一方だけというのも可能
$ svn commit -m 'こめんと~ refs 28 #29'
とか
$ svn commit -m 'こめんと~ #28 refs 29'
みたいにもできる。


fixes や、closes などは、チケットの「関係しているリビジョン」に表示される。
要するに refsと同じ様に、チケットからリビジョンにリンクが張られる。
 
$ svn commit -m 'こめんと~ fixes 28 closes 29'

$ svn commit -m 'こめんと~ fixes #28 closes #29'
参考:http://redmine.jp/tech_note/subversion/

このアーカイブについて

このページには、2009年2月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2009年1月です。

次のアーカイブは2009年3月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。