SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

よろずプログラマーのためのPython導入ガイド

Java meets Python - 第0回 Jythonはじめました(前編)

よろずプログラマーのためのPython導入ガイド (1)


Jythonとの遭遇:はじめまして

 以下の内容は「Python/Jython入門」を意図したものではありません。Jythonで可能性が広がるJavaプログラミングの世界を概観するのが目的です。

 深く考えずに次のコードを見てください。何をしているか分かりますか。

>>> from javax.swing import *
>>> f = JFrame()
>>> f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
>>> f.setSize(150, 100)
>>> f.setTitle("Jython")
>>> f.setVisible(True)

 Swingを利用したコードの断片とどこか似ています。「>>>」とあるのは、対話モードにおけるプロンプトです。つまり、Jythonを利用すると「Java擬の対話型インタプリタ環境」を手に入れたことになります。この現実は初心者にも朗報です。Swingの本質をコマンド感覚で疑似体感できるので、学習環境としても最適です。先に説明したように、コンパイルして実行することもできるので、インタプリタとの棲み分けが可能です。

from javax.swing import *
f = JFrame()
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
f.setSize(150, 100)
f.setTitle("Jython")
f.setVisible(True)

 このコードをテキストファイル「example.py」に保存した後で、UNIXのターミナルが目の前にあるなら、次のコマンドを入力するだけです。

% jython example.py

そこにC#が現われて

 C#プログラマーがこのコードを見たら「プロパティを使えば簡単なのに」と歯痒い思いをするでしょう。JavaBeansに準拠するなら、get.../set...は、同じ名前のインスタンス変数にアクセスするときの常套句です。例えば、titleを獲得/設定するには、それぞれメソッド呼び出しgetTitle/setTitleを利用します。

 ここでC#プログラマーなら、冗長なget/setを排してプロパティを利用するでしょう。すると、次のように簡潔に表現できます。

from javax.swing import *
f = JFrame()
f.defaultCloseOperation = JFrame.EXIT_ON_CLOSE
f.size = 150, 100
f.title = "Jython"
f.visible = True

 このように、JavaBeansに準拠するリソースを再利用するときには、Jythonでは簡略表記が可能です。すると、Javaの言語仕様が拡張されるより一足先に、C#プログラマーと同様の恩恵に浴することができます。

そこにPythonが現われて

 Jythonは、PythonのDNAを継承しています。それなら、その特徴を利用しない手はありません。

from javax.swing import *
JFrame(defaultCloseOperation=JFrame.EXIT_ON_CLOSE,
    size=(150, 100), title="Jython", visible=True)

 ここでは、インスタンスを生成するときに、初期設定を済ませています。ウィンドウを表示させるだけなら、これで十分です。贅肉を削ぎ落とした、体脂肪率一桁のアスリートの肉体美を思わせる、洗練された見通しの良いコードを記述できます。

そこをRubyが素通りして

 シカトされたのかしら(nani wo ima-sara ...)。

Jythonとの遭遇:昨晩お会いしましょう

 先に示したコードの断片は、Javaの言語仕様に飽き足らず、他の言語のイイトコ取りができる、ほんの一例にすぎません。まさに、glue言語の面目躍如です。

 Jythonの世界では、Javaより一足先に、拡張for文の恩恵に浴することができました。Javaに演算子のオーバーロード機能がないのは、開発者の美学です。しかし、それを切望する人々には、不満が募ります。もし望むなら、Jythonを介して演算子のオーバーロードさえも可能です。R指定はありません。Ruby/Pythonプログラマーなら堪能できる、大人の世界を覗いても、コンパイラに叱られることはないのです。

 既にJythonの恩恵に浴していたプログラマーは、後のJavaの言語拡張を懐かしい想いで迎えたものです。今でも、Jythonを通して、拡張されるJavaの言語仕様の近未来を予見できます。

 「初めまして。昨晩お会いしましたね」

次のページ
例題に学ぶJythonの世界

この記事は参考になりましたか?

よろずプログラマーのためのPython導入ガイド連載記事一覧

もっと読む

この記事の著者

小泉ひよ子とタマゴ倶楽部(コイズミヒヨコトタマゴクラブ)

http://tamago-club.cocolog-nifty.com/「楽しくなければ仕事じゃない」が私たちのモットー。99%の苦悩の連続も、1%の成功に報われます。だからこそ、この仕事が楽しくて仕方がないのです。楽をするための努力なら惜しみません。何もせず楽をしているのと、努力をしたから楽ができるのと...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/1714 2007/10/24 19:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー