blog::tani.masaru

Webなどに関するNewsやTipsなどを書き綴るBlog

最後にこのblogdのデザインテンプレートを変えてのはいつだっけ?

あれから、ずっと触っていないし、久しぶりにHTMLでも書いてみようかな。

3連休はそうしよう。

Windowsではファイル名として「.」ピリオドで終わるファイル名は許されていない。しかし、Macとかではそういうファイル名もOK。問題はMacなどで作成したそうしたファイルをアーカイブにしてWindowsに転送し展開するとWindows上に本来許されていない「.」ピリオド終わりのファイル名が生成されてしまう。

そして、そのファイルを普通に削除しようとしたりするとファイルを削除できません。送り側のファイルまたはディスクから読み取れませんと表示される。また移動プロファイルの場合に、プロファイル領域にそのようなファイルがあるとファイルのコピーができずにサーバにユーザープロファイルがコピーできない。

そこで、そのようなファイルをコマンドプロンプトから削除する。そのコマンドがこれ。


# del /A:- "\\?\C:\Document and Settings\username\Desktop\filename."

元記事:光市母子殺害事件、弁護団が再審請求方針 : 社会 : YOMIURI ONLINE(読売新聞)より

山口県光市の母子殺害事件で、殺人や強姦(ごうかん)致死などの罪に問われ、3月に死刑が確定した元会社員大月(旧姓・福田)孝行死刑囚(31)の弁護団は26日、東京都内で報告会を開き、10月にも広島高裁に裁判のやり直しを求める再審を請求する方針を明らかにした。

報告によると、8月に弁護団会議を開き、請求時期など詳細を詰める予定。新証拠として、法医学者や心理学者の鑑定結果などを検討しているという。再審請求について、大月死刑囚は「事件が何だったのかを明らかにし、生きて償っていくことが本当の務めだ」と話しているという。

いったい何を裁判で明らかにする必要があるのだろうか。事件の詳細は正直どちらでもいいのではないか。犯人が罪を犯したことを認めて、遺族が死刑を望み、司法が死刑を決めた以上、なぜ生きて償っていくことが本当の務めなのだろうか。一刻も早く死ぬことこそが努めだろう。

こうして法律の仕組みを悪用し生き長らえ、人を殺すだけでなく遺族を更に傷つけるようなことが許されるのであれば、本当に日本という国はおかしい。

パソコンを新しいものに交換し古いパソコンを廃棄する際には、そのハードディスクの内容を完全に消去しておいた方がいい。単にフォーマットを掛けるだけだと不安が残る。そこでハードディスクの内容を完全に消去するためにハードディスク全体に「0」とか「1」を何度か書き込みたい。

そこで登場するのが、専用のLinuxディストリビューション「DBAN(Darik's Boot And Nuke)」。ISOイメージが配布されているので、ここからCDを作成し起動する。bootの部分で消去方法を入力すると、それだけでハードディスクの消去が始まる。非常に簡単、そして便利。

...だが、しかし....実際に使ってみると古いパソコンで起動しない。CDを投入し起動すると起動画面の途中で「PCI (sysfs)」という表示で起動が止まる。調べてみると同様の症状は多く報告(ブログ記事, フォーラム)されているが、どうも簡単な解決策はないようである。

で、あれば取りあえずのものを自作する。方法としては「Windows PE」を利用し起動ディスクを作成し、その中で消去プログラムを実行させる。Windows PEでの起動ディスクの作り方は前にエントリーした記事を参考にする。

まず、「startnet.cmd」の中に消去用のバッチプログラムを呼び出すようにし起動後、自動的にハードディスクの消去が始まるようにする。

wpeutile
disk-wipe.bat

ハードディスク消去のバッチプログラムを作成する。ディスク消去に使用するコマンドは「Cipher.exe」。Windowsに標準で搭載されているNTFSでフォーマットされた空き領域を3回上書き(0x00, 0xff, 乱数)するコマンドを使用する。消去方法は「米国防総省準拠方式(DoD5220.22-M)」の検証がないものと同じなので十分な強度は持っているだろう。不安であれば、このコマンドを何回か繰り返せばOK。注意点としては、Windowsに標準で搭載はされているがWindows PEには搭載されていないので予めコピーしておく必要があるということ。

「Cipher.exe」自体はNTFSフォーマットの空き領域を対象としているために、まずハードディスク全体をNTFSフォーマットの空き領域にする必要がある。そこでまず「Diskpart」コマンドを使いハードディスクをフォーマットしなおす。

#  diskpart
DISKPART> select disk 0
DISKPART> clean
DISKPART> create partition primary
DISKPART> format fs=ntfs quick
DISKPART> assign letter=c

実際には上記のdiskpartでの処理をスクリプトにしてバッチから直接渡すようにする。最終的なバッチはこんな感じ。

@echo off

echo ディスクの消去を開始
dikspart /s diskpartScript.txt
cipher.exe /w:C:
echo ディスクの消去が終了
echo.
echo CDを取り出した後に何かキーを押してください。終了します。
pause > NUL

wpeutil shutdown

今日から対応可能になったということで、さっそく会社のiPhoneのezwebメールをフェッチからプッシュに変更してみる。変更方法は下記の通り。

  1. Wi-Fiを無効にする
  2. 「メッセージ」で宛先[#5000]に対して[1234]というショートメッセージを送る
  3. メール設定用URLが自動的に返信されるので、クリックする
  4. 「Eメール利用設定(リアルタイム受信設定)」を設定する
  5. メールアドレスの変更はないので「メールアカウント自動設定を行う」をクリック
  6. プロファイルをインストールする

これで、とりあえずはメールのプッシュ配信に対応が可能になる。しかし、メールを開くとezwebのアカウントが2つ表示されている形になっている。この原因は[設定]>[一般]>[プロファイル]を確認すると分かるが、フェッチ用のプロファイルとプッシュ用のプロファイルの2つがあるためである。どうやら、いままでフェッチで受信したメールはプッシュ用のプロファイルには移行されないらしい。で、今回はフェッチ用のプロファイルはきれいさっぱり削除し過去メールも削除した。

端末導入時にAdobe Readerはマスターイメージに組み込んでいるが、Acrobatに関しては必要な端末にだけ個別インストールを行っていく。具体的にはAcrobat 9。しかし、Adobeから提供されているのはAcrobat9.0のインストールパッケージと、そのあと9.1〜9.5までのアップデートプログラムだけ。なおかつ、面倒なのはアップデートプログラムは下から順番に入れていかないとダメということ。

もう少し親切なら最新版のインストールパッケージがあればいいんだけど、それはない。Adobeから適用されているのは下記のようなコマンドラインだけ。

参照URL
コマンドラインからアプリケーションおよびクォータリーアップデートをインストールする方法(Windows 版 Acrobat 9/Adobe Reader 9)

仕方がないので、共有フォルダ上にインストールパッケージとアップデートプログラムを同一フォルダ上に配置し、バッチプログラムで一括インストールする。

@echo off

NET USE P: "\\<ComputerName>\<SharedFolderName>\Acrobat9.X_all"

P:\msiexec.exe /i P:\acrostan.msi patch=P:\AcroProStdUpd910_T1T2_incr.msp;P:\AcrobatUpd911_all_incr.msp;P:\AcrobatUpd912_all_incr.msp;P:\AcrobatUpd913_all_incr.msp;P:\AcrobatUpd920_all_incr.msp;P:\AcrobatUpd930_all_incr.msp;P:\AcrobatUpd931_all_incr.msp;P:\AcrobatUpd932_all_incr.msp;P:\AcrobatUpd933_all_incr.msp;P:\AcrobatUpd934_all_incr.msp;P:\AcrobatUpd940_all_incr.msp;P:\AcrobatUpd941_all_incr.msp;P:\AcrobatUpd942_all_incr.msp;P:\AcrobatUpd943_all_incr.msp;P:\AcrobatUpd944_all_incr.msp;P:\AcrobatUpd945_all_incr.msp;P:\AcrobatUpd946_all_incr.msp;P:\AcrobatUpd950_all_incr.msp;

NET USE P: /delete

本店と遠隔の拠点とがVPNで接続されており、本店側にドメイン・コントローラがあるとする。そして拠点側のクライアントがドメインに参加した際に、非常にログインに時間がかかる場合がある。またコマンドプロンプトから「gpupdate /force」コマンドを実行した際にも非常に時間がかかる場合がある。

イベントビューアでログを確認すると下記のようなログが見つかる。

イベント ID : 1054
ソース : Userenv
種類 : エラー
説明 :
コンピュータ ネットワークのためのドメイン コントローラ名を取得できません (指定されたドメインがないか、またはアクセスできません)。グループ ポリシーの処理は中止されました。 

まず疑う場所としてはエラーの内容通りネットワークのDNSの設定が間違っていてドメインコントローラ名が取得できないのかと思い確認するが間違っていない。コマンドプロンプトから「nslookup」コマンドを用いてドメイン名を引くとドメインコントローラのIPが返ってくる。

そこで色々と調べていると、原因としては下記の2つの可能性によりドメインコントローラとの間の通信がタイムアウトしていることが考えられる。

  • Kerberos認証において通常はUDPで通信を行うが、それがVPN環境で欠落する可能性があること
  • グループポリシーの適用前にドメインコントローラに対して回線速度を決定するためにpingを実行するが、そのバッファサイズが2048byteのためVPNルータ側で破棄されている可能性があること

そこで対応方法として下記のような設定を行う。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters]
"MaxPacketSize"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
"GpNetworkStartTimeoutPolicyValue"=dword:0000003C
"PingBufferSize"=dword:00000400

この状態で再度コマンドプロンプトから「gpupdate /force」を実行するとグループポリシーの適用が非常に快適に行われた。

参考URL
Kerberos が UDP ではなく TCP を使用するを強制する方法
ネットワーク ICMP ポリシーのグループ ポリシーが適用されません。

最近は雑用が多くてあまり調べ物をする機会がなかったので、非常にBlogの更新が滞っていたが、久しぶりに備忘録として記事を書く。

サーバの名称をどのようにするのかと考えた場合に、主に2つの方法がある。

  • サーバの機能を名称とする(app01, db01, dev01,...)
  • サービス名や製品名を名称とする(blog01, wiki01,...)

更にいうと、この2つを組み合わせた場合もいいのだが、1つのサーバに複数のサービスが動く場合を考える前者の方が望ましいと思われる。

で、Windowsサーバでもそのような命名ルールに基づいたサーバ名を名づけたのだが、そのサーバに搭載している製品によってはWindows共有を使ってクライアントからサーバにアクセスさせる場合がある。しかし、その場合には前者の命名方法だと非常に分かりづらい。製品を利用するうえで必要な場合なのだから製品名などを利用してアクセスさせたい。

そこで容易に思いつく解決策として、Webの場合のようにAレコードには前者の命名法で名づけたサーバ名を登録し、そのサーバ上で動作する製品名やサービス名をCNAMEレコードとして登録し、どちらでもアクセスできるようにすればいいのではないかということ。しかし、実際に行ってみるとうまく動作しない。

pingはちゃんと到達するのに、Explorer上で「\\<CNAMEのホスト名>\<共有フォルダ名>」でアクセスしてもサーバが見つからないといわれる。回避策としては、サーバ上のレジストリに下記のDWORDを追加しサーバを再起動する。

キー:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\lanmanserver\parameters
DWORD:DisableStrictNameChecking=1

思いのほか簡単なことだが、これで解決できるようになる。

2011年は忙しくなったことを言い訳にしてブログの更新は滞っていました。しかし、ZabbixのことやWindowsPEのこととか、まとめておけば役に立つことも多く知りました。2012年は早い段階でこれらのことをまとめ、更に新しいことを色々と学んでいければいいなと思います。

しかし自重自戒に徹し、もう二度と病気になったり体調を崩すことがないように、平穏無事に1年が過ごせるように、それが出来る自信を持てるような一年にしたいと思います。

昨日の夜は寒い中コードを着込んで、ベランダに出て夜空を眺めていました。時折、雲が出てきて見えなかったりもしましたが、なんとか欠け始めから皆既月食まで一通りを見ることが出来ました。

ログの収集を行っていく中で、大きなネックになったのがログを如何に集めるかではなく、ログを如何に出力するか。ログをOSのイベントログの形でも良いしsyslogでも、ファイルでも出力さえ出来れば後はフォーマットの成形だけで大した話ではない。というわけで、その中でも一番分からなかった、Oracleの監査設定とかについてまとめる。

まず監査設定を変更する。

SQL> alter system set audit_trail=OS scope=spfile;
SQL> alter system set audit_sys_operations=TRUE;

変更を有効にするためにOralceのインスタンスを再起動する。

SQL > shutdown immediate
SQL > startup

監査設定を確認する。

SQL> show parameters audit;

監査項目を設定する。取りあえず全部。

SQL> audit CREATE SESSION BY ACCESS;
SQL> audit CLUSTER BY ACCESS;
SQL> audit CONTEXT BY ACCESS;
SQL> audit DATABASE LINK BY ACCESS;
SQL> audit DIMENSION BY ACCESS;
SQL> audit DIRECTORY BY ACCESS;
SQL> audit INDEX BY ACCESS;
SQL> audit MATERIALIZED VIEW BY ACCESS;
SQL> audit NOT EXISTS BY ACCESS;
SQL> audit PROCEDURE BY ACCESS;
SQL> audit PROFILE BY ACCESS;
SQL> audit PUBLIC DATABASE LINK BY ACCESS;
SQL> audit PUBLIC SYNONYM BY ACCESS;
SQL> audit ROLE BY ACCESS;
SQL> audit ROLLBACK SEGMENT BY ACCESS;
SQL> audit SEQUENCE BY ACCESS;
SQL> audit SYNONYM BY ACCESS;
SQL> audit SYSTEM AUDIT BY ACCESS;
SQL> audit SYSTEM GRANT BY ACCESS;
SQL> audit TABLE BY ACCESS;
SQL> audit TABLESPACE BY ACCESS;
SQL> audit TRIGGER BY ACCESS;
SQL> audit TYPE BY ACCESS;
SQL> audit USER BY ACCESS;
SQL> audit VIEW BY ACCESS;
SQL> audit ALTER SEQUENCE BY ACCESS;
SQL> audit ALTER TABLE BY ACCESS;
SQL> audit COMMENT TABLE BY SESSION;
SQL> audit GRANT DIRECTORY BY ACCESS;
SQL> audit GRANT PROCEDURE BY ACCESS;
SQL> audit GRANT SEQUENCE BY ACCESS;
SQL> audit GRANT TABLE BY ACCESS;
SQL> audit GRANT TYPE BY ACCESS;
SQL> audit SELECT SEQUENCE BY SESSION;
SQL> audit ADMINISTER ANY SQL TUNING SET BY ACCESS;
SQL> audit ADMINISTER SQL TUNING SET BY ACCESS;
SQL> audit ADVISOR BY ACCESS;
SQL> audit ALTER ANY CLUSTER BY ACCESS;
SQL> audit ALTER ANY DIMENSION BY ACCESS;
SQL> audit ALTER ANY INDEX BY ACCESS;
SQL> audit ALTER ANY MATERIALIZED VIEW BY ACCESS;
SQL> audit ALTER ANY OUTLINE BY ACCESS;
SQL> audit ALTER ANY PROCEDURE BY ACCESS;
SQL> audit ALTER ANY ROLE BY ACCESS;
SQL> audit ALTER ANY SEQUENCE BY ACCESS;
SQL> audit ALTER ANY SQL PROFILE BY ACCESS;
SQL> audit ALTER ANY TABLE BY ACCESS;
SQL> audit ALTER ANY TRIGGER BY ACCESS;
SQL> audit ALTER ANY TYPE BY ACCESS;
SQL> audit ALTER DATABASE BY ACCESS;
SQL> audit ALTER PROFILE BY ACCESS;
SQL> audit ALTER RESOURCE COST BY ACCESS;
SQL> audit ALTER ROLLBACK SEGMENT BY ACCESS;
SQL> audit ALTER SESSION BY ACCESS;
SQL> audit ALTER SYSTEM BY ACCESS;
SQL> audit ALTER TABLESPACE BY ACCESS;
SQL> audit ALTER USER BY ACCESS;
SQL> audit ANALYZE ANY DICTIONARY BY ACCESS;
SQL> audit ANALYZE ANY BY ACCESS;
SQL> audit AUDIT ANY BY ACCESS;
SQL> audit BACKUP ANY TABLE BY ACCESS;
SQL> audit BECOME USER BY ACCESS;
SQL> audit COMMENT ANY TABLE BY SESSION;
SQL> audit CREATE ANY CLUSTER BY ACCESS;
SQL> audit CREATE ANY CONTEXT BY ACCESS;
SQL> audit CREATE ANY DIMENSION BY ACCESS;
SQL> audit CREATE ANY DIRECTORY BY ACCESS;
SQL> audit CREATE ANY INDEX BY ACCESS;
SQL> audit CREATE ANY JOB BY SESSION;
SQL> audit CREATE ANY LIBRARY BY ACCESS;
SQL> audit CREATE ANY MATERIALIZED VIEW BY ACCESS;
SQL> audit CREATE ANY OUTLINE BY ACCESS;
SQL> audit CREATE ANY PROCEDURE BY ACCESS;
SQL> audit CREATE ANY SEQUENCE BY ACCESS;
SQL> audit CREATE ANY SQL PROFILE BY ACCESS;
SQL> audit CREATE ANY SYNONYM BY ACCESS;
SQL> audit CREATE ANY TABLE BY ACCESS;
SQL> audit CREATE ANY TRIGGER BY ACCESS;
SQL> audit CREATE ANY TYPE BY ACCESS;
SQL> audit CREATE ANY VIEW BY ACCESS;
SQL> audit CREATE CLUSTER BY ACCESS;
SQL> audit CREATE DATABASE LINK BY ACCESS;
SQL> audit CREATE DIMENSION BY ACCESS;
SQL> audit CREATE JOB BY SESSION;
SQL> audit CREATE LIBRARY BY ACCESS;
SQL> audit CREATE MATERIALIZED VIEW BY ACCESS;
SQL> audit CREATE PROCEDURE BY ACCESS;
SQL> audit CREATE PROFILE BY ACCESS;
SQL> audit CREATE PUBLIC DATABASE LINK BY ACCESS;
SQL> audit CREATE PUBLIC SYNONYM BY ACCESS;
SQL> audit CREATE ROLE BY ACCESS;
SQL> audit CREATE ROLLBACK SEGMENT BY ACCESS;
SQL> audit CREATE SEQUENCE BY ACCESS;
SQL> audit CREATE SYNONYM BY ACCESS;
SQL> audit CREATE TABLE BY ACCESS;
SQL> audit CREATE TABLESPACE BY ACCESS;
SQL> audit CREATE TRIGGER BY ACCESS;
SQL> audit CREATE TYPE BY ACCESS;
SQL> audit CREATE USER BY ACCESS;
SQL> audit CREATE VIEW BY ACCESS;
SQL> audit DEBUG ANY PROCEDURE BY SESSION;
SQL> audit DEBUG CONNECT SESSION BY SESSION;
SQL> audit DROP ANY CLUSTER BY ACCESS;
SQL> audit DROP ANY CONTEXT BY ACCESS;
SQL> audit DROP ANY DIMENSION BY ACCESS;
SQL> audit DROP ANY DIRECTORY BY ACCESS;
SQL> audit DROP ANY INDEX BY ACCESS;
SQL> audit DROP ANY LIBRARY BY ACCESS;
SQL> audit DROP ANY MATERIALIZED VIEW BY ACCESS;
SQL> audit DROP ANY OUTLINE BY ACCESS;
SQL> audit DROP ANY PROCEDURE BY ACCESS;
SQL> audit DROP ANY ROLE BY ACCESS;
SQL> audit DROP ANY SEQUENCE BY ACCESS;
SQL> audit DROP ANY SQL PROFILE BY ACCESS;
SQL> audit DROP ANY SYNONYM BY ACCESS;
SQL> audit DROP ANY TABLE BY ACCESS;
SQL> audit DROP ANY TRIGGER BY ACCESS;
SQL> audit DROP ANY TYPE BY ACCESS;
SQL> audit DROP ANY VIEW BY ACCESS;
SQL> audit DROP PROFILE BY ACCESS;
SQL> audit DROP PUBLIC DATABASE LINK BY ACCESS;
SQL> audit DROP PUBLIC SYNONYM BY ACCESS;
SQL> audit DROP ROLLBACK SEGMENT BY ACCESS;
SQL> audit DROP TABLESPACE BY ACCESS;
SQL> audit DROP USER BY ACCESS;
SQL> audit EXECUTE ANY CLASS BY SESSION;
SQL> audit EXECUTE ANY PROGRAM BY SESSION;
SQL> audit EXECUTE ANY TYPE BY SESSION;
SQL> audit EXEMPT ACCESS POLICY BY SESSION;
SQL> audit FLASHBACK ANY TABLE BY ACCESS;
SQL> audit FORCE ANY TRANSACTION BY ACCESS;
SQL> audit FORCE TRANSACTION BY ACCESS;
SQL> audit GLOBAL QUERY REWRITE BY ACCESS;
SQL> audit GRANT ANY OBJECT PRIVILEGE BY ACCESS;
SQL> audit GRANT ANY PRIVILEGE BY ACCESS;
SQL> audit GRANT ANY ROLE BY ACCESS;
SQL> audit MANAGE SCHEDULER BY SESSION;
SQL> audit MANAGE TABLESPACE BY ACCESS;
SQL> audit ON COMMIT REFRESH BY ACCESS;
SQL> audit QUERY REWRITE BY ACCESS;
SQL> audit RESTRICTED SESSION BY ACCESS;
SQL> audit RESUMABLE BY ACCESS;
SQL> audit SYSDBA BY ACCESS;
SQL> audit SYSOPER BY ACCESS;
SQL> audit UNLIMITED TABLESPACE BY ACCESS;
SQL> audit SELECT ANY DICTIONARY BY ACCESS;
SQL> audit SELECT ANY SEQUENCE BY SESSION;
SQL> audit SELECT ANY TRANSACTION BY ACCESS;
SQL> audit SELECT,INSERT,UPDATE,DELETE,LOCK ON <Schema>.<Object> BY ACCESS;
SQL> audit SELECT,INSERT,UPDATE,DELETE,LOCK,EXECUTE ON DEFAULT BY ACCESS;

監査項目を確認する。

SQL> select * from dba_stmt_audit_opts;

監査項目をOFFにしたい場合は「audit...」を「noaudit...」に置き換えて実行する。あとはこまごましたこと 。

SQL> @C:\hoge.sql   <-- ファイルの実行
SQL> spool   <-- 出力状態の確認
SQL> spool [fileName] create   <-- 出力開始
SQL> spool off   <-- 出力停止
SQL> select * from all_users;   <-- ユーザー一覧の取得
SQL> select * from all_objects;   <-- オブジェクト一覧の取得

元記事:米が発表の野田首相発言、日本政府は否定 : 政治 : YOMIURI ONLINE(読売新聞)より

12日の日米首脳会談について、米ホワイトハウスが文書で発表した概要によると、野田首相は環太平洋経済連携協定(TPP)交渉について、すべての物品やサービスが対象となる考えを示した。

これに関連し、日本政府は12日、「今回の日米首脳会談で、野田首相が『すべての物品およびサービスを貿易自由化交渉のテーブルに載せる』という発言を行ったという事実はない」とのコメントを発表した。

さっそくTPPに関して日米会談でアメリカからの揺さぶりが始まりましたね。しかし、日本として問題とするべきは言った・言わないではなく、お互いがどいういう認識でいるかということ。

日本側が米側に説明を求めたところ、「日本側がこれまで表明した基本方針や対外説明を踏まえ、米側で解釈したものであり、発言は行われなかった」と確認されたとしている。

つまり、アメリカとしては実際に首相が言った・言わないを問題にしているのではなく、TPPに参加する以上は、結局当然のようにすべての物品とサービスが自由化するだろうと思っているわけでそれは当然予想されたことです。ただ先制して発表することで既成事実として流れを作ろうとしているのでしょう。ただ、日本政府として今まで「○○に関しては交渉のテーブルに乗らないと思う」と説明していたことが、今回のたった1つの発表で覆されたわけですので、少なくとも何がしかの説明をする必要はあるのではないかと思います。

あと実際に韓国にしてもほかの国にしてもアメリカがいうようにすべての物品やサービスの貿易自由化をしようとは思っていないでしょうから、ここは日本が率先して「日本は○○は除外しますが何か問題でも? 」という強いメッセージが出せれば、ほかの国も追随して良い流れが出来るのではないでしょうか。ただ、それをすると何のための自由化?という話にはなると思いますが。

更に、個人的に貿易の自由化自体は良いと思います。ただ、自由化をすることで安全が損なわれ安心できなくなるのはイヤです。今後、本当にEUのような共同体を環太平洋で作るのであれば単に貿易の自由化というだけでなく、安全基準の統一規格化なども並行して行っていくべきでしょう。

いずれにしても、ここまで外交舞台で良いようにコケにされて黙っていたんじゃ、日本国として恥ずかしいです。

このページのトップヘ