Text::UTX::SimpleをMoose化する予定

| コメント(0) | トラックバック(1)

一連のYAPC::Asia 2009リポートからちょっと離れまして(下書きは書きためていますので、明日以降も随時記事を公開していきます)、YAPC::Asia 2009の特別研修を受講します、という話を。

Moose入門、モダーンなオブジェクト指向システムの講師は何とShawn Mooreさん(sartakさん)です。API Designのトークも素晴らしかったです。

Perl, Unicode, and AJAXの講師は、こちらも何と小飼弾さん(dankogaiさん)です。Perl? Which Perl?のトークでは、Perl6への夢を馳せることが出来ました。

さて、私も既にMooseを使った日曜プログラミングをし始めているのですが、この研修の受講を機に、アプリケーションだけでなくライブラリも思い切ってMooseで(出来ればAny::Mooseを使ってMouseで)書く(書き直す)ことを考えています。その対象は、諸事情があって今のところCPANに上げていないPerlモジュールText::UTX::Simpleです。これは、機械翻訳用ユーザー辞書の相互変換器を作るための抽象レイヤーです。

Mooseを使わなくても立派なPerl OOプログラムは書けますので、このText::UTX::Simpleモジュールの中身の拙なさはひとえに私のスキルのなさに由来するものです。しかし、半年以上前の設計と実装ということもあり、出来ることならCPANに上げる前に色々(その最たる物がMoose化)直しておきたいと思っていました。基本的にプログラミングは「習うより慣れよ」の世界なので、この研修や自己学習で得た知見を路上運転でさらに試そうという魂胆です。

なお、『モダンPerl入門』に触発されたこの半年でMooseを使い始めています。2~3ヶ月ほど、自家用のWindows向け(WindowsのアプリをWin32::GuiTestで触ったり、色々)のPerlプログラムを133ファイル・2万6千行ほどでAny::Mooseづくしで作った経験くらいしかありません。改めて読み返すと冗長な記述が目立っていました。

Mooseドキュメントの邦訳などを最近じっくり読み返すと、BUILDARGSではSUPER::BUILDARGSを呼ぼうだとか、色々なところで勉強が抜けていたと感じます。このブログでもMoose/Mouseタグが付いた記事で色々まずいところがあったので、先程直しておきました。

Text::UTX::Simpleのドキュメントの中で発酵していたクラス図もどきや、ハムレット的なTo Moose or not to Mooseの煩悶や、社内でのPerlシンパの増殖計画などについては以下の通り。

クラス図もどき

ClassDiagram.png

色々と突っ込み処が満載ですが、Moose化すると結構中身が変わりそうなので、思い出としてここに掲げておこうと思います。今だと、機能の割に無駄に長くて、*.pmだけで18ファイルで10,190行になってしまっています。

なお、上記はUML::Class::Simpleで生成したファイルをArgoUMLで整形したものです。メソッドだけで、データメンバーについては記載していません。

汎用モジュールでないのでMooseで問題ない

Mooseの速度が遅いという議論のまとめと感想という話もありますが、Array::Compareのような汎用モジュールと比べた場合、このText::UTX::Simpleのモジュールの性格(用途が限られたモジュールである)としては、そう何度も頻繁には呼ばれないと踏んでいます。

金融ユー子でPerlを使う異端児の苦悩

細々としたPerlの使用実態

勤め先では(従事割合1割の兼務として)Perlを辛うじて公的に使えていますし、主務側でも自分を楽にする細切れ自家用ツールを色々書いています。

後者のお相手はIBMのメインフレームSystem/zですが、Perl for z/OSを使っているわけでは(残念ながら)ありません。PCでテンプレートエンジンモジュール類と仲良くして生成したJCLの山をFTPで送ったり、結果をメインフレームからFTPで落としてきてPC側で好きなように結果を切り刻むというような、或る意味ではPerlの本懐という使い方をしています。

メインフレーム系SEはオープン系に当然ながらあまり明るくない

(言葉は悪いですが)遠回りして頑張っちゃっているようなチームの一助となれば、と後者のツール類の横展開を企てましたが、ことごとく壁に当たりました。

  • もうちょっと巧いことパッケージングしないと駄目。Perlの実行系(出来ればStrawberry Perl、駄目ならActive Perl)とスクリプトと依存モジュール一式を渡すだけではなくて、例えばPARで固めるなどの処理は必須。
  • 最低でもGUIの皮を被せる。ホスト端末エミュレーターを触れてもWindowsのコマンドプロンプト(俗な言い方だと「DOS窓」)を触ったことがない人達に使っていただくためには必須。
  • 設定はテキストファイルで書かせる。勿論文字エンコーディングはUTF-8ではなくShift-JIS(CP932)。まともなテキストエディタがPCに入っていることを期待しない(Win XPの「メモ帳」ことnotepad.exeは、UTF-8で保存しようにもBOMのおまけが入ってしまう)。社内の申請が必要となるため(私も八方手を尽くしてようやく許可が下りました)。
  • まともなドキュメントが作られにくい文化でも、やはり言い出しっぺには詳細な利用手順書と運用手順書の提出が求められる。それも、初心者向け書籍『できるWindows XP』程度に噛み砕く必要がある。
  • 簡単なのはサーバーのサービスとして回す方法。某構成管理システムで「何でも出来るけどやってしまうと(当社的に)大変なことになる」という操作を封じたり、既に起きてしまった操作を追跡して復旧させる、というような裏方作業であれば、Perlでも全く問題ない。主務で(自分一人でなく)全社的に貢献出来たPerlのプログラムというのは、本項くらい。

というような点を学べただけでも御の字かも知れません。

なお、zを使っているというネタなどは、パブ記事に社名と担当者がしっかり出ているので機密漏洩に当たらないことは確認済みです。夏休み明けで席が無くなっていたら困るので一応記しておきます。

情けは人のためならず

閑話休題。横展開したいのは、ひとえに(回り回って)自分が楽になることを狙う意図によるものです。

(自分で好き勝手にしている)後者はともかく前者にすぐにMooseを適用することは難しいかも知れません。ただ、人を食わせるのが結局会社にとって一番金が掛かるという認識をしっかり上司と共有出来なければ、高コスト体質な業務が何も変わりません。そのような思いを持って、研修報告などをしていこうと思いました。といっても社内でPerlに対するひどいFUDに遭うことも少なくないので、道程は長くなりそうです。

たまたま私が一番会社に貢献出来そうな言語がPerlだったというだけで、別にExcel VBAでも良いわけです。ただ、いずれにせよコアコンピタンス扱いされていない技術だと、その道程の険しさが増してしまいます。流石にCOBOLで同業務・同品質・同納期で仕上げるのは厳しいです。

トラックバック(1)

Shawn Mooreさん(sartakさん)によるMoose入門、モダーンなオ... 続きを読む

コメントする

筆者"Gardejo"について

  • Twitter: @gardejo
  • GitHub: gardejo
  • CodeRepos: gardejo
  • CPAN: MORIYA

このサイトについて

Eorzea System Worksは、架空のシステム開発結社です。

FF14.name (FinalFantasyXIV.name)では、アヴァター(プレイヤーキャラクター)の管理システムやイベント出欠・リマインダシステムや、リンクシェル(LS)運営・管理システムやDKPシステムなどを設計・開発・公開する予定です。

関連サイト

関連サイトでは、他にもFF14に関連するサイトをいくつか紹介しています。

リンク, トラックバック歓迎

このブログへのリンク(どのページでも構いません)やトラックバックを歓迎します。

設計・開発・運用の参考にさせていただきますので、コメントもお気軽にお寄せください!

個別の記事に対するご意見などのほか、目安箱もご用意しています。

このブログ記事について

このページは、Gardejoが2009年9月13日 23:48に書いたブログ記事です。

ひとつ前のブログ記事は「PSGI/Plackは本質・本命・本流・本気でした (YAPC::Asia 2009)」です。

次のブログ記事は「Mooseの中の人によるMoose研修が素晴らしすぎる (YAPC::Asia 2009)」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

2014年2月

            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28  

やや真面目なサイト