Posts filed under ‘Java’

Microsoft Translator Java WebSocket Application

(寺田が実装した Microsoft Translator Java WebSocket Application のソース・コードの入手先)

Microsoft Translator を利用したリアルタイム翻訳については、すでに様々なメディアで取り上げて頂いています。

最近では上記のような専用アプリだけではなく、 Microsoft Powerpoint のプラグインも提供され、プレゼン中にリアルタイム翻訳をする事もできるようになっています。こちらは、まだ実験中のプロジェクト製品ですので、現時点ではお試しの感覚で利用いただければと思いますが、これが成熟することで英語によるプレゼン発表もより理解しやすくなる日が、近い将来訪れるのではないかと思います。

この Microsoft Translator は、プログラミングをする事で、上記の Presentation Translator のように、様々な環境でリアルタイム翻訳を実現できるようになります。
プログラムを実装するための詳細は、Microsoft Translator Speech API リファレンス・ガイド をご覧ください。

かんたんに実装方法をご紹介します。

1. まず音声データを作ります。音声データは、サンプリング・レートが 16Khz で、モノラル、サンプル・ビット 16 bit の PCM 符号付きデータにする必要があります。もし、このフォーマットになっていない場合は、変換をして上記のデータを作成します。
2. WebSocket で Translator 専用の URL に接続します。
 その際、認証用の AuthToken を取得しAuthorizationヘッダに認証コードを付加し接続します。
3. WebSocket のサーバに WAV データを送信します。
4. 翻訳されたデータが JSON で返ってきますので onMessage() で翻訳データを受け取ります。

各プログラミング言語用のサンプル・コードがマイクロソフト本社より提供されていますので、下記をご参照ください。

さてここから、より Java 側の実装についてご紹介します。マイクロソフト本社から提供されている、Java のサンプルコードは下記に提供されています。
Java-Speech-Translate

上記のサンプル・コードは、あらかじめ HelloWorld.wav (PCM,16bit,16kHz,mono) ファイルを用意し、その音声データを Microsoft Translator に送信し、翻訳された結果を表示するようなプログラムになっています。

簡単な動作確認をする用途では上記のプログラムは有効です。しかし実際には、より大量の音声データを扱いたくなってまいります。また、最近の PC で音声データを作成すると、デフォルトでは、サンプリング・レートが 44.1Khz でステレオ・サウンドで WAV が作成される環境が多いかと思います。そこで、このような高品質でファイルサイズの大きなデータを、Translator に転送するために低品質に変換する必要があります。そのような場合、上記のサンプル・コードだけでは実装が不十分で、追加のコードが必要になってまいります。

そこで今回私は、上記とは別途 Java 用のサンプル・プログラムを実装しました。

私が作成した、アプリケーションの全ソースコードをアップロードしています。ソース・コードを入手後、プロパティ・ファイルにご自身専用のサブスクリプション・キーを入力し、ぜひお試しください。

広告

2017年8月10日 at 5:27 PM コメントをどうぞ

2017 Java アプリケーション・サーバ使用状況結果報告

先日は、「2017年度版:Java サーバの利用状況のアンケートのお願い」
にご協力いただきまして誠にありがとうございました。

アンケートの結果を集計しましたので報告いたします。

Questionair of Java App Server Usage

今年は、アプリケーション・サーバの利用状況に関するアンケートで 514 票、MSA フレームワーク系で 155 票の結果をいただく事ができました。ご協力いただいた全ての皆様誠にありがとうございました。
下記に結果を報告します。(ちなみに、昨年の合計は 669 票でした。昨年の投票結果はこちら

Java App Server Usage 2017
Java App Server Usage 2017
Java App Server Usage 2017

昨年と比較すると、投票数が若干減っているため純粋に比較する事はできませんが、全体的にアプリケーション・サーバの利用は減少している傾向に見受けられます。一方で投票数が減ったにもかかわらず、組み込みコンテナ、特に Spring Boot だけで昨年の 76票 → 102 票に増加したのは特筆すべき点です。

2017 Java Framework Usage
2017 Java Framework Usage

世界的に増加傾向が見受けられる、Spring Boot をはじめとする組み込みコンテナ系の需要は、マイクロサービスの導入・検討により、今後ますます高まると想定しますが、さまざまな情報を入手し効果的な活用をぜひ行ってください。

下記の今年の de:code や Java Day Tokyo でも発表をしましたが、筆者は安易なマイクロサービスに警鐘を鳴らしたいと思います。モノリシック・アプローチからマイクロ・サービス化においては、様々な点で考慮が必要です。どこから始めればよいかわからない方は、まずは下記の発表資料をご参照いただきご検討・導入をすすめていただければと思います。


関ジャバでの発表でも申し上げたのですが、「マイクロサービスにする事でハッピーになるのではなく、マイクロサービスを導入することでハッピーにする」という感覚が必要かと思います。

Happy Life with Java !!

2017年7月18日 at 11:18 AM 2件のコメント

2017年度版:Java サーバの利用状況のアンケートのお願い

サーバ・サイド Java の開発・運用に携わっていらっしゃる方に質問がございます。現在、サーバ・サイドのJava 開発環境もしくは本番環境で、どのサーバ (Webコンテナ、アプリケーション・サーバ)をご利用いただいているか理解したいと考えております。そこで、大変恐れ入りますが下記のアンケートにご協力いただけないでしょうか。

昨年 (2016年) は、669名の方にご協力いただきました。ご協力誠にありがとうございました。
2016年版:Java サーバ利用状況アンケート結果の公開

今年のアンケートの締め切りは 7/12(水) 18:00 までとさせていただきます。
昨年も1週間のアンケート期間だったため、公平をきすためにも同じ1週間で実施いたします。また、速報は同日開催する「関ジャバのナイトセミナー」で発表します。

複数ご回答いただいてもかまいません。個人情報は取得しませんし、この結果を売買に使うことも決してありません。利用状況について正しく把握することで、現在のサーバ・サイドのトレンドについて理解できるとともに、結果を本ブログで公開することで他の皆様にも有用な情報になるのではないかと想定しております。締め切り後に、再利用可能な結果(順位、投票数、パーセント)として公開します。

また、上記で「組み込みコンテナ(実行可能 jar)に移行済み」と回答した方のうち、どのフレームワークへ移行したかを教えていただけないでしょうか?移行していない場合は、下記にはお答えいただかなくて結構です。

本データは、日本全体における利用状況の実データにはならないと思いますし、市場調査会社がだす結果とは異なると思いますが、それでも Java コミュニティ参加者や、本ブログをご覧いただいている皆様の近辺のデータを集めることができるのではないかと想定しております。また、昨年のデータとの比較もできるかと思います。この1年で日本の状況は変わっているのでしょうか?とても楽しみにしています。

※ これは#てらだよしお 個人的なお願い事であり、所属企業や団体からの問い合わせではないことをご理解いただければ誠に幸いです。

2017年7月5日 at 8:00 AM

冬はお部屋の温度・湿度に気をつけましょう!!

今日の福岡でのナイトセミナー(JAZUG福岡(ふくあず) 2017#1)のデモの最終調整を宿泊先のホテルでしています。今日のお話しも盛りだくさんなのでデモ内容をちょっとだけ先出したいと思います!!

頻繁に出張にいく私たちはホテルに宿泊する事が多いのですが、どのホテルもとても乾燥しています。そこで風邪をひかないように、お風呂場にお湯を張ったりして温度・湿度に気をつけたりしてます。

一般的に冬の湿度は40%-50%が最適?!(インフルエンザ・ウィルスも死滅?!)との事なので、ホテルの部屋の温度と湿度変化を、持ってきた Raspberry Pi の温度・湿度センサーを使って実際に測って 50% まであげてみました!!

Power Bi で温度・湿度データの変化をグラフ表示していますが、内部的には Raspberry Pi から取得したデータを、Azure IoT Hub に送信し、その後 Stream Analytics 経由でリアルタイムに Power Bi に送っています!!

最初の方で1回だけ突出して出ている波形は、温度・湿度センサーに直接手で触った時のデータです
Stream Analytics と Power Bi で簡単にこうしてリアルタイムのデータ変化を観れるのは嬉しいですね!!

よし!!これでこの部屋の湿度は最適になったぞ!!

2017年2月9日 at 5:49 PM

Microsoft Tech Summit 開催(申し込み締め切りは明日まで)

来週、Microsoft Tech Summit が開催されますが、急遽私のセッション・タイトルとアジェンダを変更する事になりました。ただ今 Web サイトの修正依頼をしている状況でございます。

お申し込みの締め切りは明日 10月28日(金)まででございます。どうぞよろしくお願いします。

今回セッション調整により、私のセッションの横で、佐藤 直生 (@satonaoki) さんが、「Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発」というセッションをおこなう事になりました。Azure Service Fabric については、同じ時間帯で佐藤さんが詳しくご紹介いただける事になったため、かつ Pivotal Cloud Foundry が本日 GA になった事もあり、最新の情報をお届けするために、今回私は Pivotal Cloud Foundry on Azure の話しに集中することにしました。

また今回、急遽調整を行い Pivotal ジャパン株式会社の、槙さん(@making)をお招きして二人でセッションを行う事になりました。



タイトル:
「Pivotal Cloud Foundry on Azure で実現する Java マイクロサービス開発のご紹介」

アジェンダ:
2016 年 10 月 26 日(米国時間)Azure 対応の Pivotal Cloud Foundry が正式にリリースされました。これを記念して、本セッションは Pivotalジャパン株式会社をお招きしての特別セッションを開催します。
Pivotal Cloud Foundry は、世界的な企業で採用され、クラウド・ネィティブなプラットフォームとして、DevOps、マイクロサービスを実現するための便利な機能を提供しています。マイクロサービスを実現するための環境を、一から自分の手で作るには大変な労力や時間を要します。Pivotal Cloudn Foudry を利用することで、いち早くセキュリティに強いマイクロサービス・プラットフォームを利用することができるようになります。
本セッションは、Pivotal Cloud Foundry on Azure で、マイクロ・サービスを実現するための方法をデモを交えながらご紹介します。



追伸:
OpenShift も、すでに私の Azure 環境上で構築をしているのですが、Red Hat さんは、別途ご登壇いただきますし、近いうちに Red Hat さんと協業イベントを実施いたしますので、今回は Cloud Foundry に話しを絞る事にいたしました、どうぞご了承ください。

皆さまのお越しを楽しみにしております。

2016年10月27日 at 6:46 PM

皆んな大好き Excel !! Excel REST API Java サンプルアプリケーション

2016 年 8 月初旬 Office 365 の Excel REST API が正式にリリースしました。
アナウンス:「Announcing the general availability of the Microsoft Excel API to expand the power of Office 365

上記により、Graph API と呼ばれる REST API を使用して、Office 365 の OneDrive に存在する Excel ファイルを操作できるようになります。
Excel 操作用の Graph API

※ REST API で利用できるため、プログラミング言語を問わず任意の言語で操作ができるようになっていますので、Java 以外のプログラミング言語でもどうぞお試しください。

今回、私は上記の REST API を利用して Java のサンプル・コードを作成しました。
サンプル・コード:「GitHub : Office-365-Excel-REST-API-for-Java」
またサンプル・コードがどのように動作するのかをわかりやすくするため、サンプル・アプリケーションのデモ動画も撮りましたので、どうぞ下記のデモ動画もご覧ください。

今回作成したサンプル・アプリケーションは Java EE 7 のアプリケーションとして作成しました。そこで、Java EE 準拠のアプリケーション・サーバであれば、いずれの環境でも動作します。私は、Payara Server 4.1.1.162 (GlassFish) で動作確認をしていますが、少しの変更を行うだけで、アプリケーション・サーバではなく、Servlet Container(Tomcat/Jetty) でも動かすことができます。

追記:
Office 365 を無料でお試しいただく為の設定手順 (ステップ・バイ・ステップの画面ダンプ) や Tomcat 用の設定方法に関しては 「GitHub : README.md もしくは README-4-Tomcat.md」に記載しています。

アプリケーションの実装の詳細
このサンプル・アプリケーションは Java EE 7 で実装しています。

まず、GUI (フロントエンド) のビュー・テクノロジーとして JavaServer Faces (PirmeFaces) を利用しています。しかし、フロント技術はこのサンプルでは重要でありません。慣れ親しんだフロント・テクノロジーをご利用ください。

実際の、Excel 操作の要は、com.yoshio3.restclient パッケージ配下で実装しています。
特に com.yoshio3.restclient.services サービスが重要で、Excel REST API で用意されている各種機能(REST 呼び出し)をラッピングしたメソッドを実装しています。
また、Excel REST API のリクエスト・ボディ、もしくはレスポンス・ボディに含む JSON のデータは、すべて com.yoshio3.restclient.jaxb.entities パッケージ配下のクラスにマッピングしています。例えば、Excel のワーク・シートやテーブルを取得した際に取得できる情報はすべて com.yoshio3.restclient.jaxb.entities.excel パッケージに含まれています。このマッピングした Java オブジェクトを操作することで、実際の JSON データを意識せずにプログラムができます。

また、Office 365 に接続するためには、Azure Active Directory で認証を行う必要があります。今までは、「Microsoft Azure Active Directory Authentication Library (ADAL) for Java」を利用してきました。しかし、今回 Azure AD で認証を行うために必要最低限の軽量な Servlet Filter (AzureADAuthServletFilter) を独自に実装しました。

Servlet Filter : AzureADAuthServletFilter.java
アクセス・トークン:AccessToken.java
Auth サービス: OAuth2Service.java

まだ一部実装が足りない部分(TODO)はありますが、Azure AD の認証のフローをご理解頂く上で、このサーブレット・フィルタはご参考いただけるのではないかと思います。また、Servlet Filter なので認可はできませんが、Tomcat/Jetty のような Servlet Container でも動作します。認可が必要な方は、以前作成した「Azure AD 認証・認可サンプル」をご参照ください。

Java ユーザの皆様も、Office 365 の OneDrive に存在する Excel ファイルを直接 Java から操作してみませんか?

Have fan Excel with Java !!

2016年8月31日 at 8:00 AM

Java EE の戦略アップデート (2016/08/09 : JCP Executive Committee)

2016/08/09 JCP の Executive Committee のミーティング (Executive Committee Meeting Minutes for August 9 2016) がありOracle の Java EE/WebLogic 系製品の責任者 (Oracle Group Vice President ) である Anil Gaur さんから、今後の Java EE の戦略に対する説明がされたようです。
※ Anil さんは、元 Sun で Java EE/GlassFish の開発チームをまとめていた方。

要約すると
* エンタープライズのプログラミング・スタイルが変わっている。
* 旧来のアプリケーション・サーバでは、複数のアプリが同一 アプリ上 アプリケーション・サーバで動いていたが、今は単一のサービスやアプリが、それ専用のモジュール化された実行環境でクラウド上にデプロイされている、Java EE をこうした次世代のアプリ開発に対応できるようにしたい。
* 新しいプログラミング・モデルは、大規模にスケールする分散アプリを構築するためにリアクティブ・スタイルのプログラミングを取り入れ疎結合化する必要がある。
* また、HTTP/2, 設定、状態管理、Eventual Consistency(結果整合性)、マルチテナンシー、O-Auth, OpenID Connect 対応にも注目している
* 現在は、Java EE の一部の大規模ベンダーに相談しているが、今後 Java Champion や Java ユーザ・グループにも相談する予定。

以降 EC メンバーとの Q&A
[Q] Werner Keil
Java SE プラットフォームは、今後リリース・サイクルを早めることを計画していると聞いていますが、このリリース・サイクルは Java EE にも当てはまりますか?
[A] Anil
Java SE とは切り離して考えてほしい。いくつかの機能は Java SE 8 をベースにするだろうし、Java SE 9 に依存する部分もあるでしょう。

[Q] Martijn Verburg
Microprofile.io のチームとコラボレートする計画はありますか?
[A] Anil
2つの計画が一緒になる事を期待したいと思います。Oracle は Red Hat にこの件について話し合いを持ちました。しかし現時点では明確な答えはありません。

[Q] Alex Blewitt
クラウド・ベースのプロビジョニングについて質問をします。クレディ・スイスは、非常に機密性の高いデータを持っているため、”クラウドではなくオンプレミスで実行したい

[A] Anil
Java EE 8 は後方互換性を壊すのではなく、オンプレミスでも動作するでしょう。今までと同様に、専門家グループがより広いコミュニティからのフィードバックを元に、リリースに関して最終的な範囲やパッケージングを決定するでしょう。

[Q] Mark Little
私は、Red Hat が Oracle と話し合いを持った事を確認しています。そして Red Hat は Microprofile.io でプロトタイプを実装する際に Oracle と協業したいと言っていました。

その他、Steve Wallin、Bruno Souza、Matt Schuetze などから追加の質問、意見が寄せられてました。詳しくは、下記原文をご参照。

以降、該当部分の原文を抜粋

Java EE strategy
Anil Gaur, Oracle Group Vice President with responsibility for Java EE and WebLogic Server, gave a brief verbal presentation on Oracle’s Java EE strategy. He noted that enterprise programming styles are changing – more and more applications are distributed in nature and get deployed in cloud environments. Rather than traditional appservers that typically run multiple applications, apps are now distributed and deployed in the Cloud via modular runtimes dedicated to a single application or service.

We would like the future of Java EE to be viable to next generation of applications. These apps are composed and deployed differently in cloud and require flexibility, reliability and scale. The platform needs a new programming model that’s geared towards reactive style programming for building large-scale distributed applications that are loosely coupled. In addition, we would like to see HTTP/2, Config, State management, Eventual Consistency, Multi-tenancy, O-Auth and OpenID Connect get included in the platform. Oracle is talking to large Java EE vendors, and will soon consult with members of the community such as Java Champions and Java User Groups. He then asked for questions.
Werner Keil said that we had heard that Java SE would transition to faster release cycles. Would this also be reflected in Java EE? Anil replied that they intended to decouple from Java SE as best they could. Some features would be based on Java SE8 while others would depend on Java SE9.

Martijn Verburg asked whether there were plans to collaborate with the Microprofile.io team. Anil responded that he would like to see the two efforts come together. Oracle has spoken to RedHat about this but there is no definitive answer yet.

Alex Blewitt asked about cloud-based provisioning, noting that Credit Suissse has some very sensitive data and would therefore want to run on-premise instead of “in the cloud”. Anil responded that Java EE8 will not break backward compatibility and noted that it will be possible to run Java EE8 on-premise. As always, the Expert Group will decide the final scope and packaging of the release with input from broader community.

Mark Little confirmed that RedHat has spoken to Oracle, and said that he hoped that they could collaborate, perhaps by prototyping at Microprofile.io.

Steve Wallin said that IBM has also had discussions with Oracle. He asked whether Oracle was considering a completely new platform. Anil responded that he doesn’t want to pre-judge this; the community must decide. Steve asked what was missing from the current platform, noting that IBM has been able to deliver rapid deployment based on the existing platform. He thanked Anil for coming to speak to the EC.

Bruno Souza said that Java EE has historically been very open and participative – more so than other platforms – and consequently had been very good for the JCP. Going quiet for a year was very unhealthy and had damaged Java. He hoped that this would not happen again.

Anil said he understood. Oracle intends to work with the community and the JCP. They want to deliver something that developers will find useful and exciting.
Werner Keil asked when Java EE8 would be released. Anil said that the planned date will change, but he doesn’t yet have the details. He expects to be able to say at JavaOne.

Bruno asked whether Java User Groups and the Adopt-a-JSR program could help. Anil said he would welcome such community involvement.

Matt Schuetze asked what the high-level message is. Anil said that Java EE will continue to evolve. Some features will be more revolutionary, but exactly how things will be packaged has not yet been decided.
Werner Keil noted that java.net is being decommissioned and asked where Java EE projects will be hosted. Anil agreed that they would be impacted by this change and that they are evaluating alternatives.

There being no further questions, Patrick thanked Anil for coming to talk to the EC. Anil responded that he expected to reach out to many EC members in the coming weeks.

2016年8月17日 at 1:17 PM

過去の投稿


Java Champion & Evangelist

ご注意

このエントリは個人の見解であり、所属する会社の公式見解ではありません

カレンダー

2017年9月
« 8月    
 123
45678910
11121314151617
18192021222324
252627282930  

カテゴリー

Twitter

clustermap

ブログ統計情報

  • 998,358 hits

Feeds