2018/11/20

東京都の私立大学に在籍する障害者はどれだけ支援を受けられるか


法的整備


 事業者とは?

「東京都の差別解消条例」の第二条の二で「事業者」を定義。

事業者 法第二条第七号に規定する事業者のうち、
都の区域内において商業その他の事業を行う者をいう。

 「法第二条第七号」は、「障害者差別解消法」の次の規定を指す。

事業者 商業その他の事業を行う者(国、独立行政法人等、地方公共団体及び地方独立行政法人を除く。)をいう。

この事業者に「学校法人」(私立大学など)も含まれるようである。

補助金は?


 「日本学生支援機構」に、次の記事がある。

障害のある学生を受け入れる大学等を対象に、 経常的経費に対する補助として日本私立学校振興・共済事業団が交付する私立大学等経常費補助金の一般補助において、 次により算定される額を加算しています。<平成25年度> {(障害のある学生の数×1,600千円)+(障害のある学生に対する具体的配慮の取組数×400千円)}×5/10×増減率(定員充足率等の状況により学部等ごとに131%~1%) ※ 予算額との兼合いから、算定結果に一律の圧縮率を乗じることがあります。 ※ 参考:「私立大学等経常費補助金取扱要領・配分基準」

確認してみると、確かに、「私立大学等経常費補助金」の「平成29年度 取扱要領・配分基準」の45ページに数字がある。

合理的配慮をどう勝ち取れるか?


合理的配慮の合意形成のプロセスが、最終的な砦となる。 

合理的配慮は「負担が重すぎない範囲」で対応するわけで、何をもって「負担が重すぎないのか」という合意形成が必要となる。

内閣府の「合理的配慮提供における合意形成プロセス」に少し記事があるが、日本におけるプロセスについてはわかってないが、「相談窓口」はある。使ったことがある方、いらっしゃるのだろうか?

 最終的には、私立大学における日本学生支援機構の「 補助金の使われ方 」がキーになると思うのだが、障害者はどこまで知る(開示請求)ことができるのだろうか?

2013/12/18

CQRSの和訳

DDDとCQRSについて

DDD (Domain Driven Design = ドメイン駆動設計)が世間に知られるようになってきましたが、今度はDDDをさらにスケーラビリティにするCQRS (Command Query Responsibility Segregation = コマンドクエリ責務分離)が出てきました。

DDD提唱者の英語本の和訳版「エリック・エヴァンスのドメイン駆動設計」がAmazonにありますが、非常に分厚く高価です。概要をまとめた資料が「Domain Driven Design(ドメイン駆動設計) Quickly 日本語版 - InfoQ」から入手できます。

CQRSはデータベース設計とイベントソーシングも含めた壮大なWebアプリケーションのアーキテクチャですが、日本語の資料がまだ少ないです。CQRSを適用したアプリケーションを構築できるインフラがWindows Azureにあるようですが、Java EEにはまだ無いようです。

Greg Young流CQRSの和訳版

DDDもCQRSもスケールが大きな設計手法で、容易に理解できるものではありませんが、理念や概要を知っておくだけでも、かなり見えてくるものがあると思います。というわけで、Greg Young氏著の「CQRS Documents by Greg Young」を和訳しました。Greg Young氏の許可をいただけましたので、公開します。拙者は英語が苦手なので、和訳内容に誤りや不適切な表現が随所にあることをご了承ください。
翻訳内容の訂正や指摘などございましたら、ご教示いただけると嬉しいです。修正して入れ替えます!!

2013/06/22

JMS 2.0チュートリアル with NetBeans 7.3.1 and GlassFish4


JMS 2.0チュートリアル with NetBeans 7.3.1 and GlassFish4
本チュートリアルは、「NetBeansおよびGlassFishを使用した、簡単なJava Message Service(JMS)プロデューサの作成」を参考にして作成しました。
JMSは一般的には、異なるJava EEアプリケーション間のコミュニケーション手段として使いますが、ここでは、1つのWebアプリケーションでJMS 2.0のキューを利用したメッセージ送信とメッセージ受信の両方を実装します。


【目次】
  1. Webアプリケーションプロジェクトの作成
  2. メッセージ送信処理の実装
    1. メッセージ送信するJSF管理対象Beanの作成
    2. メッセージ送信するJSFページの作成
  3. メッセージ受信処理の実装
  4. 実行してみる

Webアプリケーションプロジェクトの作成

以下の手順でWebアプリケーションのプロジェクトを作成します。
  1. NetBeansのメニューバーから、[ファイル] > [新規プロジェクト]を実行します。

  2. [新規プロジェクト]画面の[1. プロジェクトを選択]ステップにて、
    [カテゴリ]で[Java Web]、[プロジェクト]で[Webアプリケーション]を選択し、[次 >]を押下します。


  3. [新規 Webアプリケーション]画面の[2. 名前と場所]ステップにて、[プロジェクト名]に[JMSSample]を入力し、[次 >]を押下します。
    なお、[プロジェクトの場所]は任意です。


  4. [新規 Webアプリケーション]画面の[3. サーバと設定]ステップにて、
    次の画面のようになっていることを確認し、[次 >]を押下します。


  5. [新規 Webアプリケーション]画面の[4. フレームワーク]ステップにて、[JavaServer Faces]を選択し、「終了]を押下します。
以上で、Webアプリケーションのプロジェクト作成は完了です。

メッセージ送信処理の実装

メッセージを送信する部品として、JSFページとJSF管理対象Beanの2つを作成します。
JSFページでメッセージを入力して送信を実行したら、JSF管理対象BeanでメッセージをJMSキューに入れるという処理になります。
なお、JMSキューではメッセージ送信部品をProducerと呼びます。

メッセージ送信するJSF管理対象Beanの作成

以下の手順で、JSFページで入力したメッセージを取り出して、JMSキューに入れるJSF管理対象Beanを作成します。
なお、JSFページは後で作成します。
  1. [プロジェクト]の[ソース・パッケージ]を右クリックして、ポップアップメニューから[新規] > [その他]を実行します。
  2. [新規ファイル]画面の[1. ファイル・タイプを選択]ステップにて、
    [カテゴリ]で[JavaServer Face]を、[ファイル・タイプ]で[JSF管理対象Bean]を選択し、[次 >]を押下します。
  3. [New JSF管理対象Bean]画面の[2. 名前と場所]ステップにて、
    [クラス名]に[MessageProducerBean]、[パッケージ]に[jms2]を入力し、[スコープ]で[request]を選択し、[終了]を押下します。
  4. 以上のウィザードで生成されたjms2.MessageProducerクラスをプログラミングします。
    messageフィールドとそのgetter/setterを作成し、sendメソッドを入れます。
    (赤字がプログラミングする部分)
    package jms2;
    
    import javax.inject.Named;
    import javax.enterprise.context.RequestScoped;
    
    @Named(value = "messageProducerBean")
    @RequestScoped
    public class MessageProducerBean {
        private String message;
    
        public MessageProducerBean() {
        }
    
        public String getMessage() {
            return message;
        }
    
        public void setMessage(String message) {
            this.message = message;
        }
    
        public void send(){
        }
    }
  5. sendメソッドの閉じかっこ「}」の後ろで[Alt]+[Insert]キーを押下して、ポップアップメニューから[JMSメッセージを送信...]を実行します。
  6. [JMSメッセージを送信]画面の、[プロジェクトの送信先]で[追加]を押下して[jms/queue1]を追加し、[OK]を押下します。
  7. jms2.MessageProducerクラスにコードが自動挿入され、次の内容になります。
    また、[サーバー・リソース]フォルダ配下の[glassfish-resources.xml]にも「jms/queue1」などが自動挿入されます。
    (赤字が自動挿入されたコード)
    package jms2;
    
    import javax.annotation.Resource;
    import javax.inject.Named;
    import javax.enterprise.context.RequestScoped;
    import javax.inject.Inject;
    import javax.jms.JMSConnectionFactory;
    import javax.jms.JMSContext;
    import javax.jms.Queue;
    
    @Named(value = "messageProducerBean")
    @RequestScoped
    public class MessageProducerBean {
        @Resource(mappedName = "jms/queue1")
        private Queue queue1;
        @Inject
        @JMSConnectionFactory("java:comp/DefaultJMSConnectionFactory")
        private JMSContext context;
        private String message;
    
        public MessageProducerBean() {
        }
    
        public String getMessage() {
            return message;
        }
    
        public void setMessage(String message) {
            this.message = message;
        }
    
        public void send(){
        }
    
        private void sendJMSMessageToQueue1(String messageData) {
            context.createProducer().send(queue1, messageData);
        }
    }
  8. sendメソッドをプログラミングします。
    (赤字がプログラミングする部分)
        public void send(){
            FacesContext facesContext = FacesContext.getCurrentInstance();
            sendJMSMessageToQueue1(message);
            FacesMessage facesMessage = new FacesMessage("Message sent: " + message);
            facesMessage.setSeverity(FacesMessage.SEVERITY_INFO);
            facesContext.addMessage(null, facesMessage);
        }
    
  9. jms2.MessageProducerBeanクラスを保存します。
以上で、jms2.MessageProducerBeanクラスの作成は完了です。

メッセージ送信するJSFページの作成

[Webページ]フォルダ配下の[index.xhtml]を次の内容になるようにプログラミングして、保存します。
(赤字がプログラミングする部分)
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html">
    <h:head>
        <title>JMS Message Producer</title>
    </h:head>
    <h:body>
        JMS Message Producer
        <h:form>
            <h:outputLabel value="Message: " for="message"/>
            <h:inputText id="message" value="#{messageProducerBean.message}"/>
            <h:commandButton value="Send Message" action="#{messageProducerBean.send}"/>
            <h:messages globalOnly="true"/>
        </h:form>
    </h:body>
</html>

メッセージ受信処理の実装

メッセージを受信する部品として、MDB(Message Driven Bean)を作成します。
今回作成するのは、JMSキューからメッセージを取り出して、コンソールに出力するだけの簡単なMDBです。 なお、JMSキューではメッセージ受信部品をConsumerと呼びます。
  1. [ソース・パッケージ]の[jms2]パッケージを右クリックして、ポップアップメニューから[新規] > [その他]を実行します。
  2. [新規ファイル]画面の[1. ファイル・タイプを選択]ステップにて、
    [カテゴリ]で[エンタープライズJavaBeans]を、[ファイル・タイプ]で[メッセージ駆動型Bean]を選択し、[次 >]を押下します。
  3. [New メッセージ駆動型Bean]画面の[2. 名前と場所]ステップにて、
    [EJB名]に[MessageConsumerBean]を入力し、[次 >]を押下します。
  4. [新規ファイル]画面の[3. アクティブ化構成プロパティ]ステップでは、そのまま[終了]を押下します。
  5. jms2.MessageConsumerBeanクラスのonMessageメソッドをプログラミングします。
    (赤字がプログラミングする部分)
    @Override
    public void onMessage(Message message) {
        try {
            TextMessage tm = (TextMessage) message;
            System.out.println("Consumed message: " + tm.getText());
        } catch (JMSException ex) {
            ex.printStackTrace(System.err);
        }
    }
  6. jms2.MessageConsumerBeanクラスを保存します。

実行してみる

  1. [JMSSample]を右クリックし、ポップアップメニューから[実行]を実行します。
  2. ブラウザでJSFページが表示されます。
    [Message]に任意のメッセージを入力して[Send Message]を押下します。
  3. NetBeansのコンソールに、次が出力されていたら成功です。
以上、簡単なJMS 2.0のチュートリアルでした。
JMS 1.1までの開発経験がある方にとっては、プログラミング量がかなり減ったことがわかっていただけるでしょう。