2010年02月12日
初心者のPerl。変数やサブルーチンの命名
ここのところ、お仕事でずっとPerlのスクリプトを書いています。
Perlとは、ワリと簡単に書ける、一種のプログラム。
ホームページ上の様々なサービスを実現できる言語で、このサイトで配布しているコメプロ等も、全てPerlで動いています。
と、このへんの話を始めると難しくなるので、本題。
だいぶ前に読んだ
「[ソフト開発]きれいなソースコードを書くために必要な、たったひとつの単純な事」
という記事。
これを実践するようにしてから、だいぶ変化があったので、その紹介。
Perlをやる人も、そうでない人も、必読です。
内容を簡単に言うと、プログラムの全ての「処理に名前を付ける」「処理内容を明確にする」事を、とにかく徹底する。すると必然的に、それぞれの処理がシンプルに、分かりやすくなります。
実際にこれを心がけて書いていくと、確かに効果を実感。
Perlでも、変数やサブルーチン等、処理にいろいろな名前を振って、コードを書いていきます。
表記にはアルファベットしか使えないので(メモや注釈等は日本語可)、急いでいる時など、一度しか使わない名前に「$tmp1」などと適当な名前を付けがち…。
で、半年くらいして見返すと、どこでどんな処理をしているのか、自分でも分からないカオス(混沌)状態になる事がしばしば(笑)。
これはイカン。と常々思っていたのですが、この記事を読んで納得。
直後から、スクリプトを書く際は、必ずアルクで単語を英訳して、ふさわしい名前を付けるように注意しています。
おかげで、ここ半年以内のソースは、可読性が上がって、修正や改造、転用が非常に楽になってきています。これは絶対にお勧め!
他にも、いくつか気が付いたコツがあるので、そのうち書いていきますね。

▲作りかけの一例。

ちなみに、沖縄のオジサンは、「ダーッ、アレしなさい!」「ダッ! なんていったっけ、アレ、ほら、ダーッ!」など、固有名詞を「だ行」に置き換える習性があります。
僕も、最近は人の事を言えなくなって来ていますが…(笑)。
日常の生活の中で、僕らはいろいろな言葉を省略しています。
ペプシもコカコーラも「コーラー(沖縄風)」だし、朱色もエンジ色もフェラーリレッドも、赤瓦も夕日も、全部「赤」。
会話だって省略しちゃいます。
「明かりを付けて」は、「ダーッ、暗い、付けよう」に置き換え可能 (って、最初より長いケド 笑)。
これらもきっと、正しい表現を意識すると、美しく、分かりやすい意志の伝達ができるのかもしれません。
…このように、プログラムだけではなく、話す言葉や、文章を書くときにも、対象を明確に意識することは、同じように大切な気がします。もしかして、アウトプットに関する、普遍的な「コツ」なのではないでしょうか。
混沌の中にあって、それでも一条の光を求めたい。
「ダーッ、さっき紹介したアレ」… は、そんな気持ちにさせてくれるのです。
Perlとは、ワリと簡単に書ける、一種のプログラム。
ホームページ上の様々なサービスを実現できる言語で、このサイトで配布しているコメプロ等も、全てPerlで動いています。
と、このへんの話を始めると難しくなるので、本題。
だいぶ前に読んだ
「[ソフト開発]きれいなソースコードを書くために必要な、たったひとつの単純な事」
という記事。
これを実践するようにしてから、だいぶ変化があったので、その紹介。
Perlをやる人も、そうでない人も、必読です。
内容を簡単に言うと、プログラムの全ての「処理に名前を付ける」「処理内容を明確にする」事を、とにかく徹底する。すると必然的に、それぞれの処理がシンプルに、分かりやすくなります。
実際にこれを心がけて書いていくと、確かに効果を実感。
Perlでも、変数やサブルーチン等、処理にいろいろな名前を振って、コードを書いていきます。
表記にはアルファベットしか使えないので(メモや注釈等は日本語可)、急いでいる時など、一度しか使わない名前に「$tmp1」などと適当な名前を付けがち…。
で、半年くらいして見返すと、どこでどんな処理をしているのか、自分でも分からないカオス(混沌)状態になる事がしばしば(笑)。
これはイカン。と常々思っていたのですが、この記事を読んで納得。
直後から、スクリプトを書く際は、必ずアルクで単語を英訳して、ふさわしい名前を付けるように注意しています。
おかげで、ここ半年以内のソースは、可読性が上がって、修正や改造、転用が非常に楽になってきています。これは絶対にお勧め!
他にも、いくつか気が付いたコツがあるので、そのうち書いていきますね。

▲作りかけの一例。

ちなみに、沖縄のオジサンは、「ダーッ、アレしなさい!」「ダッ! なんていったっけ、アレ、ほら、ダーッ!」など、固有名詞を「だ行」に置き換える習性があります。
僕も、最近は人の事を言えなくなって来ていますが…(笑)。
日常の生活の中で、僕らはいろいろな言葉を省略しています。
ペプシもコカコーラも「コーラー(沖縄風)」だし、朱色もエンジ色もフェラーリレッドも、赤瓦も夕日も、全部「赤」。
会話だって省略しちゃいます。
「明かりを付けて」は、「ダーッ、暗い、付けよう」に置き換え可能 (って、最初より長いケド 笑)。
これらもきっと、正しい表現を意識すると、美しく、分かりやすい意志の伝達ができるのかもしれません。
…このように、プログラムだけではなく、話す言葉や、文章を書くときにも、対象を明確に意識することは、同じように大切な気がします。もしかして、アウトプットに関する、普遍的な「コツ」なのではないでしょうか。
混沌の中にあって、それでも一条の光を求めたい。
「ダーッ、さっき紹介したアレ」… は、そんな気持ちにさせてくれるのです。
Posted by IGU at 21:50│Comments(6)
│CGI FLASH JavaScript
この記事へのコメント
私にとっては神の領域であるIGUさん、こんばんは(^o^)丿
いつも勉強になる記事読ませていただいてます
IGUさんにもあるんですね・・・混沌とすることが・・・
最近私が使ってる言語がVBAなので・・・
IGUさんが一生懸命書いた記事は
必要があるときに常時す~み~(覗き見)させていただきます(*^^)v
いつも勉強になる記事読ませていただいてます
IGUさんにもあるんですね・・・混沌とすることが・・・
最近私が使ってる言語がVBAなので・・・
IGUさんが一生懸命書いた記事は
必要があるときに常時す~み~(覗き見)させていただきます(*^^)v
Posted by mozzari
at 2010年02月13日 00:19

僕も勉強しながら、アウトプットもしているだけですよー。
混沌もしょっちゅうです。 (←「しょっちゅう」って漢字は無いんですね、驚き!)
でも、混沌から生まれるモノも、あったりして(笑)。
ちなみに、mozzariさんのお仕事だと、ファイルメーカーとか、面白いと思いますよ。(カード管理型データベースで、デザイン自由です)
あと、す~み~とか言わず、直接聞いてくださいな。
混沌もしょっちゅうです。 (←「しょっちゅう」って漢字は無いんですね、驚き!)
でも、混沌から生まれるモノも、あったりして(笑)。
ちなみに、mozzariさんのお仕事だと、ファイルメーカーとか、面白いと思いますよ。(カード管理型データベースで、デザイン自由です)
あと、す~み~とか言わず、直接聞いてくださいな。
Posted by IGU
at 2010年02月13日 20:37

こんばんは(^o^)丿
ありがとうございます♪
AccessとFileMakerはできるんですが
どうしてもExcelで構築したいという依頼があって・・・
その場合の双方の制作期間やメリット&デメリットを
説明できないといけなかったもので(^^ゞ
今更VBA勉強しながらやるのか!?とか
自分の意図しない依頼に対しどう応対するかなど混沌とする日々です・・・
ありがとうございます♪
AccessとFileMakerはできるんですが
どうしてもExcelで構築したいという依頼があって・・・
その場合の双方の制作期間やメリット&デメリットを
説明できないといけなかったもので(^^ゞ
今更VBA勉強しながらやるのか!?とか
自分の意図しない依頼に対しどう応対するかなど混沌とする日々です・・・
Posted by mozzari
at 2010年02月14日 19:56

なるほど…。
お客様のやりたい事が、第一ですものね。 僕とは違う、その混沌も、判る気がします。
あっ、でもファイルメーカー使いが身近にいるとは心強い。今度情報交換しましょ!
お客様のやりたい事が、第一ですものね。 僕とは違う、その混沌も、判る気がします。
あっ、でもファイルメーカー使いが身近にいるとは心強い。今度情報交換しましょ!
Posted by IGU
at 2010年02月14日 20:08

亀レスで申し訳ないです。
変数やメソドの名前はとても重要ですよね。
私は駄目ですはじめはチャンと規則通に名前を付けていても
熱くなるともうめちゃくちゃに。
後で一生懸命直しますが。
私も仲間に入れて頂けないかな、VBはキャリア20年
Cは少々、C#は現在どっぷりと。
変数やメソドの名前はとても重要ですよね。
私は駄目ですはじめはチャンと規則通に名前を付けていても
熱くなるともうめちゃくちゃに。
後で一生懸命直しますが。
私も仲間に入れて頂けないかな、VBはキャリア20年
Cは少々、C#は現在どっぷりと。
Posted by igoten
at 2010年02月16日 19:35

◇ igoten さん
僕はWEB系しかできないので、Cとか尊敬しちゃいます。
つい最近、自分で解決できない事を、igotenさんに相談できないものか、悩んでました。僕の身近には、全然プログラマーがいないのです。
それぞれの言語や人によって、得意なジャンルはありますし、オープンで何か共同作業とかできたら面白いでしょうね
仲間って、よろしければ是非、こちらから願いします!
僕はWEB系しかできないので、Cとか尊敬しちゃいます。
つい最近、自分で解決できない事を、igotenさんに相談できないものか、悩んでました。僕の身近には、全然プログラマーがいないのです。
それぞれの言語や人によって、得意なジャンルはありますし、オープンで何か共同作業とかできたら面白いでしょうね
仲間って、よろしければ是非、こちらから願いします!
Posted by IGU
at 2010年02月17日 21:55

※このブログではブログの持ち主が承認した後、コメントが反映される設定です。