Skip to content

Commit

Permalink
[Website] Add 0.3.0 release announce in Japanese
Browse files Browse the repository at this point in the history
  • Loading branch information
kou committed May 10, 2017
1 parent 0216145 commit cc7871f
Show file tree
Hide file tree
Showing 2 changed files with 191 additions and 0 deletions.
189 changes: 189 additions & 0 deletions site/_posts/2017-05-08-0.3-release-japanese.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,189 @@
---
layout: post
title: "Apache Arrow 0.3.0リリース"
date: "2017-05-08 00:00:00 -0400"
author: wesm
categories: [release]
---
<!--
{% comment %}
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to you under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
{% endcomment %}
-->

[原文(English)]({% post_url 2017-05-08-0.3-release %})

Apache Arrowチームは0.3.0のリリースをアナウンスできてうれしいです。2月にリリースした0.2.0から10週間の活発な開発の結果が今回のリリースです。[**23人のコントリビューター**][14][**306個のJIRAのissueを解決**][1]しました。

複数のArrowの実装にたくさんの新しい機能を追加しています。2017年、特に注力して開発するのは、インメモリー用のフォーマット、型のメタデータ、メッセージング用のプロトコルです。これは、ビッグデータアプリケーションに**安定していてプロダクションで使える基盤**を提供するためです。高性能IOとインメモリーデータ処理にArrowを活用するために、[Apache Spark][3][GeoMesa][2]コミュニティーと協力していてとてもエキサイティングです。

それぞれのプラットフォームでArrowを使う方法は[インストールページ][6]を見てください。

Arrowでビッグデータシステムを高速化するケースを増やすために、近いうちにApache Arrowのロードマップを公開する予定です。

Arrowの開発に参加するコントリビューターを募集しています。すでにArrowの開発に参加しているコミュニティーからのコントリビューターもそうですし、まだ参加していないGo、R、Juliaといったコミュニティーからのコントリビューターも募集しています。

### ファイルフォーマットとストリーミングフォーマットの強化

0.2.0では**ランダムアクセス**用と**ストリーミング**用のArrowのワイヤーフォーマットを導入しました。実装の詳細は[IPC仕様][15]を見てください。ユースケースは[使用例を紹介したブログ][4]を見てください。これらのフォーマットを使うと低オーバーヘッド・コピーなしでArrowのレコードバッチのペイロードにアクセスできます。

0.3.0ではこのバイナリーフォマットの細かい詳細をたくさん固めました。Java、C++、Python間の連携のテストおよびそれぞれ言語での単体テストの整備も進めました。[Google Flatbuffers][5]は、前方互換性を壊さずにメタデータに新しい機能を追加するのに非常に助かりました。

まだバイナリーフォーマットの前方互換性を必ず壊さないと約束できる状態ではありませんが(もしかしたら変更する必要があるなにかが見つかるかもしれない)、メジャーリリース間では不必要に互換性を壊さないように努力するつもりです。Apache ArrowのWebサイト、各コンポーネントのユーザー向けのドキュメントおよびAPIドキュメントへのコントリビューションを非常に歓迎します。

### 辞書エンコーディングのサポート

[GeoMesa][2]プロジェクトの[Emilio Lahr-Vivaz][13]はJavaのArrow実装に辞書エンコード対応ベクターをコントリビュートしました。これを受けて、C++とPythonでもサポートしました。(`pandas.Categorical`とも連携できます。)辞書エンコーディング用のインテグレーションテスト(C++とJava間でこのデータを送受信するテスト)はまだ完成していませんが、0.4.0までには完成させたいです。

これはカテゴリーデータ用の一般的なデータ表現テクニックです。これを使うと、複数のレコードバッチで共通の「辞書」を共有し、各レコードバッチの値はこの辞書を参照する整数になります。このデータは統計的言語(statistical language)の分野では「カテゴリー(categorical)」や「因子(factor)」と呼ばれています。Apache Parquetのようなファイルフォーマットの分野ではデータ圧縮のためだけに使われています。

### 日付、時刻、固定長型の拡張

0.2.0では現実に使われている日付・時刻型をインテグレーションテスト付きで完全にサポートすることを諦めました。これらは[Apache Parquet][21]とApache Sparkとの連携に必要な機能です。

* **日付**: 32-bit(日単位)と64-bit(ミリ秒単位)
* **時刻**: 単位付き64-bit整数(単位:秒、ミリ秒、マイクロ秒、ナノ秒)
* **タイムスタンプ(UNIXエポックからの経過時間)**: 単位付き64-bit整数のタイムゾーン付きとタイムゾーンなし
* **固定長バイナリー**: 決まったバイト数のプリミティブな値
* **固定長リスト**: 各要素が同じサイズのリスト(要素のベクターとは別にオフセットのベクターを持つ必要がない)

C++のArrow実装では、[Boost.Multiprecision][12]を使ったexactな小数のサポートを実験的に追加しました。ただし、Java実装とC++実装間での小数のメモリーフォーマットはまだ固まっていません。

### C++とPythonのWindowsサポート

一般的なC++とPythonでの開発用に、パッケージ周りの改良も多数入っています。0.3.0はVisual Studio(MSVC)2015と2017を使ってWindowsを完全にサポートした最初のバージョンです。AppveyorでMSVC用のCIを実行しています。Windows上でソースからビルドするためのガイドも書きました。[C++][7]用と[Python][8]用。

[conda-forge][31]からWindows用のArrowのPythonライブラリーをインストールできます。

```shell
conda install pyarrow -c conda-forge
```

### C(GLib)バインディングとRuby・Lua・他のサポート

[Kouhei Sutou][9]は新しいApache Arrowのコントリビューターです。Linux用の(ArrowのC++実装の)GLibを使ったCバインディングをコントリビュートしました。[GObject Introspection][10]というCのミドルウェアを使うことでRuby、Lua、Goや[他にも様々なプログラミング言語][11]でシームレスにバインディングを使うことができます。これらのバインディングがどのように動いているか、これらのバインディングをどのように使うかを説明するブログ記事が別途必要な気がします。

### PySparkを使ったApache Sparkとの連携

[SPARK-13534][16]でApache Sparkコミュニティーと協力しています。PySparkでの`DataFrame.toPandas`をArrowを使って高速化しようとしています。効率的なデータのシリアライズにより[**40倍以上高速化**][17]できるケースがあります。

PySparkでArrowを使うことでこれまでできなかったパフォーマンス最適化の道が開けました。特に、UDFの評価まわりでいろいろやれることがあるでしょう。(たとえば、Pythonのラムダ関数を使って`map``filter`を実行するケース。)

### Python実装での新しい機能:メモリービュー、Feather、Apache Parquetのサポート

ArrowのPythonライブラリーである`pyarrow``libarrow``libarrow_python`というC++ライブラリーのCythonバインディングです。`pyarrow`はNumPyと[pandas][29]とPythonの標準ライブラリー間のシームレスな連携を実現します。

ArrowのC++ライブラリーで最も重要なものは`arrow::Buffer`オブジェクトです。これはメモリービューを管理します。コピーなしの読み込みとスライスをサポートしている点が重要です。[Jeff Knupp][25]はArrowのバッファーとPythonのバッファープロトコルとmemoryviewの連携処理をコントリビュートしました。これにより次のようなことができるようになりました。

```python
In [6]: import pyarrow as pa

In [7]: buf = pa.frombuffer(b'foobarbaz')

In [8]: buf
Out[8]: <pyarrow._io.Buffer at 0x7f6c0a84b538>

In [9]: memoryview(buf)
Out[9]: <memory at 0x7f6c0a8c5e88>

In [10]: buf.to_pybytes()
Out[10]: b'foobarbaz'
```

C++でのParquet実装である[parquet-cpp][23]を使うことで大幅に[**Apache Parquet**][21]サポートを改良しました。たとえば、ディスク上にあるかHDFS上にあるか関係なく、パーティションされたデータセットをサポートしました。[Daskプロジェクト][24]はArrowを使ったParquetサポートを実装した最初のプロジェクトです。Dask開発者とはpandsデータを分散処理する文脈でさらに協力できることを楽しみにしています。

pandasを成熟させるためにArrowを改良することもあり、[**Featherフォーマット**][22]の実装をマージしたのもその1つです。Featherフォーマットは本質的にはArrowのランダムアクセスフォーマットの特別なケースの1つです。ArrowのコードベースでFeatherの開発を続けます。たとえば、今のFeatherはArrowのPythonバインディングのレイヤーを使うことでPythonのファイルオブジェクトを読み書きできるようになっています。

`DatetimeTZ``Categorical`といったpandas固有のデータ型のちゃんとした(robust)サポートも実装しました。

### C++ライブラリーでのテンソルサポート

Apache Arrowはコピーなしで共有メモリーを管理するツールという側面があります。機械学習アプリケーションの文脈でこの機能への関心が増えています。UCバークレー校の[RISELab][27][Rayプロジェクト][26]が最初の例です。

機械学習ではは「テンソル」とも呼ばれる多次元配列というデータ構造を扱います。このようなデータ構造はArrowのカラムフォーマットがサポートしているデータ構造の範囲を超えています。今回のケースでは、[`arrow::Tensor`][28]というC++の型を追加で実装しました。これはArrowのコピーなしの共有メモリー機能を活用して実装しました。(メモリーの生存期間の管理に`arrow::Buffer`を使いました。)C++実装では、これからも、共通のIO・メモリー管理ツールとしてArrowを活用できるようにするため、追加のデータ構造を提供するつもりです。

### JavaScript(TypeScript)実装の開始

[Brian Hulette][20]はNodeJSとWebブラウザー上で動くアプリケーションで使うために[TypeScript][30]でのArrowの実装を始めました。FlatBuffersがJavaScriptをファーストクラスでサポートしているので実装が捗ります。

### Webサイトと開発者用ドキュメントの改良

0.2.0をリリースしてからドキュメントとブログを公開するためにWebサイトのシステムを[Jekyll][18]ベースで作りました。Kouhei Sutouは[Jekyll Jupyter Notebookプラグイン][19]を作りました。これによりArrowのWebサイトのコンテンツを作るためにJupyterを使うことができます。

WebサイトにはC、C++、Java、PythonのAPIドキュメントを公開しました。これらの中にArrowを使い始めるための有益な情報を見つけられるでしょう。

### コントリビューター

このリリースにパッチをコントリビュートしたみなさんに感謝します。

```
$ git shortlog -sn apache-arrow-0.2.0..apache-arrow-0.3.0
119 Wes McKinney
55 Kouhei Sutou
18 Uwe L. Korn
17 Julien Le Dem
9 Phillip Cloud
6 Bryan Cutler
5 Philipp Moritz
5 Emilio Lahr-Vivaz
4 Max Risuhin
4 Johan Mabille
4 Jeff Knupp
3 Steven Phillips
3 Miki Tebeka
2 Leif Walsh
2 Jeff Reback
2 Brian Hulette
1 Tsuyoshi Ozawa
1 rvernica
1 Nong Li
1 Julien Lafaye
1 Itai Incze
1 Holden Karau
1 Deepak Majeti
```

[1]: https://issues.apache.org/jira/issues/?jql=project%20%3D%20ARROW%20AND%20status%20in%20(Resolved%2C%20Closed)%20AND%20fixVersion%20%3D%200.3.0
[2]: http://www.geomesa.org/
[3]: http://spark.apache.org
[4]: http://wesmckinney.com/blog/arrow-streaming-columnar/
[5]: http://github.com/google/flatbuffers
[6]: http://arrow.apache.org/install
[7]: https://github.com/apache/arrow/blob/master/cpp/doc/Windows.md
[8]: https://github.com/apache/arrow/blob/master/python/doc/source/development.rst
[9]: http://github.com/kou
[10]: https://wiki.gnome.org/Projects/GObjectIntrospection
[11]: https://wiki.gnome.org/Projects/GObjectIntrospection/Users
[12]: https://github.com/boostorg/multiprecision
[13]: https://github.com/elahrvivaz
[14]: https://github.com/apache/arrow/graphs/contributors
[15]: http://arrow.apache.org/docs/ipc.html
[16]: https://issues.apache.org/jira/browse/SPARK-13534
[17]: https://github.com/apache/spark/pull/15821#issuecomment-282175163
[18]: https://jekyllrb.com
[19]: https://github.com/red-data-tools/jekyll-jupyter-notebook
[20]: https://github.com/TheNeuralBit
[21]: http://parquet.apache.org
[22]: https://github.com/wesm/feather
[23]: https://github.com/apache/parquet-cpp
[24]: https://github.com/dask/dask/commit/68f9e417924a985c1f2e2a587126833c70a2e9f4
[25]: https://github.com/JeffKnupp
[26]: https://github.com/ray-project/ray
[27]: https://rise.cs.berkeley.edu/
[28]: http://arrow.apache.org/docs/cpp/classarrow_1_1_tensor.html
[29]: http://pandas.pydata.org
[30]: https://github.com/apache/arrow/tree/master/js
[31]: https://conda-forge.github.io
2 changes: 2 additions & 0 deletions site/_posts/2017-05-08-0.3-release.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ limitations under the License.
{% endcomment %}
-->

Translations: [日本語]({% post_url 2017-05-08-0.3-release-japanese %})

The Apache Arrow team is pleased to announce the 0.3.0 release of the
project. It is the product of an intense 10 weeks of development since the
0.2.0 release from this past February. It includes [**306 resolved JIRAs**][1]
Expand Down

0 comments on commit cc7871f

Please sign in to comment.