【コラム】

Java API、使ってますか?

28 XMLデータソースへの問い合わせはJSR 225で

28/60

JSR 225: XQuery API for Java (XQJ)

XQueryは、XML形式のデータソースに対して問い合わせを行うための関数型言語であり、「XQuery 1.0: An XML Query Language」としてW3C勧告になっている。「JSR 225: XQuery API for Java(以下、XQJ)」は、JavaアプリケーションにおいてXQuery 1.0仕様に準拠したXML問い合わせを行えるようにするためのAPIだ。

リレーショナルデータベースをデータソースとする場合、その問い合わせ言語としては一般的にSQLが使用される。Javaでは、SQLを利用するための標準的なAPIとしてJDBCが用意されている。JSR 225は、SQLにおけるJDBCの位置づけを、XQueryに対して実現するための仕様と言える。

XQueryの使用例

XQuery 1.0の詳細についてはW3C勧告の仕様を参照してもらうことにし、ここでは一般的によく使われる表現式をXQueryの一例として紹介したい。データソースとなるXML文書としてはリスト1のようなものを考えることにする。

リスト1 books.xml - データソースとなるXML文書

<books>
    <book isbn="978-4-8399-2424-9">
        <title>Java逆引きクイックリファレンス Java5/6対応</title>
        <author>team-thoth</author>
        <publisher>毎日コミニュニケーションズ</publisher>
        <price>2940</price>
    </book>
    <book isbn="978-4-8399-1979-5">
        <title>Code Quality ~コードリーディングによる非機能特性の識別技法~</title>
        <author>Diomidis Spinellis</author>
        <author>(株)トップスタジオ</author>
        <author>鵜飼文敏</author>
        <author>後藤正徳</author>
        <author>平林俊一</author>
        <author>まつもとゆきひろ</author>
        <publisher>毎日コミニュニケーションズ</publisher>
        <price>5880</price>
    </book>
    <book isbn="4-8399-1777-9">
        <title>Light Weight Java</title>
        <author>岡本隆史</author>
        <author>吉田英嗣</author>
        <author>金子崇之</author>
        <author>権藤夏男</author>
        <publisher>毎日コミニュニケーションズ</publisher>
        <price>3360</price>
    </book>
</books>

ここから、著者()が2人以上の本を選択し、リスト2のようなXML文書を抽出したい。

リスト2 抽出したいXML文書

<book authorCount="6">
    <title>Code Quality ~コードリーディングによる非機能特性の識別技法~</title>
    <author>Diomidis Spinellis</author>
    <author>(株)トップスタジオ</author>
    <author>鵜飼文敏</author>
    <author>後藤正徳</author>
    <author>平林俊一</author>
    <author>まつもとゆきひろ</author>
</book>
<book authorCount="4">
    <title>Light Weight Java</title>
    <author>岡本隆史</author>
    <author>吉田英嗣</author>
    <author>金子崇之</author>
    <author>権藤夏男</author>
</book>

この場合、リスト3に示すようなクエリを発行すればよい。

リスト3 抽出クエリの例

for $b in fn:doc("books.xml")//book
let $bt := $b/title/text()
where fn:count($b/author) >= 2
return
    <book authorCount=="{ fn:count($p/author) }">
        <title>{ $bt } </title>
        <author>{ $b/author/text() }</author>
    </book>

ここで使われているのは「FLWR表現式」と呼ばれる表現式である。FLWR表現式は「for」「let」「where」「return」の4つの句から成る表現式で、SQLのselectを使った式とよく似ている。

for句は繰り返しを表し、in句で指定されたPath表現式の展開結果の各ノードに対してそれぞれ繰り返し処理を実行する。Path表現式はXPath 2.0仕様に準拠している。この例の場合、「fn:doc("books.xml")//book」は、books.xml中のノードを表している。抽出されたノードに対しては1つ以上の変数を割り当てることができる。この例ではノードに対して$bという変数を割り当てることになる。

let句では「[変数名]:=[Path表現式]」の形式で変数の割り当てを行う。この例で$bはforで抽出された各ノードに割り当てられるので、$btはそのサブノードであるのテキスト形式を表すことになる。</p> <p>where句はforおよびletで抽出された結果を、指定された条件でフィルタするためのものだ。ここでは著者が2名以上のものを抽出している。</p> <p>最後のreturn句は、このクエリの結果を生成する。return句はforとletで抽出されたタプルそれぞれに対して1回ずつ実行される。したがってこの例の場合は、<acthor>を2つ以上持つ<book>ノードに対して1回ずつ呼び出され、結果としてをリスト2のようなXML文書が生成される。</p> <h3>XQJによるプログラミング</h3> <p>では上記のようなXQueryをXQJではどのように扱うのだろうか。JSR 225は2007年6月よりPublic Draftが公開されている。そこにはXQJを使ってXML問い合わせを行う例としてリスト4のようなコードが紹介されている。</p> <h4>リスト4 XQJを利用したコード例</h4> <pre><code>// XMLデータソースオブジェクトを取得 XQDataSource xqds = ...; // XQueryエンジンへ接続 XQConnection conn = xqds.getConnection(); // クエリを実行するためのXQExpressionオブジェクトを生成 XQExpression expr = conn.createExpression(); // 実行するクエリ String es = "for $n in fn:doc('catalog.xml')//item " + "return fn:data($n/name)"; // クエリを実行し、結果をXQResultSequenceに格納 XQResultSequence result = expr.executeQuery(es); // 結果を解析して表示 while (result.next()) { // retrieve the current item of the sequence as a String String str = result.getAtomicValue(); System.out.println("Product name: " + str); } // コネクションのクローズ処理 result.close(); expr.close(); conn.close(); </code></pre> <p>詳細は、同時に公開されているXQJのjavadocと照らし合わせるとわかりやすい。XQConnectionはXQueryエンジンへの接続を保持するクラスであり、そのインスタンスはXQDataSourceオブジェクトから取得できる。XQDataSourceはXMLデータソースを表すクラスで、実際のデータソースはJNDIなどから取得する。</p> <p>実際にクエリを発行するためには、XQConnectionからXQExpressionを生成する。XQExpressionにはクエリ発行のためのexecuteQuery()メソッドが用意されており、ここにXQuery仕様に則った式を渡せば結果がXQResultSequenceとして返ってくる。あとはこれを解析すれば、クエリの結果を取得することができる。</p> <p>この一連の手順はJDBCを用いてRDBMSに問い合わせする場合とよく似ており、JDBCに慣れ親しんだ開発者にとっても理解しやすい。ただし、それならば同様の機能をJDBCで提供すれば新たなAPIを定義する必要はないのではないかという意見もある。IBMはJSR 225のPublic Draftに対して「JDBC仕様と分ける積極的な理由な見つからない」として承認投票を棄権している。Java EE 6への採用が見送られたこともあり、今後の動向が気になるところだ。</p> </div> <!-- #EndEditable --> <!-- google_ad_section_end(name=s1) --> </div><!--/articleContents--> <!-- #BeginEditable "pageNavi" --><div class="str-lyt-page-nav-06-outer-upper"><!-- fix for ie7 --> <div class="str-lyt-page-nav-06"> <div class="str-lyt-page-nav-06-l"> <ul class="lyt-page-nav-06"> <li class="top"><a href="/column/jsr/001/index.html" onclick="news_func.gaClick(this,news_vars.ch);"><span><<</span></a></li> <li class="pre"><a href="/column/jsr/027/index.html" onclick="news_func.gaClick(this,news_vars.ch);"><span><</span></a></li> </ul> </div><!--/str-lyt-page-nav-06-l--> <div class="str-lyt-page-nav-06-m"> <ul class="nav"> <li><a href="/column/jsr/024/index.html" onclick="news_func.gaClick(this,news_vars.ch);">24</a></li> <li><a href="/column/jsr/025/index.html" onclick="news_func.gaClick(this,news_vars.ch);">25</a></li> <li><a href="/column/jsr/026/index.html" onclick="news_func.gaClick(this,news_vars.ch);">26</a></li> <li><a href="/column/jsr/027/index.html" onclick="news_func.gaClick(this,news_vars.ch);">27</a></li> <li class="active">28</li><li><a href="/column/jsr/029/index.html" onclick="news_func.gaClick(this,news_vars.ch);">29</a></li> <li><a href="/column/jsr/030/index.html" onclick="news_func.gaClick(this,news_vars.ch);">30</a></li> <li><a href="/column/jsr/031/index.html" onclick="news_func.gaClick(this,news_vars.ch);">31</a></li> <li><a href="/column/jsr/032/index.html" onclick="news_func.gaClick(this,news_vars.ch);">32</a></li> </ul> </div><!--/str-lyt-page-nav-06-m--> <div class="str-lyt-page-nav-06-r"> <ul class="lyt-page-nav-06"> <li class="nxt"><a href="/column/jsr/029/index.html" onclick="news_func.gaClick(this,news_vars.ch);"><span>></span></a></li> <li class="last"><a href="/column/jsr/060/index.html" onclick="news_func.gaClick(this,news_vars.ch);"><span>>></span></a></li> </ul> </div><!--/str-lyt-page-nav-06-r--> <div class="str-lyt-page-nav-06-r2"> <p>28/60</p> </div><!--/str-lyt-page-nav-06-r2--> </div><!-- fix for ie7 --> </div> <!-- #EndEditable --> <!-- #BeginEditable "contentsList" --><div class="articleContent-02 box-newsindex"> <div class="lyt-hdg-03-06"><p>インデックス</p><span class="link"><a href="/column/jsr/index.html">連載目次</a></span></div> <table class="lyt-tbl-01" cellpadding="0" cellspacing="0"> <tbody> <tr> <th class="th01">第60回</th> <td><a href="/column/jsr/060/">どうなる? 今後のJavaプラットフォーム(Java SE編)</a></td> </tr> <tr> <th class="th01">第59回</th> <td><a href="/column/jsr/059/">どうなる? 今後のJavaプラットフォーム(Java EE編)</a></td> </tr> <tr> <th class="th01">第58回</th> <td><a href="/column/jsr/058/">Java SE 7の要注目機能"クロージャ"はどうなるのか その6</a></td> </tr> <tr> <th class="th01">第57回</th> <td><a href="/column/jsr/057/">Java SE 7の要注目機能"クロージャ"はどうなるのか その5</a></td> </tr> <tr> <th class="th01">第56回</th> <td><a href="/column/jsr/056/">Java SE 7の要注目機能"クロージャ"はどうなるのか その4</a></td> </tr> <tr> <th class="th01">第55回</th> <td><a href="/column/jsr/055/">Java SE 7の要注目機能"クロージャ"はどうなるのか その3</a></td> </tr> <tr> <th class="th01">第54回</th> <td><a href="/column/jsr/054/">Java SE 7の要注目機能"クロージャ"はどうなるのか その2</a></td> </tr> <tr> <th class="th01">第53回</th> <td><a href="/column/jsr/053/">Java SE 7の要注目機能"クロージャ"はどうなるのか</a></td> </tr> <tr> <th class="th01">第52回</th> <td><a href="/column/jsr/052/">Early Draftが公開されたJSF 2.0</a></td> </tr> <tr> <th class="th01">第51回</th> <td><a href="/column/jsr/051/">EJBから独立したJava Persistence 2.0</a></td> </tr> <tr> <th class="th01">第50回</th> <td><a href="/column/jsr/050/">モバイルJavaの新しい潮流となるか - MSA 2.0のドラフト公開</a></td> </tr> <tr> <th class="th01">第49回</th> <td><a href="/column/jsr/049/">やっぱり基本はServlet - Servlet 3.0のEarly Draftを読む</a></td> </tr> <tr> <th class="th01">第48回</th> <td><a href="/column/jsr/048/">JOGLで3Dプログラミング その4</a></td> </tr> <tr> <th class="th01">第47回</th> <td><a href="/column/jsr/047/">JOGLで3Dプログラミング その3</a></td> </tr> <tr> <th class="th01">第46回</th> <td><a href="/column/jsr/046/">JOGLで3Dプログラミング その2</a></td> </tr> <tr> <th class="th01">第45回</th> <td><a href="/column/jsr/045/">JOGLで3Dプログラミング</a></td> </tr> <tr> <th class="th01">第44回</th> <td><a href="/column/jsr/044/">JARファイルを効率的にネットワーク転送するためのPack200形式</a></td> </tr> <tr> <th class="th01">第43回</th> <td><a href="/column/jsr/043/">Early Draftで把握するEJB 3.1の新機能</a></td> </tr> <tr> <th class="th01">第42回</th> <td><a href="/column/jsr/042/">次世代の携帯端末向けJava仕様"MIDP 3.0"はどうなるか その2</a></td> </tr> <tr> <th class="th01">第41回</th> <td><a href="/column/jsr/041/">次世代の携帯端末向けJava仕様"MIDP 3.0"はどうなるか その1</a></td> </tr> <tr> <th class="th01">第40回</th> <td><a href="/column/jsr/040/">リソースアダプタによる接続の仕組み</a></td> </tr> <tr> <th class="th01">第39回</th> <td><a href="/column/jsr/039/">JCAを利用したシステム間接続</a></td> </tr> <tr> <th class="th01">第38回</th> <td><a href="/column/jsr/038/">Java EEと外部システムの接続性を支えるJCAがバージョンアップ</a></td> </tr> <tr> <th class="th01">第37回</th> <td><a href="/column/jsr/037/">Javaのモジュラリティ強化を担う"スーパーパッケージ"とは</a></td> </tr> <tr> <th class="th01">第36回</th> <td><a href="/column/jsr/036/">JSR 308対応のコンパイラを試す</a></td> </tr> <tr> <th class="th01">第35回</th> <td><a href="/column/jsr/035/">公開されたJSR 308のEarly Draftを検証する</a></td> </tr> <tr> <th class="th01">第34回</th> <td><a href="/column/jsr/034/">スクリプト言語とJavaを結びつけるJSR 223</a></td> </tr> <tr> <th class="th01">第33回</th> <td><a href="/column/jsr/033/">Java EE環境に統一されたコンポーネントモデルを提供するJSR 299 その2</a></td> </tr> <tr> <th class="th01">第32回</th> <td><a href="/column/jsr/032/">Java EE環境に統一されたコンポーネントモデルを提供するJSR 299 その1</a></td> </tr> <tr> <th class="th01">第31回</th> <td><a href="/column/jsr/031/">Javaの文法がそのまま使えるスクリプト言語"BeanShell"</a></td> </tr> <tr> <th class="th01">第30回</th> <td><a href="/column/jsr/030/">Javaアプリケーションにオブジェクトのキャッシュ機構を提供するJCache API</a></td> </tr> <tr> <th class="th01">第29回</th> <td><a href="/column/jsr/029/">Javaアプリケーションからのリソース管理を可能にするJSR 284</a></td> </tr> <tr> <th class="th01">第28回</th> <td><a href="/column/jsr/028/">XMLデータソースへの問い合わせはJSR 225で</a></td> </tr> <tr> <th class="th01">第27回</th> <td><a href="/column/jsr/027/">Portlet Specification 2.0をもっと手軽に利用する</a></td> </tr> <tr> <th class="th01">第26回</th> <td><a href="/column/jsr/026/">次期Javaポートレット仕様となるJSR 286</a></td> </tr> <tr> <th class="th01">第25回</th> <td><a href="/column/jsr/025/">JSFとポートレットをつなげるJSR 301</a></td> </tr> <tr> <th class="th01">第24回</th> <td><a href="/column/jsr/024/">Webサービス向けのポートレット仕様「WSRP」</a></td> </tr> <tr> <th class="th01">第23回</th> <td><a href="/column/jsr/023/">高い相互運用性を実現するポートレットAPI - JSR 168</a></td> </tr> <tr> <th class="th01">第22回</th> <td><a href="/column/jsr/022/">Java EE環境でタスクのスケジューリングを可能にするJSR 236</a></td> </tr> <tr> <th class="th01">第21回</th> <td><a href="/column/jsr/021/">Java EE環境でのスレッドプログラミングを可能にするJSR 237</a></td> </tr> <tr> <th class="th01">第20回</th> <td><a href="/column/jsr/020/">音声認識/合成のためのAPI - Java Speech APIとJSR 113</a></td> </tr> <tr> <th class="th01">第19回</th> <td><a href="/column/jsr/019/">JSR 291でJavaプラットフォームにダイナミックコンポーネントモデルを導入</a></td> </tr> <tr> <th class="th01">第18回</th> <td><a href="/column/jsr/018/">JAX-RSで簡単RESTful - JSR 311</a></td> </tr> <tr> <th class="th01">第17回</th> <td><a href="/column/jsr/017/">待望のServlet 3.0がJSRに登場 - JSR 315</a></td> </tr> <tr> <th class="th01">第16回</th> <td><a href="/column/jsr/016/">アノテーションを使ってバグ退治 - JSR 305</a></td> </tr> <tr> <th class="th01">第15回</th> <td><a href="/column/jsr/015/">アノテーションをさらに広い範囲で利用可能にするJSR 308</a></td> </tr> <tr> <th class="th01">第14回</th> <td><a href="/column/jsr/014/">Webアプリケーション開発の要となるか - JSF 2.0がJSRに登場</a></td> </tr> <tr> <th class="th01">第13回</th> <td><a href="/column/jsr/013/">Webサービス経由でのJMX Agentへの接続を可能にするJSR 262</a></td> </tr> <tr> <th class="th01">第12回</th> <td><a href="/column/jsr/012/">Javaアプリケーションのモジュール化をサポートするJava Module System</a></td> </tr> <tr> <th class="th01">第11回</th> <td><a href="/column/jsr/011/">"NIO.2"がやってきた - JSR 203: More New I/O APIs for the Java Platform</a></td> </tr> <tr> <th class="th01">第10回</th> <td><a href="/column/jsr/010/">JSR 295: Beans Bindingの参照実装を試す</a></td> </tr> <tr> <th class="th01">第9回</th> <td><a href="/column/jsr/009/">けっこう便利! 単位を扱うAPI -- JSR 275: Units Specification</a></td> </tr> <tr> <th class="th01">第8回</th> <td><a href="/column/jsr/008/">アノテーションでバリデーション - JSR 303: Bean Validator</a></td> </tr> <tr> <th class="th01">第7回</th> <td><a href="/column/jsr/007/">Swing開発の救世主となるか - Swing Application Framework</a></td> </tr> <tr> <th class="th01">第6回</th> <td><a href="/column/jsr/006/">JavaBeansのプロパティを同期させるバインディングAPI</a></td> </tr> <tr> <th class="th01">第5回</th> <td><a href="/column/jsr/005/">誰よりも早く"Java SE 7"を睨む</a></td> </tr> <tr> <th class="th01">第4回</th> <td><a href="/column/jsr/004/">日時情報の取り扱いを改善する JSR 310: Date and Time API</a></td> </tr> <tr> <th class="th01">第3回</th> <td><a href="/column/jsr/003/">古いAPIも進化している!? - JSR 919: JavaMail 1.4</a></td> </tr> <tr> <th class="th01">第2回</th> <td><a href="/column/jsr/002/">JSR 1 リアルタイムJava仕様</a></td> </tr> <tr> <th class="th01">第1回</th> <td><a href="/column/jsr/001/">JCPによって進められるJava関連技術の標準化</a></td> </tr> </tbody> </table> <p class="a_r btn-more"><a href="#">もっと見る</a></p> <script async src="http://n.mynv.jp/js/parts_pager.js" type="text/javascript"></script> </div> <!-- #EndEditable --> <div class="contentsBottom"> <!-- /6082618/mn.contbottom1 --> <div id='div-gpt-ad-1479185899023-0'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1479185899023-0'); }); </script> </div> <!-- /6082618/mn.contbottom2 --> <div id='div-gpt-ad-1479185899023-1'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1479185899023-1'); }); </script> </div> </div> <script> (function() { var contBottomObj = $('.contentsBottom'); var article = document.querySelector('.articleContent'); var adInsert = document.querySelector('#ad_insert'); var nextPage = document.querySelector('.btn-nextpage-03'); if (news_vars.msite) { if (nextPage) { nextPage.parentElement.insertBefore(contBottomObj[0], nextPage); contBottomObj[0].style.marginBottom = '10px'; } else{ document.querySelector('.articleContent').appendChild(contBottomObj[0]); } } if (contBottomObj && typeof(contBottomObj) != "undefined") { if (contBottomObj.find('li').length > 0) { $('.contentsBottom').addClass('microsite-lead-under-article'); } else if(contBottomObj.find('iframe').length > 0) { $('.contentsBottom').addClass('banner'); } else { $('.contentsBottom').css('margin-bottom','10px') //contBottomObj.hide(); } } })(); </script> <!-- #BeginEditable "seriesAd" --><blockquote> <h4> 提供:<a href="http://job.mynavi.jp/conts/2010/kaiin/touroku.html" target="_blank">マイナビ</a> </h4> <div class="right"> <a href="http://job.mynavi.jp/conts/2010/kaiin/touroku.html" target="_blank"><img src="http://journal.mycom.co.jp/column/jsr/images/mynavi2009.gif" alt="会員登録はこちら" width="120" height="35" border="0"></a> </div> <p>大学・大学院・短大・専門学生向けの就職情報サイト「マイナビ2010」「マイナビ2009」に今すぐ登録しよう!  大手企業からベンチャー企業までの約13,000社の企業情報を公開、エントリーが可能です。2010年卒予定の方は「マイナビ2010」に、2009年卒予定の方は「マイナビ2009」に登録してください。</p> <p>毎日コミュニケーションズは<a href="http://privacymark.jp/" target="_blank">プライバシーマーク</a>を取得しています。 </p> </blockquote><!-- #EndEditable --> </div><!--/lyt-box-01--> <!-- #BeginEditable "linkShareAffiliate" --><!-- #EndEditable --> <!-- #BeginEditable "tagList" --><!-- #EndEditable --> <div class="lyt-box-01 lyt-box-special"> <div class="clearfix"> <!-- #BeginEditable "socialBookmarkListBigButton" --><div class="str-icon-social" style="display:none;"> </div> <script> $('.str-icon-social').parent().parent().hide(); </script> <!-- #EndEditable --> </div><!--/clearfix--> </div><!--/lyt-box-01--> <!-- #BeginEditable "underArticle4pm" --><!-- #EndEditable --> <!-- #BeginEditable "linkBlog" --><!-- linkBlog --> <!-- #EndEditable --> <!-- #BeginEditable "ad_Inread" --><!-- ad_Inread --> <!-- /6082618/mn.inread --> <div id='div-gpt-ad-1466143984602-1'> <script type='text/javascript'> if(!$("body").hasClass("welcome") && $('#mn-welcome').length <= 0){ googletag.cmd.push(function() { googletag.display('div-gpt-ad-1466143984602-1'); }); } </script> </div> <script> (function () { var inread_html = $('#div-gpt-ad-1466143984602-1'); var inread_article_area = $('#str-contentsleft .articleContent div[itemprop="articleBody"]>p'); if($('.right .Photo1:last').length > 0){ var inread_index=inread_article_area.length-1; } else{ var inread_index=Math.round(inread_article_area.length/2)-1; } if(inread_index < 1)inread_index=0; var inread_article_point = inread_article_area.eq(inread_index); inread_article_area.eq(inread_index).after(inread_html); })(); </script><!-- #EndEditable --> <!-- #BeginEditable "relativeArticle" --><div id="relativeArticle"> <div class="lyt-hdg-02"><h3>関連記事</h3></div> <div class="lyt-box-02" data-click="dc-relative"> <table class="lyt-tbl-headline lyt-tbl-bg" cellpadding="0" cellspacing="0"> <tbody> <tr> <td class="sum"><a href="/news/2007/09/18/006/" onClick="news_func.gaClick(this,news_vars.ch);"><img src="/images/no_image_s.jpg"/></a></td> <td><a href="/news/2007/09/18/006/" onClick="news_func.gaClick(this,news_vars.ch);">XMLマスター新資格のベータ試験受験者を公募</a><br/>[2007/9/18]</td> </tr> <tr> <td class="sum"><a href="/news/2007/07/12/009/" onClick="news_func.gaClick(this,news_vars.ch);"><img src="/images/no_image_s.jpg"/></a></td> <td><a href="/news/2007/07/12/009/" onClick="news_func.gaClick(this,news_vars.ch);">「Oracle Database 11g」正式発表 - 30年の集大成をアピール</a><br/>[2007/7/12]</td> </tr> <tr> <td class="sum"><a href="/news/2007/07/04/033/" onClick="news_func.gaClick(this,news_vars.ch);"><img src="/images/no_image_s.jpg"/></a></td> <td><a href="/news/2007/07/04/033/" onClick="news_func.gaClick(this,news_vars.ch);">Java EE 6、仕様策定開始</a><br/>[2007/7/4]</td> </tr> <tr> <td class="sum"><a href="/news/2007/01/26/363.html" onClick="news_func.gaClick(this,news_vars.ch);"><img src="/images/no_image_s.jpg"/></a></td> <td><a href="/news/2007/01/26/363.html" onClick="news_func.gaClick(this,news_vars.ch);">待望のリリース! XQuery 1.0、XSLT 2.0そしてXPath 2.0が登場</a><br/>[2007/1/26]</td> </tr> </tbody> </table> </div> </div> <!-- #EndEditable --> <div id="ad-insert-replace"></div> <!-- #BeginEditable "relativeLink" --><div id="relativeLink"> <div class="lyt-hdg-02"><h3>関連サイト</h3></div> <div class="lyt-box-02"> <table class="lyt-tbl-01" cellpadding="0" cellspacing="0"> <tbody> <tr> <td><a rel="nofollow" href="http://jcp.org/en/jsr/detail?id=225" target="_blank">JSR 225: XQuery API for Java(XQJ)</a></td> </tr> <tr> <td><a rel="nofollow" href="http://www.w3.org/TR/xquery/" target="_blank">XQuery 1.0: An XML Query Language</a></td> </tr> <tr> <td><a rel="nofollow" href="http://www.w3.org/TR/xpath20/" target="_blank">XML Path Language (XPath) 2.0</a></td> </tr> </tbody> </table> </div> </div> <!-- #EndEditable --> <!-- #BeginEditable "underArticleAd" --><div id="ad_insert_wp" data-click="dc-ad_insert_wp_enterprise_under-article-ad" > <div class="lyt-hdg-02 lyt-btn-innerhdg"><h3>IT製品 "比較/検討" 情報</h3></div> <div class="lyt-container"> <div class="lyt-box-bnr-01"> <div class="lyt-bnrarea"> <ul class="equalize"> <li> <div class="lyt-bnr" style="position:relative;"><p> <a href="https://news.mynavi.jp/itsearch/seminar/109" target="_blank" title="あなたの知らないGoogleマップ ~Google担当者が教えるパラダイムシフト~" onClick="news_func.gaClick(this,this.href,'mnClickAd');"> <img src="https://n.mynv.jp/kouimg/tiup/itsearch/banner/20170807_300-250_seminar1.jpg" style="max-width:120px;max-height:120px;"> <span style="filter:alpha(opacity=80);-moz-opacity:0.8;opacity:0.8;text-align:left;width:111px;position:absolute;top:0px;left:0px;border:none;padding:3px 3px 3px 6px;background-color:#0096DB;color:#fff;"><span style="font-weight:bold;"> セミナー</span></span> </a> </p></div> <div class="lyt-txt"> <a href="https://news.mynavi.jp/itsearch/seminar/109" target="_blank" onClick="news_func.gaClick(this,this.href,'mnClickAd');"> [8/31(木)開催]<br />あなたの知らない<span style="font-weight: bold;">Googleマップ</span></a> </div> </li> <li> <div class="lyt-bnr" style="position:relative;"><p> <a href="https://news.mynavi.jp/itsearch/seminar/111" target="_blank" title="AI × 働き方改革 元MS越川氏が明かす、正しい改革方法" onClick="news_func.gaClick(this,this.href,'mnClickAd');"> <img src="https://n.mynv.jp/kouimg/tiup/itsearch/banner/20170807_300-250_seminar3.jpg" style="max-width:120px;max-height:120px;"> <span style="filter:alpha(opacity=80);-moz-opacity:0.8;opacity:0.8;text-align:left;width:111px;position:absolute;top:0px;left:0px;border:none;padding:3px 3px 3px 6px;background-color:#0096DB;color:#fff;"><span style="font-weight:bold;"> セミナー</span></span> </a> </p></div> <div class="lyt-txt"> <a href="https://news.mynavi.jp/itsearch/seminar/111" target="_blank" onClick="news_func.gaClick(this,this.href,'mnClickAd');"> [9/6(水)開催]<br />AI × <span style="font-weight: bold;">働き方改革</span> 元MS越川氏の改革方法</a> </div> </li> <li> <div class="lyt-bnr" style="position:relative;"><p> <a href="https://news.mynavi.jp/itsearch/seminar/112" target="_blank" title="絶え間なく進化する攻撃へ対応! 次世代セキュリティ対策セミナー~未知の脅威から企業を守れ~" onClick="news_func.gaClick(this,this.href,'mnClickAd');"> <img src="https://n.mynv.jp/kouimg/tiup/itsearch/banner/20170807_120-120_seminar.jpg" style="max-width:120px;max-height:120px;"> <span style="filter:alpha(opacity=80);-moz-opacity:0.8;opacity:0.8;text-align:left;width:111px;position:absolute;top:0px;left:0px;border:none;padding:3px 3px 3px 6px;background-color:#0096DB;color:#fff;"><span style="font-weight:bold;"> セミナー</span><span style="float:right;">PR</span></span> </a> </p></div> <div class="lyt-txt"> <a href="https://news.mynavi.jp/itsearch/seminar/112" target="_blank" onClick="news_func.gaClick(this,this.href,'mnClickAd');"> [9/8(金)開催]<br />進化する攻撃! 次世代<span style="font-weight: bold;">セキュリティ対策</span></a> </div> </li> <li> <div class="lyt-bnr" style="position:relative;"><p> <a href="https://news.mynavi.jp/itsearch/seminar/101" target="_blank" title="落合陽一が語る! 近未来のテクノロジー" onClick="news_func.gaClick(this,this.href,'mnClickAd');"> <img src="https://n.mynv.jp/kouimg/tiup/itsearch/banner/20170807_300-250_seminar2.jpg" style="max-width:120px;max-height:120px;"> <span style="filter:alpha(opacity=80);-moz-opacity:0.8;opacity:0.8;text-align:left;width:111px;position:absolute;top:0px;left:0px;border:none;padding:3px 3px 3px 6px;background-color:#0096DB;color:#fff;"><span style="font-weight:bold;"> セミナー</span></span> </a> </p></div> <div class="lyt-txt"> <a href="https://news.mynavi.jp/itsearch/seminar/101" target="_blank" onClick="news_func.gaClick(this,this.href,'mnClickAd');"> [9/13(水)開催]<br /><span style="font-weight: bold;">落合陽一</span>が語る! 近未来のテクノロジー</a> </div> </li> <li> <div class="lyt-bnr" style="position:relative;"><p> <a href="http://news.mynavi.jp/ad/2017/enterprise/workstyle2017/" target="_blank" title="働き方改革特集" onClick="news_func.gaClick(this,this.href,'mnClickAd');"> <img src="http://n.mynv.jp/kouimg/tiup/itsearch/banner/20170622_120-120_kikaku.jpg" style="max-width:120px;max-height:120px;"> <span style="filter:alpha(opacity=80);-moz-opacity:0.8;opacity:0.8;text-align:left;width:111px;position:absolute;top:0px;left:0px;border:none;padding:3px 3px 3px 6px;background-color:#142B8D;color:#fff;"> <span style="font-weight:bold;">特集</span><span style="float:right;">PR</span></span> </a> </p></div> <div class="lyt-txt"> <a href="http://news.mynavi.jp/ad/2017/enterprise/workstyle2017/" target="_blank" onClick="news_func.gaClick(this,this.href,'mnClickAd');"> [特集]<br><span style="font-weight: bold;">働き方改革</span>特集 - ITで実現させる </a> </div> </li> <li> <div class="lyt-bnr" style="position:relative;"><p> <a href="https://news.mynavi.jp/itsearch/product/erp/299" target="_blank" title="SuperStream-NX 会計ソリューション" onClick="news_func.gaClick(this,this.href,'mnClickAd');"> <img src="https://news.mynavi.jp/itsearch/assets/public/images/product/299/img/main_%E5%90%8D%E7%A7%B0%E6%9C%AA%E8%A8%AD%E5%AE%9A-1.jpg" style="max-width:120px;max-height:120px;"> <span style="filter:alpha(opacity=80);-moz-opacity:0.8;opacity:0.8;text-align:left;width:111px;position:absolute;top:0px;left:0px;border:none;padding:3px 3px 3px 6px;background-color:#3C5E66;color:#fff;font-weight:bold;"> 製品情報</span> </a> </p></div> <div class="lyt-txt"> <a href="https://news.mynavi.jp/itsearch/product/erp/299" target="_blank" onClick="news_func.gaClick(this,this.href,'mnClickAd');"> [ERP]<br />日本の会計・人事を変える。”もっと優しく” ”もっと便利に” </div> </li> <li> <div class="lyt-bnr" style="position:relative;"><p> <a href="https://news.mynavi.jp/itsearch/product/endsecurity/114" target="_blank" title="ウイルスバスターコーポレートエディション Client / Server Suite Premium" onClick="news_func.gaClick(this,this.href,'mnClickAd');"> <img src="https://news.mynavi.jp/itsearch/assets/public/images/product/114/img/main_TM_logo_newtag_stack_2c.jpg" style="max-width:120px;max-height:120px;"> <span style="filter:alpha(opacity=80);-moz-opacity:0.8;opacity:0.8;text-align:left;width:111px;position:absolute;top:0px;left:0px;border:none;padding:3px 3px 3px 6px;background-color:#3C5E66;color:#fff;font-weight:bold;"> 製品情報</span> </a> </p></div> <div class="lyt-txt"> <a href="https://news.mynavi.jp/itsearch/product/endsecurity/114" target="_blank" onClick="news_func.gaClick(this,this.href,'mnClickAd');"> [エンドポイントセキュリティ]<br />多階層防御により強固ながら軽快なセキュリティ対策を実現 </a> </div> </li> <li> <div class="lyt-bnr" style="position:relative;"><p> <a href="https://news.mynavi.jp/itsearch/product/netsecurity/161" target="_blank" title="プライベートCA Gléas(グレアス)" onClick="news_func.gaClick(this,this.href,'mnClickAd');"> <img src="https://news.mynavi.jp/itsearch/assets/public/images/product/161/img/main_%E6%A6%82%E5%BF%B5%E5%9B%B3_event_panel_s.png" style="max-width:120px;max-height:120px;"> <span style="filter:alpha(opacity=80);-moz-opacity:0.8;opacity:0.8;text-align:left;width:111px;position:absolute;top:0px;left:0px;border:none;padding:3px 3px 3px 6px;background-color:#3C5E66;color:#fff;font-weight:bold;"> 製品情報</span> </a> </p></div> <div class="lyt-txt"> <a href="https://news.mynavi.jp/itsearch/product/netsecurity/161" target="_blank" onClick="news_func.gaClick(this,this.href,'mnClickAd');"> [ネットワークセキュリティ]<br />PC・スマホ・タブレットの安全利用を、手軽な運用で実現 </a> </div> </li> <li> <div class="lyt-bnr" style="position:relative;"><p> <a href="https://news.mynavi.jp/itsearch/product/storage/18" target="_blank" title="Nimble Storage CSシリーズ" onClick="news_func.gaClick(this,this.href,'mnClickAd');"> <img src="https://news.mynavi.jp/itsearch/assets/public/images/product/18/img/main_NimbleStorage-front-stack-72dpi.jpg" style="max-width:120px;max-height:120px;"> <span style="filter:alpha(opacity=80);-moz-opacity:0.8;opacity:0.8;text-align:left;width:111px;position:absolute;top:0px;left:0px;border:none;padding:3px 3px 3px 6px;background-color:#3C5E66;color:#fff;font-weight:bold;"> 製品情報</span> </a> </p></div> <div class="lyt-txt"> <a href="https://news.mynavi.jp/itsearch/product/storage/18" target="_blank" onClick="news_func.gaClick(this,this.href,'mnClickAd');"> [ストレージ]<br />SSDとHDDを独自技術で最適活用するアダプティブストレージ </a> </div> </li> <li> <div class="lyt-bnr" style="position:relative;"><p> <a href="https://news.mynavi.jp/itsearch/product/loadbalancer/127" target="_blank" title="Nimble Storage CSシリーズ" onClick="news_func.gaClick(this,this.href,'mnClickAd');"> <img src="https://news.mynavi.jp/itsearch/assets/public/images/product/127/img/main_LoadBalancer-3401.png" style="max-width:120px;max-height:120px;"> <span style="filter:alpha(opacity=80);-moz-opacity:0.8;opacity:0.8;text-align:left;width:111px;position:absolute;top:0px;left:0px;border:none;padding:3px 3px 3px 6px;background-color:#3C5E66;color:#fff;font-weight:bold;"> 製品情報</span> </a> </p></div> <div class="lyt-txt"> <a href="https://news.mynavi.jp/itsearch/product/loadbalancer/127" target="_blank" onClick="news_func.gaClick(this,this.href,'mnClickAd');"> [負荷分散スイッチ]<br />ロードバランサ市場の最低価格に挑戦 </a> </div> </li> </ul> </div><!--/lyt-bnrarea--> <ul> <li class="lyt-link-pre"><a href="#"><span>前を見る</span></a></li> <li class="lyt-link-nxt"><a href="#"><span>次を見る</span></a></li> </ul> </div><!--/lyt-box-bnr-01--> </div><!--/lyt-container--> </div><!-- #EndEditable --> <div class="fb-recommendation"></div> <div id="googleAds"> <!-- #BeginEditable "R_ad-300tile5" --><div id="r_ad-300tile5" class="lyt-doc-01"> <!-- /6082618/mn.recl --> <div id='div-gpt-ad-1479185899023-18'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1479185899023-18'); }); </script> </div> </div><!-- #EndEditable --> <div class="double-rectangle-spacer"></div> <!-- #BeginEditable "R_ad-300tile6" --><div id="r_ad-300tile6" class="lyt-doc-01"> <!-- /6082618/mn.recr --> <div id='div-gpt-ad-1479185899023-19'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1479185899023-19'); }); </script> </div> </div><!-- #EndEditable --> </div> <div id="_popIn_recommend"></div> <!-- #BeginEditable "amazonAffiliate" --><!-- #EndEditable --> <!-- #BeginEditable "articleChHeadline" --><div id="articleChHeadline"> <div class="lyt-hdg-02"><h3>新着記事</h3></div> <div class="lyt-box-02" data-click="dc-l-headline"> <table class="lyt-tbl-01" cellpadding="0" cellspacing="0"> <tbody> <tr> <td><a href="/column/iot_security/005/index.html">今なら間に合うIoTセキュリティ 第5回 便利な生活の落とし穴、あなたのスマートホームは大丈夫?(2)スマートホームのセキュリティ</a> [09:00 8/23]</td> </tr> <tr> <td><a href="https://news.mynavi.jp/itsearch/article/solution/3016?hl">アドバンスト・メディア、建設業向け音声認識サービスを9月1日から販売開始</a> [08:30 8/23]</td> </tr> <tr> <td><a href="/kikaku/2017/08/23/002/index.html">【特別企画】今さら聞けない「多層防御」の落とし穴、プロが教えるネットワークセキュリティの賢い選択</a> [08:00 8/23]</td> </tr> <tr> <td><a href="/kikaku/2017/08/23/001/index.html">【特別企画】多層防御からもう一歩踏み込んだ新時代のセキュリティのかたち - エンドポイントとゲートウェイの連携が鍵</a> [08:00 8/23]</td> </tr> <tr> <td><a href="/series/infosys_tamachan/040/index.html">情シスのタマちゃん 第40回 本社出張①</a> [07:00 8/23]</td> </tr> </tbody> </table> </div><!--/lyt-box-02--> </div><!--/articleChHeadline--><!-- #EndEditable --> <!-- #BeginEditable "tokusetsu-site-info" --> <!-- #EndEditable --> <!-- <div id="374715079" style="margin-bottom:10px;"> --> <script type="text/javascript"> /* if(!is_kikaku() && typeof news_vars.msite == 'undefined') { try { window._mNHandle.queue.push(function () { window._mNDetails.loadTag("374715079", "620x96", "374715079"); }); } catch (error) {} } */ </script> <!-- </div> --> <!-- #BeginEditable "ad-mini" --><div id="admini" style="margin-bottom: 10px;"> <!-- /6082618/mn.footer --> <div id='div-gpt-ad-1479185899023-4'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1479185899023-4'); }); </script> </div> </div><!-- #EndEditable --> </div><!-- /str_contentsleft--> <div id="str-contentsright"> <!-- #BeginEditable "R_ad-intel" --><!-- #EndEditable --> <!-- #BeginEditable "R_tenshokuKnowhow-enterprise" --><div class="ts"> <div class="lyt-hdg-02 lyt-btn-innerhdg"><h2>転職ノウハウ</h2></div> <div class="lyt-box-02"> <div class="bg_even item"> <div class="ts_icon"><a href="https://tenshoku.mynavi.jp/opt/joblicious/?utm_source=it01&utm_medium=news&utm_campaign=mnews&tm_content=joblicious" target="_blank"><img width="30" height="30" src="http://n.mynv.jp/include/tenshoku/images/icon_job.jpg" alt="シゴト性格・弱点が20の質問でサクッと分かる!"></a></div><div><a href="https://tenshoku.mynavi.jp/opt/joblicious/?utm_source=it01&utm_medium=news&utm_campaign=mnews&tm_content=joblicious" target="_blank">シゴト性格・弱点が20の質問でサクッと分かる!</a> </div> </div> <div class="bg_odd item"> <div class="ts_icon"><a href="https://tenshoku.mynavi.jp/it-engineer/knowhow/harukasan/01?utm_source=it02&utm_medium=news&utm_campaign=mnews&tm_content=harukasan" target="_blank"><img width="30" height="30" src="http://n.mynv.jp/include/tenshoku/images/haruka.jpg" alt="美人バーテンダー「ハルカさん」に首筋の匂いをかがれて……シュウヘイ昇天!"></a></div><div><a href="https://tenshoku.mynavi.jp/it-engineer/knowhow/harukasan/01?utm_source=it02&utm_medium=news&utm_campaign=mnews&tm_content=harukasan" target="_blank">美人バーテンダー「ハルカさん」に首筋の匂いをかがれて……<br> シュウヘイ昇天!</a> </div> </div> <div class="bg_even item"> <div class="ts_icon"><a href="https://tenshoku.mynavi.jp/knowhow/yametai?utm_source=it03&utm_medium=news&utm_campaign=mnews&tm_content=yametai" target="_blank"><img width="30" height="30" src="http://n.mynv.jp/include/tenshoku/images/icon_fyametai.jpg" alt="71%の人が「仕事を辞めたい」と思った経験あり。その理由と対処法は?"></a></div><div><a href="https://tenshoku.mynavi.jp/knowhow/yametai?utm_source=it03&utm_medium=news&utm_campaign=mnews&tm_content=yametai" target="_blank">71%の人が「仕事を辞めたい」と思った経験あり。その理由と対処法は?</a> </div> </div> <div class="bg_odd item"> <div class="ts_icon"><a href="https://tenshoku.mynavi.jp/it-engineer/knowhow/yamebijo/01?utm_source=it04&utm_medium=news&utm_campaign=mnews&tm_content=yamebijo" target="_blank"><img width="30" height="30" src="http://n.mynv.jp/include/tenshoku/images/icon_yamebijo.jpg" alt="美人上司と可愛い過ぎる後輩に挟まれるエンジニアの悩み"></a></div><div><a href="https://tenshoku.mynavi.jp/it-engineer/knowhow/yamebijo/01?utm_source=it04&utm_medium=news&utm_campaign=mnews&tm_content=yamebijo" target="_blank">美人上司と可愛い過ぎる後輩に挟まれるエンジニアの悩み</a> </div> </div> <div class="bg_even item"> <div class="ts_icon"><a href="https://tenshoku.mynavi.jp/it-engineer/knowhow/naoya_sushi/01/?utm_source=it05&utm_medium=news&utm_campaign=mnews&tm_content=sushi" target="_blank"><img width="30" height="30" src="http://n.mynv.jp/include/tenshoku/images/icon_sushi.jpg" alt="飲み会で探るエンジニアのホンネ #naoya_sushi 編"></a></div><div><a href="https://tenshoku.mynavi.jp/it-engineer/knowhow/naoya_sushi/01/?utm_source=it05&utm_medium=news&utm_campaign=mnews&tm_content=sushi" target="_blank">飲み会で探るエンジニアのホンネ #naoya_sushi 編</a> </div> </div> <div class="bg_odd item"> <div class="ts_icon"><a href="https://tenshoku.mynavi.jp/opt/nenshu/?utm_source=it06&utm_medium=news&utm_campaign=mnews&tm_content=nenshu" target="_blank"><img width="30" height="30" src="http://n.mynv.jp/include/tenshoku/images/nenshu.jpg" alt="今の年収は適正? 3年後は? あなたの年収をデータに基づき予報します"></a></div><div><a href="https://tenshoku.mynavi.jp/opt/nenshu/?utm_source=it06&utm_medium=news&utm_campaign=mnews&tm_content=nenshu" target="_blank">今の年収は適正? 3年後は? あなたの年収をデータに基づき予報します</a> </div> </div> <div class="more"><a href="http://tenshoku.mynavi.jp/knowhow/?utm_source=lc00&utm_medium=news&utm_campaign=mnews&tm_content=knowhow" target="_blank">...もっと見る</a></div><div class="tslogo">提供:<a href="http://tenshoku.mynavi.jp" target="_blank" >転職サイトはマイナビ転職</a> </div> </div> </div> <!-- #EndEditable --> <!-- #BeginEditable "R_ad-kikaku-a" --><div class="logly-tokki-a"></div> <script charset="UTF-8"> (function(){ var logly_tokki_a = { 'top': '3784660', 'business': '3826796', 'digital': '3826797', 'kurashi': '3826798', 'entertainment': '3826799' }; var genre_dir = news_vars.genre; if(!news_vars.genre || news_vars.genre == ''){genre_dir='top'}; $('.logly-tokki-a').attr('id', 'logly-lift-' + logly_tokki_a[genre_dir]); var _lgy_lw = document.createElement("script"); _lgy_lw.type = "text/javascript"; _lgy_lw.charset = "UTF-8"; _lgy_lw.async = true; _lgy_lw.src= (("https:" == document.location.protocol) ? "https://" : "http://")+"l.logly.co.jp/lift_widget.js?adspot_id=" + logly_tokki_a[genre_dir]; var _lgy_lw_0 = document.getElementsByTagName("script")[0]; _lgy_lw_0.parentNode.insertBefore(_lgy_lw, _lgy_lw_0); })(); </script><!-- #EndEditable --> <!-- #BeginEditable "R_ad-300tile2" --><div id="r_ad-300tile2" class="lyt-doc-01"> <!-- /6082618/mn.recb --> <div id='div-gpt-ad-1479185899023-16'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1479185899023-16'); }); </script> </div> </div><!-- #EndEditable --> <!-- #BeginEditable "R_accessRanking" --><!--r_access-ranking an--> <script>news_vars.time.right_date = new Date();</script> <div class="tabContainer" id="tab-aside" data-click="dc-rank"> <div class="lyt-hdg-02 lyt-btn-innerhdg"><p>人気記事</p><span class="btn"><a href="/enterprise/ranking/index.html">一覧</a></span></div> <ul class="lyt-tb-ranking tabList"> <li class="tb-ranking01 active"><a class="nClick_side_ranking_tab1" href="#r_access-ranking-01"><span>1日</span></a></li> <li class="tb-ranking02"><a class="nClick_side_ranking_tab2" href="#r_access-ranking-02"><span>1週間</span></a></li> <li class="tb-ranking03"><a class="nClick_side_ranking_tab3" href="#r_access-ranking-03"><span>1カ月</span></a></li> <li class="tb-ranking04"><a class="nClick_side_ranking_tab4" href="#r_access-ranking-04"><span>瞬間</span></a></li> </ul> <div class="lyt-box-02"> <div class="static n2Click"> <div id="r_access-ranking-01" class="tabs-items active"> <ul class="lyt-list-rank-01"> <li class="rank1"> <div class="rank"><span>1</span></div> <span><a class="nClick_side_ranking" href="/news/2017/08/22/174/">Google、Android 8.0 Oreo 発表</a></span> </li> <li class="rank2"> <div class="rank"><span>2</span></div> <span><a class="nClick_side_ranking" href="/news/2017/08/21/179/">Oracle、Java EEをオープンソースコミュニティに手渡す案を発表</a></span> </li> <li class="rank3"> <div class="rank"><span>3</span></div> <span><a class="nClick_side_ranking" href="/news/2017/08/22/050/">Facebook、React.jsのライセンスを維持 - Apacheとの衝突を回避せず</a></span> </li> <li class="rank4"> <div class="rank"><span>4</span></div> <span><a class="nClick_side_ranking" href="/news/2017/08/18/022/">ソニー、ディープラーニングの統合開発環境を無償提供</a></span> </li> <li class="rank5"> <div class="rank"><span>5</span></div> <span><a class="nClick_side_ranking" href="/news/2017/08/21/181/">SlackにかわるOSSチームチャットアプリ5選</a></span> </li> </ul> </div> <div id="r_access-ranking-02" class="tabs-items "> <ul class="lyt-list-rank-01"> <li class="rank1"> <div class="rank"><span>1</span></div> <span><a class="nClick_side_ranking" href="/news/2017/08/18/022/">ソニー、ディープラーニングの統合開発環境を無償提供</a></span> </li> <li class="rank2"> <div class="rank"><span>2</span></div> <span><a class="nClick_side_ranking" href="/news/2017/08/22/174/">Google、Android 8.0 Oreo 発表</a></span> </li> <li class="rank3"> <div class="rank"><span>3</span></div> <span><a class="nClick_side_ranking" href="/news/2017/08/21/179/">Oracle、Java EEをオープンソースコミュニティに手渡す案を発表</a></span> </li> <li class="rank4"> <div class="rank"><span>4</span></div> <span><a class="nClick_side_ranking" href="/news/2017/08/17/031/">.NET Core 2.0登場</a></span> </li> <li class="rank5"> <div class="rank"><span>5</span></div> <span><a class="nClick_side_ranking" href="/news/2017/08/16/070/">ITパスポート試験に9歳が合格、最年少記録を更新 - IPA</a></span> </li> </ul> </div> <div id="r_access-ranking-03" class="tabs-items "> <ul class="lyt-list-rank-01"> <li class="rank1"> <div class="rank"><span>1</span></div> <span><a class="nClick_side_ranking" href="/news/2017/07/26/250/">Apple、SafariにおけるFlash終了への対応を発表</a></span> </li> <li class="rank2"> <div class="rank"><span>2</span></div> <span><a class="nClick_side_ranking" href="/news/2017/08/04/075/">JavaとCが史上最も低い値 - 8月プログラミング言語ランキング</a></span> </li> <li class="rank3"> <div class="rank"><span>3</span></div> <span><a class="nClick_side_ranking" href="/news/2017/07/26/296/">Google、ChromeにおけるFlash終了への対応発表</a></span> </li> <li class="rank4"> <div class="rank"><span>4</span></div> <span><a class="nClick_side_ranking" href="/news/2017/08/07/203/">lsコマンドに替わるコマンド「exa」とは</a></span> </li> <li class="rank5"> <div class="rank"><span>5</span></div> <span><a class="nClick_side_ranking" href="/news/2017/07/27/046/">Intel第8世代Coffee Lake-Sプロセッサ情報が公開</a></span> </li> </ul> </div> <div id="r_access-ranking-04" class="tabs-items "> <ul class="lyt-list-rank-01"> <li class="rank1"> <div class="rank"><span>1</span></div> <span><a class="nClick_side_ranking" href="/news/2017/08/22/174/">Google、Android 8.0 Oreo 発表</a></span> </li> <li class="rank2"> <div class="rank"><span>2</span></div> <span><a class="nClick_side_ranking" href="/news/2017/08/18/022/">ソニー、ディープラーニングの統合開発環境を無償提供</a></span> </li> <li class="rank3"> <div class="rank"><span>3</span></div> <span><a class="nClick_side_ranking" href="/news/2017/08/22/050/">Facebook、React.jsのライセンスを維持 - Apacheとの衝突を回避せず</a></span> </li> <li class="rank4"> <div class="rank"><span>4</span></div> <span><a class="nClick_side_ranking" href="/news/2017/05/16/078/">Google、Androidのアップデートを容易にするプロジェクト「Treble」</a></span> </li> <li class="rank5"> <div class="rank"><span>5</span></div> <span><a class="nClick_side_ranking" href="/news/2017/08/21/179/">Oracle、Java EEをオープンソースコミュニティに手渡す案を発表</a></span> </li> </ul> </div> <!-- #EndEditable --> <!-- #BeginEditable "R_accessRanking2" --><div id="r_access-ranking-04" class="tabs-items"> <ul class="lyt-list-rank-01"> <li class="rank1"> <div class="rank"><span>1</span></div> <span><a href="/news/2017/08/23/030/index.html">松雪泰子、永野芽郁は"天然さん"「同じ匂いが…」- 来春朝ドラで母娘役</a></span></li> <li class="rank2"> <div class="rank"><span>2</span></div> <span><a href="/news/2017/08/22/174/index.html">Google、Android 8.0 Oreo 発表</a></span></li> <li class="rank3"> <div class="rank"><span>3</span></div> <span><a href="/news/2017/08/22/063/index.html">スマホのリソースを消費するAndroidアプリランキング、第1位は?</a></span></li> <li class="rank4"> <div class="rank"><span>4</span></div> <span><a href="/news/2017/08/16/038/index.html">国内ITサービス市場、売上第2位はNEC - 第1位は?</a></span></li> <li class="rank5"> <div class="rank"><span>5</span></div> <span><a href="/news/2017/08/23/043/index.html">[ひよっこ]劇中マンガのココがすごい! 作画担当・海老原優さんのこだわり</a></span></li> </ul> </div><!--/r_access-ranking-04 --> <!-- #EndEditable --> <!-- #BeginEditable "ad_Ranking" --><!-- ad_Ranking --> </div><!--tabs--> <ul id="r_ad-access-ranking" class="lyt-list-rank-01"> <div id="wrap_ad_ranking_a"> <!-- /6082618/mn.rank1 --> <div id='div-gpt-ad-1479185899023-12'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1479185899023-12'); }); </script> </div> </div> <div id="wrap_ad_ranking_b"> <!-- /6082618/mn.rank2 --> <div id='div-gpt-ad-1479185899023-15'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1479185899023-15'); }); </script> </div> </div> </ul> <p class="lyt-link-more lyt-doc-02"><a href="/top/ranking/index.html">もっと見る</a></p> </div><!--/lyt-box-02--> </div><!--/tabContainer--> <!--/r_access-ranking--> <script> (function () { if(news_vars.ch !== 'undefined' && news_vars.ch != "") { var more_link = "/" + news_vars.ch; if(news_vars.cat !== 'undefined' && news_vars.cat != ""){more_link += "/" + news_vars.cat} $("#tab-aside .lyt-link-more.lyt-doc-02 a").attr("href", more_link + "/ranking/index.html"); } }()); rotateAsyncAd(['wrap_ad_ranking_a', 'wrap_ad_ranking_b']); </script><!-- #EndEditable --> <!-- #BeginEditable "R_topNews" --><div class="lyt-hdg-02 lyt-btn-innerhdg"><p>イチオシ記事</p></div> <div id="worth" class="lyt-box-02" data-click="dc-worth"> <ul class="str-lyt-col01"> <li class="lyt-column-02 img-l" onClick="news_func.gaClick(this,news_vars.ch);"> <div class="lyt-img"><a href="/news/2017/08/22/050/index.html"><img src="https://n.mynv.jp/news/2017/08/22/050/index.tops.jpg"></a></div> <div class="lyt-txt"> <a href="/news/2017/08/22/050/index.html">Facebook、React.jsのライセンスを維持 - Apacheとの衝突を回避せず</a> </div> </li> <li class="lyt-column-02 img-l" onClick="news_func.gaClick(this,news_vars.ch);"> <div class="lyt-img"><a href="/news/2017/08/21/181/index.html"><img src="https://n.mynv.jp/news/2017/08/21/181/index.tops.jpg"></a></div> <div class="lyt-txt"> <a href="/news/2017/08/21/181/index.html">SlackにかわるOSSチームチャットアプリ5選</a> </div> </li> <li class="lyt-column-02 img-l" onClick="news_func.gaClick(this,news_vars.ch);"> <div class="lyt-img"><a href="/series/linebot/001/index.html"><img src="https://n.mynv.jp/series/linebot/001/index.tops.jpg"></a></div> <div class="lyt-txt"> <a href="/series/linebot/001/index.html">LINE Botを使ってみよう! LINEで始めるチャットボット 第1回 Messaging APIの初期設定をしよう</a> </div> </li> <li class="lyt-column-02 img-l" onClick="news_func.gaClick(this,news_vars.ch);"> <div class="lyt-img"><a href="/news/2017/08/18/022/index.html"><img src="https://n.mynv.jp/news/2017/08/18/022/index.tops.jpg"></a></div> <div class="lyt-txt"> <a href="/news/2017/08/18/022/index.html">ソニー、ディープラーニングの統合開発環境を無償提供</a> </div> </li> <li class="lyt-column-02 img-l" onClick="news_func.gaClick(this,news_vars.ch);"> <div class="lyt-img"><a href="/news/2017/08/17/031/index.html"><img src="https://n.mynv.jp/news/2017/08/17/031/index.tops.jpg"></a></div> <div class="lyt-txt"> <a href="/news/2017/08/17/031/index.html">.NET Core 2.0登場</a> </div> </li> </ul> <p class="lyt-link-more lyt-doc-02"><a href="/enterprise/engineer/newsworthy/index.html">もっと見る</a></p> </div> <!--/r_top-news--> <!-- #EndEditable --> <!-- #BeginEditable "R_imageRanking" --><!-- #EndEditable --> <!-- #BeginEditable "R_digestCorner" --><!-- #EndEditable --> <!-- #BeginEditable "R_subTopHeadline" --><!--/r_sub-top-headline--> <div class="lyt-hdg-02 lyt-btn-innerhdg"><p>新着記事</p></div> <div class="lyt-box-02" id="r_sub-top-headline" data-click="dc-rst-headline"> <table class="lyt-tbl-01 lyt-tbl-bg" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <a href="/news/2017/08/23/053/index.html" onClick="news_func.gaClick(this,news_vars.ch);">バニラエア、登録・年会費無料の「バニラエア ポイント」--1ポイント=1円</a><br/> [09:34 8/23] <a href="/travel/index.html" class="icon-travel"><span>旅と乗りもの</span></a> </td> </tr> <tr> <td> <a href="/news/2017/08/23/052/index.html" onClick="news_func.gaClick(this,news_vars.ch);">富士通SSL、スマートグラスを組み合わせたプラネタリウム鑑賞の実証実験</a><br/> [09:31 8/23] <a href="/technology/index.html" class="icon-technology"><span>テクノロジー</span></a> </td> </tr> <tr> <td> <a href="/news/2017/08/23/044/index.html" onClick="news_func.gaClick(this,news_vars.ch);">モリサワ、Webフォントにエイワン、デザインシグナルの書体を追加</a><br/> [09:17 8/23] <a href="/technology/index.html" class="icon-technology"><span>テクノロジー</span></a> </td> </tr> <tr> <td> <a href="/articles/2017/08/23/ssh2017/index.html" onClick="news_func.gaClick(this,news_vars.ch);">SSHの生徒たちが感じた、科学の面白さとは - 平成29年度スーパーサイエンスハイスクール生徒研究発表会</a><br/> [09:00 8/23] <a href="/technology/index.html" class="icon-technology"><span>テクノロジー</span></a> </td> </tr> <tr> <td> <a href="/column/iot_security/005/index.html" onClick="news_func.gaClick(this,news_vars.ch);">今なら間に合うIoTセキュリティ 第5回 便利な生活の落とし穴、あなたのスマートホームは大丈夫?(2)スマートホームのセキュリティ</a><br/> [09:00 8/23] <a href="/enterprise/index.html" class="icon-enterprise"><span>企業IT</span></a> </td> </tr> <tr> <td> <a href="/news/2017/08/23/043/index.html" onClick="news_func.gaClick(this,news_vars.ch);">[ひよっこ]劇中マンガのココがすごい! 作画担当・海老原優さんのこだわり</a><br/> [08:30 8/23] <a href="/entertainment/index.html" class="icon-entertainment"><span>エンタメ</span></a> </td> </tr> <tr><td id="dac-feed1"> <!-- /6082618/mn.feed1 --> <div id='div-gpt-ad-1479185899023-2'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1479185899023-2'); }); </script> </div> </td></tr> </tbody> </table> <p class="lyt-link-more lyt-doc-02"><a href="/top/headline/index.html">もっと見る</a></p> </div> <!--/r_sub-top-headline--> <!-- #EndEditable --> <!-- #BeginEditable "ad_Feed" --><!-- ad_Feed --> <!-- #EndEditable --> <!-- #BeginEditable "R_ad-300tile3" --><div id="r_ad-300tile3" class="lyt-doc-01"> <!-- /6082618/mn.recc --> <div id='div-gpt-ad-1485738116644-0'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1485738116644-0'); }); </script> </div> </div><!-- #EndEditable --> <!-- #BeginEditable "R_ad-kikaku-b" --><div class="logly-tokki-b"></div> <script charset="UTF-8"> (function(){ var logly_tokki_a = { 'top': '3784661', 'business': '4079142', 'digital': '4079143', 'kurashi': '4079144', 'entertainment': '4079146' }; var genre_dir = news_vars.genre; if(!news_vars.genre || news_vars.genre == ''){genre_dir='top'}; $('.logly-tokki-b').attr('id', 'logly-lift-' + logly_tokki_a[genre_dir]); var _lgy_lw = document.createElement("script"); _lgy_lw.type = "text/javascript"; _lgy_lw.charset = "UTF-8"; _lgy_lw.async = true; _lgy_lw.src= (("https:" == document.location.protocol) ? "https://" : "http://")+"l.logly.co.jp/lift_widget.js?adspot_id=" + logly_tokki_a[genre_dir]; var _lgy_lw_0 = document.getElementsByTagName("script")[0]; _lgy_lw_0.parentNode.insertBefore(_lgy_lw, _lgy_lw_0); })(); </script> <!-- #EndEditable --> </div> </div><!--/clearfix--> <p class="lyt-link-pagetop"><a href="#">ページトップ</a></p> </div><!--/contents--> <div id="str-footer"> <!-- #BeginEditable "supportedBy" --><!-- #EndEditable --> <div class="lazy"><img src="http://n.mynv.jp/images/gray.ca.gif" data-original="http://n.mynv.jp/images/gray.ca.gif?w=footer"></div> <script> // 画像保存禁止 $(function(){ if (typeof news_vars !== "undefined" && news_vars.ch =='entertainment') { $('#str-contentsleft img').addClass('img_copyGuard'); var images = $('.img_copyGuard'); // 右クリック images.on("contextmenu",function(e){ return false; }); // ドラッグ images.mousedown( function(e){ e.preventDefault(); } ); images.mouseup( function(e){ e.preventDefault(); } ); // 長押し var timer; images.on("touchstart",function(){ timer = setTimeout(function(){ alert("画像は保存できません") },400) //return false; }) images.on("touchend",function(){ clearTimeout(timer); //return false; }) } }); var _pop = _pop || []; if (typeof news_vars !== "undefined" && typeof news_vars.cat !== "undefined") { _pop.push(["_set_read_categoryName", news_vars.cat]); } if (!is_ms_browser) { var pa = document.createElement('script'); pa.type = 'text/javascript'; pa.charset = "utf-8"; pa.async = true; pa.src = window.location.protocol + "//api.popin.cc/searchbox/mynavi_news_new.js"; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(pa, s); } if(news_func.purenews()){ wdoc('http://n.mynv.jp/js/footer.ca.js?v='+f_ver.footer,'utf-8','async'); wdoc('http://n.mynv.jp/js/popinsns.js?v=28','utf-8','async'); wdoc('http://n.mynv.jp/js/pcTosp.js','utf-8','async'); wdoc('http://n.mynv.jp/js/mypage.js?v=14','utf-8','async'); wdoc('http://n.mynv.jp/js/leftcolumn.js?v=2','utf-8','async'); } wdoc('http://access.news.mynavi.jp/log/?'+escape(document.body.className+'/'+document.referrer),'utf-8','async'); news_vars.end = true; </script> </div><!--/str-footer--> <!-- #BeginEditable "ad_Gateside" --><!-- ad_Gateside --> <!-- /6082618/mn.gateside --> <div id='div-gpt-ad-1479185899023-6'> <script> if(!$("body").hasClass("welcome") && $('#mn-welcome').length <= 0){ googletag.cmd.push(function() { googletag.display('div-gpt-ad-1479185899023-6'); }); } </script> </div><!-- #EndEditable --> </div><!--/str_container--> <!-- <ul id="fmenu" data-click="dc-fmenu"> <li><a href="javascript:void(0);" onclick="$('html, body').animate({scrollTop:0});news_func.gaClick(this,news_vars.ch);"><img src="http://aw.mynv.jp/img/common/topics_head_top.jpg"></a></li> </ul> --> </body> </html>