Welcome Rakuten Technology Conference 2015 (Fukuoka Location)

New seats where added and tickets registration is available. Please, register as soon as possible before is too late. 


We are very proud to inform that this year Fukuoka Technology Conference has a lot of interesting presentations about the current trend on e-business from Rakuten Ichiba, Rakuten Travel and Rakuten Card in Fukuoka.

If you want to hear how our business are implementing the current technology, come to see our conference. We will be very happy in explain our services.

Also, come to talk with our employees in our Happy Hour. This is a place that you can enjoy food & drinks and talk with us. Please, feel free to have a nice conversation with us.

今年も福岡でやります!! 楽天テクノロジーカンファレンス2015です。

今年は、楽天市場、楽天トラベル、楽天カードなど、実際にドライブ中の最新トレンドについて、(東京からのサテライト込み込みですが) 福岡からも発信します! Web技術を中心として、主にJava EEやエンタープライズ系開発について、結構ディープにやっちゃいます。





Date / 日時

Nov. 21st, 2015, Start 10:00


Place/ 開催場所

Fukuoka Center Building 12F,
2-2-1 Hakataekimae, Hakata-ku, Fukuoka City,
Fukuoka, Japan



Registration / お申込み


Procedure / お申込み手順

1. Push “REGISTER” button. / みどり色の「REGISTER」ボタンを押して・・・
2. Apply from “(Satellites) Fukuoka”. /「(Satellites) Fukuoka 福岡サテライト」からどうぞ!



Time Table /タイムテーブル

Time Location A
Location B
11:00 Java EE Applications for Transaction Services by Kota Fujita [Track A]
Talk by Yutaka Matsuo by Yutaka Matsuo
12:00 [Track A]
Fun Research in Computer Vision : from robots, sports, face to medicine by Takeo Kanade
13:00 [Track A]
Keynote by CEO by Hiroshi Mikitani
[Track A]
Keynote by CEO by Hiroshi Mikitani
14:00 Better working framework for smart device service by Shimizu Yosuke [Track B]
Rakuten Ichiba by Yoshihisa Onoue
15:00 About JavaEE and DevOPS by Nakada Hiroaki [Track E]
Rakuten Travel by Kazuhisa Naoi and Shinoda Takeshi
16:00 [Track B]
Rakuten Card by Hirofumi Iwasaki and Ameen Arshal
[Track B]
Rakuten Card by Hirofumi Iwasaki and Ameen Arshal
17:00 Closing
17:30 Lightning Talk & Happy Hour


Sessions in Fukuoka / 発表内容(福岡)


Java EE Applications for Transaction Services by Kota Fujita.

11:00〜    at Location A (Conference) in Fukuoka

Today’s e-businesses are changing very fast introducing new standards and new technologies every year. This session will explain why we selected Java EE as our platform and How we are implementing it to allow agile and safe transaction system.


Better working framework for smart device service by Yosuke Shimizu.

14:00〜    at Location A (Conference) in Fukuoka

We believe that promoting excellent synergy between business, development and operation; creating a working environment that support each area demands; and building multinational team; It is possible to have rapid and reliable development contributing for better user satisfaction and more revenue. Some of key concepts is to have 100% in house development on both the Client and Server side and to have high qualified engineers capable to do planning, development and operation. As a result, we could optimize our working framework providing better products with high quality and very good customer satisfaction.


About JavaEE and DevOPS by Hiroaki Nakada.

15:00〜    at Location A (Conference) in Fukuoka

Our system is continuing to grow and introducing new technologies is becoming our normal operation flow. This session will explain over view of our development and operation.





My JavaOne 2015 Session “Real-World Batch Processing with Java EE” CON3339

Thanks for joining our session with @aforarshal in great 20th anniversary of Java on JavaOne 2015. Fortunately we had many attendees in big hall in Parc55, with many feedbacks and Q&A times there. Also the session room had TV streaming and recoding system, now we can see whole session scene on YouTube as above.

The session slides are also available from SlideShare here.

I was very pleased to see the strong passions of every engineer for Java EE technologies same level as the beginning of the J2EE 16 years ago there. Each technology details were already changed but the core policies were not changed from the beginning. I want to say it’s a great forecast in late 1999, and still moving forward to our future.

The session is going to replay in next Rakuten Tech Conference 2015 in Tokyo, Japan on Nov 21, 2015, more deeply.

Thanks for watching our JavaOne 2015 keynote speech


Thanks for watching today’s JavaOne 2015 keynote speech in Moscone North hall with Arshal. This was a secret project among very small team, and satisfied with the great achievement to us, for sharing our proactive working status in Fukuoka, Japan.

JavaOne 2015 Keynote Speech Full Length (see from about 1:25:00)

Fortunately the JavaOne was just started from today, I’m going to enjoy our own session on Wednesday Oct 28, 11:30 AM, as below.

Real-World Batch Processing with Java EE [CON3339]

Fortunately some sessions or keynotes are broadcasting online freely, so stay tuned to the greatest conference of programming language in the world. Happy 20th anniversary Java!

My JavaOne 2015 Session: CON3339

Screen Shot 2015-09-26 at 10.50.10 AM

Happy programming weekend! I’m going to have a speaking session in JavaOne 2015 on Oct 28, 11:30 AM, with my colleague Arshal as below. See you on SF.

Real-World Batch Processing with Java EE [CON3339]

Arshal Ameen, Team Manager, Rakuten, Inc.
Hirofumi Iwasaki, Group Manager, Rakuten, Inc.

Batch processing plays a key role in most organizations, mainly because it doesn’t need much human intervention. This session explores various ways in which batch processing can implemented with Java EE. It includes SWOT analysis of batch implementation with JSR 352 and embedded EJB containers. By the end of the session, the attendees should be able to understand when to use JSR 352 and when not to, the benefits of using an embedded EJB container for batch processing, and the best practices to follow when designing batch processes.

Conference Session
Wednesday, Oct 28, 11:30 a.m. | Parc 55—Cyril Magnin II/III

Dragon Slayer II Xanadu 30th Anniversary


This picture is with “Xanadu Bible”, the 30th fan book, with five different versions of Xanadu. I believe I have three additional versions including PC-9801, PC-8801mkIISR (earliest version), and MSX2 version, but cannot find at that time.

I love the Japanese 8-bit computer games, especially with Dragon Slayer series of Falcom.

Genius Mr. Kiya Yoshio and some special members were build 8 Dragon Slayer series in Falcom, and I believe the second released “Dragon Slayer II Xanadu” (1985) was the best Japanese computer game I’ve ever played so far.

When the Xanadu released, I was a elementary school so cannot played due to no 8-bit computers.

My first playing of Xanadu was high school student. When I purchased 16-bit computer PC-9801RX, firstly I ordered Xanadu PC-9801 version to Falcom directly by telephone, because there’s no packages in local computer shop. Already 5 years passed since the release, and the latest Dragon Slayer was V “Sorcerian” at that time.

Unfortunately the PC-9801 ported version only supported BEEP sounds and I was so disappointed due to the poor environment (but 16-bit! unbelievable…).

After that, I got 8-bit computers X1F and PC-8801mkIISR from my friend, and played Xanadu in each version. So surprised the qualities and difference of musics. X1 version was the first release with PSG sound, and PC-8801mkIISR version was with FM with PSG sounds.

Xanadu was the excellent game systems as a RPG-styled but almost puzzle game (Almost all Dragon Slayer series is the RPG-styled puzzle game I believe).

Each monster was limited amount in the world, so player must construct the route for killing last dragon. The route for ending is almost infinite, and each offense item, defense item, magic, and  item has experience points for its effects.

Due to the great rule of the game, there’s many fans in Japan. And this year is the 30th anniversary. And here’s the fan book of it, written by and . This book covers tons of information for it, including version differences, developer’s interviews, and many trivia. Great information I’ve ever read. Masterpiece of Xanadu.


You could purchase from this site, but unfortunately sold out. Keep waiting next announcement if you want to get it.


If you have any interest for playing Xanadu in  your Windows, you can purchase porting version from EGG here (this based on PC-8801mkIISR version, with rich FM music. Best version of all).


I have original versions and sometimes playing with my PC-8801 and X1turboZ real 8-bit machine. I believe no emulation environment is the best way to play.

Now I’m trying to take movies for playing. Here’s a test taking with Dragon Slayer (I) with real PC-8801MA2. I’m going to take Xanadu with it soon.


Repairing Apple 5.25″ Drive (A9M0107) for Apple IIGS

Arrived the Apple 5.25 inch Floppy Drive for Apple IIGS (A9M0107) from US (almost spent one month!). The seller said it tested working. Great!

But unofrtunately it was not worked correctly. No seek sound at the boot, with no lamp. No problem, start fixing.


Open the screw just with two from the back of the disk, slide the top panel to the back. Easy opening.


Next, remove a screw of the next of the FDD connector. Now you can open the FDD drive top shield. It hardly attached to the FDD drive basement, so open with thin driver with slowly and carefully.



After removed the top shield, found the IC board of the FDD. Simple design, few electric parts.


Found it. The connector to the IIGS was almost off, by unknown shocks among the transferring. Just connect again. Completed.


The board was printed with old Apple computer logotype, on 1986, with “UNIDISK ANALOG #2”, but this drive is not the older “Unidisk 5.25 Drive” (A9M0104). It might shared the board from the last unidisk, or something. Unknown.


The drive is ALPS electric, made in Japan. One inch height, bigger than latest general 1/2 height 5.25″ FDD for PC/AT.


Close the top shield and cover, connect to the 3.5″ drive, and booted again. Works correctly. Easy repairing.


Apple IIGS (ROM 01) Battery Replacement (Easy Version)

The internal battery of my new Apple IIGS (ROM 01) was dead completely, so it cannot hold some setting value like date time, screen color, slot configuration, RS232C value, and so force.

I decided to replace to newer one. This article shows how to replace the internal battery of IIGS ROM 01, with almost easiest working.

Open up the IIGS, remove power unit (just unlock with one notch in front sidem and pull out the power line), you’ll see the big battery just half size of AA.

Unfortunately the ROM 01’s battery was fixed to main board and cannot replace easily. I planned to replace with new battery holder for replacing in the future.

Here’s a picture of dead battery. Fixed with solder to mainboard.


Cut out the lead line of the corner of “L” by nipper, leave the “I” line for attaching new battery holder. Don’t remove the whole lead line completely if you want to avoid hard work of solder operations (might be damaged to the main board).


The completely dead 1/2 AA size battery was made on March, 1987. Vintage one. It might almost same birthday as my IIGS itself.


I ordered new battry box with lead line, and new 1/2 AA battery for replacement. You can purchase them at some electric parts shop with cheaper, just 300JPY each (almost 3USD each).  You can also find them in ebay, but much higher price than parts shop.

If you live in Japan, you can find from here and here.


To avoid solder operation for avoding big damage to the IIGS main board, I replace the lead line of the new battery case to another capped line as below. Just a easy work with solder. Well done.


Just cap the new lead line to the left “I” line (from older battery) of the IIGS main board. Upside is plus, so place red line to here. The original place of the battery is little smaller than the battery case, so placed the new battery holder to the side of mainboard, with double-sided tape.


Re-attached power unit and connect the power line to mainboard. Completed.


Test power on, and set date time and screen color, and power down. After some second, power on again, and you’ll see the new setting screen color and date time already set.


If not, check the lead line of the battery holder. Good luck.

My First Apple II, Apple IIGS



Arrived my first Apple II, Apple IIGS ROM 01 version. Great 16-bit, good old Apple machine. Lovely big rainbow apple!!

I wanted to have my own Apple II for a long time, from my elementary school. But unfortunately, it was not common platform in Japana. I could not find any Apple II in my hometown.

After over 20 years, I decided to have my Apple IIgs as my first Apple II experience. Ordered and sent from the USA, but unfortunately some keytops were broken due to no aircap coverage. Oh, vintage GS Apple keyboard!

Fixed them with putty and glue, now the system works correctly on my desk. It contains GS AppleColor monitor, Apple Keyboard (made in Japan),  Apple Mouse (made in USA), and two Apple 3.5 Drives.

The internal battery was already dead so I’m going to replace it later. Post the replacement process soon. (Update: see here).

Seven Points for Applying Java EE 7 – Java Day Tokyo 2015

Last day I had a speaking session in “Java Day Tokyo 2015”. Here’s the session material for it.

This materials shows how to start your project with EE 7. There are many check points for starting the design of systems, and this describe some important points for it.

It seems that the Java EE engineers are increasing rapidly around the world, from the success of Java EE 6.

After six years passed from the EE 6 release, some Japanese company planned to update their older Struts-based older J2EE systems to the latest, with the EOL situation of them.

I wanted to say “start right now, with EE 7”, but there’s huge technical changes between J2EE-era and today. Start from here, with joyful EE programming.

最速でJava EE 7 Webアプリを作る – 2014 Java EE Advent Calendar

Will be translated in English soon. Sorry for inconvenience.

この記事は2014 Java EE Advent Calendarの12月24日分になります。キリスト教徒ではないのですがメリークリスマス。

今年はJava EEに関する大きな発表が無かったのでネタ的に困る訳なのですが、個人的な「温故知新」ブームに乗っかり、こんなのをやってみることにします。

Slide1はい、超スタンダードなJava EEの使い方です。勿論、Java EE 7で。残念ながら商用サーバーのEE 7対応はまだですが、来年は対応するという話を聞きますので、今のうちに慣れておきましょうということで。

ただ作るだけでは面白くないので、できるだけ最速でイチから手順を追って作っていくことにします。勿論NetBeansの自動生成機能を駆使します。また、お仕事でもそのまま使えるようなコードで、という制約付きです。Java EEはめんどくさい、という意見を聞きますが、そんなことないよ、という事を証明するべく、こんな挑戦を敢えてクリスマスイブにやってみるわけです。暇人と呼ばないで(笑) ※ほんとは正直忙しすぎて死にそうです


今回の環境です。本番でもそこそこ使えるようなものを選んでみました。OSは何でもOKですね。わたしは普段使いのOS X Yosemiteを・・・と書いていたのですが、前の記事の通り個人PCをWindowsに戻してしまったので、途中まで出来ていたものをWindows 8.1 64-bitで再度やり直しました。Realforce 87Uが快適すぎるので助かりました。


  • JDK: JDK 8 の最新版 (この記事では JDK 8u25)
  • IDE: NetBeans 8 の最新版 (この記事ではNetBeans 8.0.2)
  • App Server: GlassFish 4 の最新版 (この記事では GlassFish 4.1)
  • Database: MySQL 5.6 の最新版 + MySQL Workbench の最新版 (この記事では MySQL 5.6.22)

1. データベース

まともな企業システムをターゲットにしているので、データベースがあって然るべきでしょう。DB処理はJava EEの華です。ここをすっとばしたJEEの説明が多い気がするので、ここに改めてまとめておきます。


1-1. データベースの準備

こういうのは依存関係の深い場所から作っていくのが正しい在り方です。ですのでまず、データベースからですね。Oracle Databaseが所謂スタンダードかなと思いますが、フリーのXEがOS X用に出ていないので、ここでは涙を呑んでMySQLをインストールします。インストーラーを落としてぽいっと入れれば終わりです。


CUIで諸々やるのは面倒なので、MySQL Workbenchも入れてしまいましょう。Windows版だとDeveloper Defaultを選べばいいです。以下Windows版をメインに書きますので、OS XとかLinuxの方はユーザーアカウント等はインストール後にMySQL Workbench等で個別に設定する必要があります。






あとはデフォルト値でホイホイ進めれば、最後にMySQL Workbenchが起動します。rootの接続が出来ているので、これをクリックしましょう。


最初にスキーマを作ります。「Create New Schema」を選択します(+の付いたデータベースアイコン)。名前は「advent」でいいですかね。CollationはServer Defaultで良いかと思います。


「Users and Privileges」で「advent」を選択し、(開発用途なので)全権を「Select “ALL”」で選んでおきましょう。終わったらApply。※当然ですが本番運用でこんな事はしないで下さい。


これでadventユーザーがadventスキーマを使えるようになりました。これでこのMySQL Workbenchの役目は終わりです。これ以降はNetBeansで作業することにします。そっちが楽です。

 1-2. スキーマの作成

さてNetBeansを起動して、Serversタブを開いて、今回作ったスキーマを接続しましょう。右クリックして「Register MySQL Server」を選択して登録しましょう。接続情報は上の通りですね。分からない方は以下を参考に。




では今回のテーブルを作りましょう。「Advent」スキーマをを開いて、Tablesで右クリックして「Create Table」。以下のような感じで。ぶっちゃけここはお任せなので、めんどくさい人は1カラムでもいいでしょう。


  • Customer
  • ————-
  • Name VARCHAR(100) NOT NULL
  • PostalCode VARCAR(10) NOT NULL
  • Address VARCHAR(200) NOT NULL
  • Phone VARCHAR(30) NOT NULL
  • Note VARCHAR(1000)


  1. 2. サーバーサイドを作成する

さて、ようやくJava EEです。以下の大半の処理はデータベースを以下に効率的に処理するかという観点になってます。これはCOBOLシステムに代表される「コンテナー管理型システム」の現代版としてJava EEが元々設計されていることに由来します。超高額で場所を取るホストシステムが不要であり、家のPCで気軽に無料でプログラミングできるJava EEがある現代は恵まれた世界だなと思います。

今回作成するパッケージはは3つ。CRUDを行うDAOと、ビジネスロジックを記述するLogic、および、データベースの写像としてのEntityです。LogicとDAOをごっちゃにして作る人がいますがやめたほうがいいでしょう。自動生成がメインであり、JPQLやCriteria Queryの記述がメインのDAOはあくまでDAOとして分けておかないと、数年後に破綻する羽目に陥る気がします。


なお、以下NetBeansを使っていますが、一点だけお勧めの設定変更があります。デフォルト設定ではフォントがMonospacedになっていて非常に見辛いので、Courier NewやConsolaなど英字等幅フォントにに変更すると非常に見やすくなります。Tool > Options > Fonts & Colorsからどうぞ。

2-1. サーバーサイドプロジェクトを作成する

NetBeansからプロジェクトの作成で、Maven > Web Application を選択します。ちなみにJava EE 6からWARにEJBを入れられるようになったので、今回もそれを活用します。必ずMavenのプロジェクトを選択して下さい。ここで間違って後で地獄を見る系の人が多いです。もうNetBeansのオリジナルプロジェクトファイルは廃止していいんじゃないかなと思うのですが・・・




Application ServerにGlassFish Serverを、Java EE Versionには「Java EE Web」を選択します。ちなみにこれはWebプロファイルであり、Fullプロファイルをここで選択できないのはNetBeansのバグですね。


ここで 一旦Finishして、生成されたプロジェクトファイルを手作業で修正します。プロジェクトのProject Files > pom.xmlを開き、「javaee-web-api」を「javaee-api」に変更して保存し、プロジェクトをビルドすれば完了です。





2-2. 自動生成でJPA系クラスを作成する

DB接続系の処理ですが、Java EEだとJPA一択です。元ネタのHibernateと一緒なので、大体誰でも理解できると思いますが、要は「テーブルの1行=Javaクラスの1インスタンス」で処理するだけの単純明快な標準フレームワークです、と書けばいいでしょうか。


プロジェクトで「New > Other」から、「Persistence > Entity Classes from Database」を選択し、MySQLの接続を選択して、JNDIデータソース名「jdbc/advent」を指定して、上で作成した「Customer」テーブルを選択します。あとはデフォルト値で進めれば・・・






はい、DB接続設定が含まれたpersistence.xmlと、「Customer」テーブルに対応付いた「Customer」クラスが作成されます。簡単ですね。これぞJava EE。このクラスだけではデータベースにCRUDできませんので、次にDAOを作成します。これをEJBで作るのがポイントです。ここで間違える人が多いですが、選択肢はこれしか無いと思った方が良いのではないでしょうか。

「New > Other」から「Enterprise JavaBeans > Session Beans For Entity Classes」を選択します。


Entity Classesに上で作成したEntityが出てくるので、選択します。




完了するとEntity Managerを内包した「CustomerFacade.java」という名前のEJBが自動生成されます。これを使ってCRUDするわけです。なお、このEJBは「AbstractFacade」という名前のスーパークラスを継承しており、そこにCRUDの実装がありますので、基本処理を変更したい場合はここをいじります。ただ、二つ目以降のDAOを作成した場合、同じようにこのスーパークラスを継承するように自動生成されるので、注意が必要です。




2-3. ビジネスロジックを作成する


ビジネスロジックは自動生成なんかできないので、普通に作成します。「New > Other」から「Enterprise JavaBeans」、名前に「CustomerLogic」、パッケージを「advent.logic」にして生成。








  1. 3. Web画面作成

最後に画面側です。バックエンドを呼び出す画面についても省エネ爆速で作りましょう。作るファイルは三つ。FaceletとBacking Beanは二つでひとつのセットです。あとは完了画面だけ作ります。最低限動く事を確認するだけの構成にします。


3-1. JSFを使うためのプロジェクト設定

NetBeansでMaven WARプロジェクトを作った場合、初期設定でJSFが有効になってません。これでは困るのでちょいと設定します。プロジェクトを右クリックしてFrameworksからJavaServer Facesを選択します。


また、JSFの画面ファイルであるXHTMLが簡単に起動するように、URL Patternも「*.xhtml」に変更しておいて下さい。じゃないと全てのリクエストに対して/faces/とかつけなければならず、実態のファイルの配置とずれてしまうという困ったことがおきます。




3-2. Backng Beanの作成

そろそろこれまで作ってきたものを一度動かしてみたい気になりますが、最速を目指すこの投稿ではスキップして、一気にBacking Beanを作ります。ASP.NETのコードビハインドみたいなやつです。画面と一対一で原則作ります。

普通にクラスを新規作成します。アノテーションで@Namedと、@ViewScopedをつけて下さい。要注意なのは、「import javax.faces.view.ViewScoped;」側を使って下さい、ということです。同じ名前のがjavax.faces.beanにもありますが、こちらを使うと動きません(こちらはJava EE 6以前(JSF 2.1以前)用)。


残りはEntityに定義したものをそのままフィールドに定義してしまいましょう。あとはGetterおよびSetterを作る必要がありますが、そんなものはNetBeansに作らせましょう。右クリックして「Insert Codes…」で「Getter and Setter」ですね。日本語版だと妙な名前になってた気がしますが、こういうプログラミング系は英語版を使うと変な所で悩まなくとも済みます。



注意点としては、CustomerID列についてはデータベース側で自動採番されるのですが、EntityのBean Validationの関係上、NULLが許容されないため、とりあえずLong.MIN_VALUEを入れておきました。0でも何でもいいんですが、INSERT時に正しい値に置換されますので気にしないで下さい。


ちなみにここでの考慮点としては、「EntityをそのままBacking Beanのフィールドに設定した方が早いのでは?」というFAQがあります。が、分けた方が良いでしょう。画面で入力する値は本質的に全て文字列ですが、DB設定の型は様々です。入力値のチェックも考慮した場合、すべてString型で定義したBacking Beanと、本質的な正しさを追求すべきEntityは分けた方が良いでしょう。

3-3. Faceletの準備



なんというか、丸ごとふるくさい構成になってますので、HTML5にちょいと書き換えて、不要なタグを削り、JSF 2.2で必要となるネームスペースを追加します。こんな感じです。「xmlns:jsf」というのを追加する必要があります。URLそのものはNetBeansが自動補完してくれます。これが無いとJSFの特殊タグが使えないのです。要注意。これもNetBeans側のテンプレートを更新して欲しい気がしてます。自分でContributeしろと云われそうですが。




では最後にBacking Beanと結合していきます。当たり前ですがFaceletでもコード補完が動きますので、ホイホイやっていきましょう。


完成版はこんな感じです。JSF 2.2からはHTML Friendly Tagsといって、ふつうのHTMLに対してjsf:valueやjsf:actionを追加で入れていく感じになっています。これならば誰でもできますね。昔のh:inputTextとかを忘れて思い出せずイライラするといった非生産的な状況とはおさらばです。











データベースの中身を見てみましょう。正常に登録されてるかな・・・? Servicesタブからcustomerテーブルを開いて、View Data…です。




はい、これでおしまいです。完了。この記事はスクリーンショット等を取りつつ書きつつやったので2時間ちょい程度かかりましたが、そんなことをしなければここまで最速で10分から30分くらいでしょうか。データベースの設定を一度やっておけば、あとは上記2.以降をやればいいので、10分くらいでできるかな。Java EEも簡単になりましたね。初代J2EE 1.2時代のめんどくささと比較しても、雲泥の差です。最初からこうあってほしかった(笑)。

Java EEのこの安定感は素晴らしいですね。繰り返しになりますが、上記の作業手順や生成方法、生成されたファイル群は、本物のお仕事でもそのまま使えるものです。今回は画面遷移や入力値チェック等は省きましたが、その辺は別記事等でフォローしたいなぁと思っています。


次回の2014 Java EE Advent CalendarはArshal Ameenさんの記事になります。最終回ですね。