yamicha.com's Blog - Presented by yamicha.com
Blog yamicha.com's Blog - 2018/06 の記事
[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]

yamicha.com's Blog
 諸事情により、現在更新休止中。ご了承ください。もし今後ブログを再開することがあるとすれば、その際にはこのブログスクリプトではなく、新しく開発したものによるかもしれません。
 当ブログ管理者についてはこちらをご参照。
開発魔法(737)
社会問題(733)
お知らせ(11)
質問・バトン回答(15)
ゲスト出演(8)
経済・知的財産(150)
ゲーム開発(182)
[Ada] 勝手に補足
- Note
- 金配りの次の一手


- Endless Ultimate Diary
- 銃世界

漢字バトン
- うるる雑記帳
- 漢字接力棒

ツキアイゲノムバトン
- ブログ@うにうに画像倉庫
- あぶ内閣

縺イ縺セ縺、縺カ縺励ヰ繝医Φ
- 月夜のボヤキ
- 騎士サーラバトン
パスワードを使う
名無し (2012/02/27)


開発者解放裁判
yamicha.com (2010/03/14)
Winnyに関しては、私も「純白」とまでは考えておりませんし、使用し..

開発者解放裁判
通りすがり (2010/03/08)
winnyに関しては「ダウンロードソフト板」なんてところを拠点に開発..

新型インフルエンザの恐怖
いげ太 (2009/11/03)
> C#などの「int Some(int , int)」は、F#では「(int * int) ->..

時効に関する思考
yamicha.com (2009/08/31)
>いげ太さんコメントありがとうございます。手元にドキュメントが少..
Homepage
Blog Top
Normal View
List View
Search
Calendar
Comment List
Trackback List
Blog RSS
Send Trackback
Phone Mode
Administrator
yamicha.com
Blog
るううるる。
Source
法令データ提供システム
FindLaw
Development
Java2 Platform SE 6
Java EE 6 API
MySQL Developer Zone
PHP Reference
MSDN Library
Ada Reference Manual
Objective Caml
Python Documentation
Erlang
Prolog Documents
民主民主主義人民共和国
2010/03/22(Mon)21:32:53
 マスコミにおいて小沢氏批判を行った生方氏が、副幹事長を解任されました。民主党側は「外部に向かって批判するのは副幹事長の職責から言って問題がある」ことを理由としていますが、これには外部はもとより党内からも批判が出ており、さらには小沢独裁体制をなおさら印象付けかねない処分とあって、党へのダメージは必ずしも少なくないとみられます。
 つくづく、民主党執行部は一体何を考えているのでしょうか。ここで民主党が適切に党内をまとめ、まっとうな政策実現に向けて努力することは、単に自党の支持を拡大するのみならず、日本に政権交代のある政治をもたらすのにも必要不可欠な行為です。それを放棄しようものなら、民主党内で問題が噴出する分にはまだしも、日本に対して多大なる悪影響を及ぼす結果となります。
 民主党は自民党の受け皿として政権を奪取するに至りましたが、それも自民党への失望、民主党への期待があってこそです。ところが、一連の献金騒動でクリーンさに疑問符がつき、少なくとも裏金の面では自民党と同じであるとみなされても文句を言えない状態となりました。その上に自党の体制を批判すれば役職を解任されるとなれば、クリーンさに続いて党内の透明性もなくなり、党内における自由闊達な議論は消えうせるでしょう。まさに恐怖政治の縮図のようなもので、悪印象を持たれることは避けられませんし、国民の側としても悪印象を持たないわけにはいきません。
 執行部側は処分理由を「外部に向かって批判するのは職責からして問題」であるからとしていますが、まず納得のできるものではありません。同列に扱えるものではないとはいえ、以前に田母神氏や「美辞麗句」発言の自衛隊員が処分されるなどしましたが、これは文民統制が侵害されるという現実的かつ重大なリスクに対するもので、いずれも処分は妥当なものです。しかし、生方氏は自衛隊でいうところの「文民統制」に匹敵するほど重大なリスクのある発言を行ったわけではありませんし、逆に執行部が「小沢氏批判は重大な問題行為」と捉えているのであれば、そちらの方が問題です。
 さらに悪いことに、生方氏が主張している通り、国民の多くは小沢氏に強い疑惑と不審の目を向けており、その政治手法や「小沢党首」以後の民主党の政策及び政党の変質も相まって、小沢氏は辞任すべきであると考えています。しかし、それを代弁した生方氏は副幹事長を解任されてしまいました。執行部は小沢氏への批判を封殺したつもりでも、氏への風当たりはなおさら強くなると考えるべきでしょう。そして、氏が辞任するならそれに越したことはありませんが、辞任せずに「隠者」の地位にしがみついている限り、小沢氏への風当たりは民主党への評価に直結し、民主党が継続的にダメージを受けるであろうことは見えています。
 本件における最も大きな被害者は、まじめに活動している民主党議員や閣僚に他なりません。自民党の流れを汲んだ小沢氏や鳩山氏の資金疑惑、そして今回の言論封殺などから、「民主党も自民党と変わらない」という印象を持つ人は多いようですし、言論封殺までやるようでは持たれて当然でもありますが、そのせいで民主党や政権交代の功績が完全に無となってしまっています。
 外国人参政権や子ども手当ては手放しで評価はできないにしても、55年体制から長きにわたって続いた自民党体制から政権を奪取し、政権交代前までは情報もろくに得られなかった中で、半年余りで「ない」はずの密約を白日の下にさらし、経団連の献金あっせんを中止に追い込み、本来は自民党政権からの「宿題」であった高校無料化にも道を開いています。まだ実現は未定とはいえ、自民党政権下では門前払いになっていたであろう夫婦別姓、取り調べ可視化などの議論も出てきていますし、「子ども手当て」というやり方はともかく、あまりにも矛盾が多すぎる配偶者控除を廃止し、これを子どもへ振り向けるという発想自体は、評価しない理由がありません。ところが、いくら閣僚や議員が努力して功績を挙げたとしても、小沢氏の保身と今回の言論封殺の1つで、それらはすべて消し飛んでしまうのです。
 さらには、自民党は児童ポルノの規制強化と対象拡大を急進的に行なおうとしたり、その他にも国民の自由を制限する法制に積極的であるなど、一歩間違えば中国のような状況になってもおかしくない規制強化がなされかねない危うさがありますが、民主党政権ではそのような状況が発生する可能性は自民党より低く、それも民主党の評価点の1つに挙げられます。しかし、党内ですら独裁国家の真似事をやっているようでは、ましてや国民の自由を守る気があるのかという点にさえ疑問が出てきます。事実、生方氏は「民主党は、小沢さんが白と決めれば全部白だという政党になってしまった。言論の自由がない政党が、国民の言論の自由を保障できるのか」と述べ、この懸念を表明しています。実現するには問題も多く、少なくとも拙速を避けるべきである外国人参政権などの制度が、小沢氏の肝いりとなれば非常にあっさり導入される可能性が出てくる点からも、この懸念が決して夢物語でないことが読み取れます。
 本件のようなゴタゴタにおいて、最も得をするのは一体誰でしょうか。本来なら二大政党の他方である自民党と言いたいところですが、「和魂党」や田母神氏の擁立未遂にとどまらず、今度は週刊誌などで話題の「美し過ぎる市議」なる人物を参院選の候補に立てようとしているようです。このような行為を繰り返している限り、民主党がどうなろうと自民党は没落したままでしょう。事実、民主党への風当たりが強まる一方で、自民党への失望が消える気配はありません。
 それでは誰が利を得るかといえば、「みんなの党」などの第三極もさることながら、兄弟ともども疑念を持たれている鳩山邦夫氏や、「今の自民党に必要なのは、民主党の小沢氏以上の独裁者」であると述べた舛添氏ではないでしょうか。特に舛添氏は到底評価できるような人物ではないにもかかわらず、なぜか人気だけは高く、特に強い懸念があります。言うまでもありませんが、これらのような議員が「明治維新」の真似をしたところで、ろくなことにならないのは見えています。
 政権交代のある政治を定着させるためにも、舛添氏のような人物の台頭を防ぐためにも、民主党は言論封殺や独裁ごっこをしている状況ではありません。今回の言論封殺によって小沢氏への風当たりがさらに強まる可能性は十分にありますが、和らぐとはまず考えられません。党内にも小沢氏への不満は鬱積しており、下手をすると内乱が発生する恐れさえあります。生方氏を切るよりも、小沢氏にご退場を願って党を立て直すべきでしょう。

 前回でひとまず複合コンポーネントの基礎が分かりましたので、今回はもう少しまともに使えそうなコンポーネントを作成し、複数回の呼び出しを行ってみました。今回はManagedBeanも使用しています。
/resources
 /comp
  labelInput.xhtml
/WEB-INF
 /classes
  /com
   /yamicha
    /custom
     FormBean.java
 web.xml
custom.xhtml
result.xhtml
 架空の個人情報登録フォームを想定しています。フォームでは氏名、メールアドレス、Webページ、居住地を入力できるようになっています(前2つは必須、後は任意)。これはサンプルですので実際に登録はしませんが、EJBと組み合わせるなりすれば、当然ながらデータの永続化は可能です。テキストボックス周りのデザインを複合コンポーネント化しています。
 web.xmlは前回と全く同じです。web.xmlといい、JPA使用時のpersistence.xmlといい、毎回変化がないので困ったものです。
<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app>
  <context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
  </context-param>

  <display-name>JSF 2.0 Custom Component Servlet</display-name>
  <description>JSF 2.0 Custom Component Servlet</description>

  <servlet>
    <servlet-name>jsf20custom</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>jsf20custom</servlet-name>
    <url-pattern>*.jsf</url-pattern>
  </servlet-mapping>
</web-app>
 FormBean.javaでは使用する4情報を扱っている他、バリデータも用意しています。
package com.yamicha.custom;

import javax.ejb.*;
import javax.annotation.*;
import javax.faces.validator.ValidatorException;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.application.FacesMessage;
import javax.faces.bean.*;
import javax.faces.event.*;
import java.util.*;

@ManagedBean @RequestScoped public class FormBean
	implements java.io.Serializable{
	private String name;
	private String mail;
	private String webPage;
	private String address;

	public FormBean(){
	}

	public String getName(){
		return name;
	}
	public String getMail(){
		return mail;
	}
	public String getWebPage(){
		return webPage;
	}
	public String getAddress(){
		return address;
	}

	public void setName(String n){
		name = n;
	}
	public void setMail(String m){
		mail = m;
	}
	public void setWebPage(String w){
		webPage = w;
	}
	public void setAddress(String a){
		address = a;
	}

	public void requiredValidator(FacesContext context ,
		UIComponent component , Object value){
		if(((String)value).isEmpty()){
			HtmlInputText input = (HtmlInputText)component;
			throw new ValidatorException(new FacesMessage(
				input.getLabel() + " は必須項目です。"));
		}
	}
	// 何もチェックしないバリデータメソッド
	public void throughValidator(FacesContext context ,
		UIComponent component , Object value){
	}
}
 何もしないバリデータは苦肉の策です。
 labelInput.xhtmlが複合コンポーネントとなっています。
<?xml version="1.0" encoding="Shift_JIS" ?>
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:c="http://java.sun.com/jsp/jstl/core"
  xmlns:composite="http://java.sun.com/jsf/composite">

  <composite:interface>
    <composite:attribute name="label" />
    <composite:attribute name="describe" default="" />
    <composite:attribute name="value" />
    <composite:attribute name="labelStyleClass" default="" />
    <composite:attribute name="inputStyleClass" default="" />
    <composite:attribute name="inputValidator" required="true"
      method-signature=
"void validator(javax.faces.context.FacesContext,javax.faces.component.UIComponent,java.lang.Object)" />
    <composite:attribute name="size" default="" />
    <composite:attribute name="indent" default="15" />
  </composite:interface>

  <composite:implementation>
    <table border="0" width="90%">
      <tr>
        <td class="#{cc.attrs.labelStyleClass}">
          <h:outputText value="#{cc.attrs.label}" />
        </td>
      </tr>
      <tr>
        <table border="0" width="100%">
          <tr>
            <td width="#{cc.attrs.indent}"></td>
            <td class="#{cc.attrs.inputStyleClass}">
              <h:outputText value="#{cc.attrs.describe}" /><br />
              <h:inputText label="#{cc.attrs.label}" size="#{cc.attrs.size}"
                value="#{cc.attrs.value}"
                validator="#{cc.attrs.inputValidator}" />
            </td>
          </tr>
        </table>
      </tr>
    </table>
    <br />
  </composite:implementation>
</html>
 ほとんど前回の応用ですが、普通の属性でメソッドを受け取ろうとするとエラーになってしまいます。メソッドを受けたい場合には、method-signatureを指定しなくてはなりません。今回は"void validator(javax.faces.context.FacesContext,javax.faces.component.UIComponent,java.lang.Object)"となっていますが、意味は見ての通りでしょう。
 ただ、色々探してはみたものの、メソッドを渡したくない場合の記述が見つかりませんでした。今回はこれをバリデータメソッドを渡すために使用しているため、バリデータを使わない場合は省略したいところなのですが、属性の記述を省略したり、"null"などと入力してみたりしても、いずれもエラーとなってしまいます。仕方がないので何もしないバリデータを作成するという苦肉の策を使用していますが、実際には何かもっと上手い手がありそうです。
 このコンポーネントはcustom.xhtmlで使用しています。
<?xml version="1.0" encoding="Shift_JIS" ?>
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:c="http://java.sun.com/jsp/jstl/core"
  xmlns:ui="http://java.sun.com/jsf/facelets"
  xmlns:cc="http://java.sun.com/jsf/composite/comp">

<h:head>
  <title>JSF 2.0 Custom Component</title>
  <style type="text/css">
    td.label { background-color: #CCDDFF; }
  </style>
</h:head>

<h:body>
  <b>送信フォーム</b><br />
  <small>(*)は必須項目</small>

  <h:form>
    <cc:labelInput label="名前(*)"
      describe="お名前を入力してください。"
      value="#{formBean.name}" labelStyleClass="label"
      inputValidator="#{formBean.requiredValidator}" />

    <cc:labelInput label="メールアドレス(*)"
      describe="メールアドレスを入力してください。"
      value="#{formBean.mail}" labelStyleClass="label" size="40"
      inputValidator="#{formBean.requiredValidator}" />

    <cc:labelInput label="Web ページ"
      describe="Web ページをお持ちなら、アドレスを入力できます。"
      value="#{formBean.webPage}" labelStyleClass="label" size="60"
      inputValidator="#{formBean.throughValidator}" />

    <cc:labelInput label="在住地域"
      describe="公開可能な範囲で在住地域を入力できます。"
      value="#{formBean.address}" labelStyleClass="label" size="60"
      inputValidator="#{formBean.throughValidator}" />

    <h:commandButton action="result" value="送信" />
  </h:form>
</h:body>

</html>
 result.xhtmlで結果を表示しています。これはサンプルですから、ただ送信データを表示するだけですが、後は書き方次第です。
<?xml version="1.0" encoding="Shift_JIS" ?>
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:c="http://java.sun.com/jsp/jstl/core"
  xmlns:ui="http://java.sun.com/jsf/facelets"
  xmlns:cc="http://java.sun.com/jsf/composite/comp">

<h:head>
  <title>JSF 2.0 Custom Component - Result</title>
</h:head>

<h:body>
  以下のデータが送信されました。

  <h:panelGrid border="1" columns="2">
    <h:outputText value="名前" />
    <h:outputText value="#{formBean.name}" />

    <h:outputText value="メールアドレス" />
    <h:outputText value="#{formBean.mail}" />

    <h:outputText value="Web ページアドレス" />
    <h:outputText value="#{formBean.webPage}" />

    <h:outputText value="在住地域" />
    <h:outputText value="#{formBean.address}" />
  </h:panelGrid>
</h:body>

</html>
 複合コンポーネントの作成が簡単なおかげで、「コンポーネントを作るよりそのまま書いた方が手間も時間も記述量もマシ」という意味の分からない状況に陥らないのが助かります。
カテゴリ [開発魔法][社会問題] [トラックバック 0][コメント 0]
<- 前の記事を参照 次の記事を参照 ->

- Blog by yamicha.com -