The Destination is unknown. The Journey is the Reward.

Author: 野澤真一 / NOZAWA Shinichi , version 2.0190217 / Podcast: 七味とーがラジオ / twitter: @melonsode

2013年9月アーカイブ

もうすぐ越谷市長選挙(追記あり)

| | トラックバック(1)

カテゴリ:

[初回投稿 2013.9.17 11:51:24]

もうすぐ、越谷市長選挙です。

越谷市長選挙の日程について - 越谷市ホームページ

平成25年11月10日任期満了に伴う越谷市長選挙の投票日・告示日は次のとおりです。

告示日   平成25年10月20日(日)
投票日   平成25年10月27日(日)

選挙は、自らの意思を政治に反映させる最も有効な機会です。
すすんで投票に参加しましょう。

前回の結果 越谷市長選挙 結果

49,422票   高橋 努(タカハシ ツトム)    66歳 男 無所属     
30,593票   島村 玲郎(シマムラ アキオ)  49歳 男 無所属    
11,332票   服部 正一(ハットリ ショウイチ) 44歳 男 無所属 

今回は、誰が出るのかなあと思っていたが、松沢邦翁 埼玉県議会議員が出馬するそう。 松沢県議の後援会報に出馬の意が書かれていた。

さて、越谷市におきましては10月27日投票の市長選挙が予定されております。
民主党の推薦する現職市長、現職市議会議員の2名がすでに立候補を表明し
ております。国の政権与党である自由民主党として、この越谷市長選挙を戦わ
ずして白旗を上げることは断じてあってはならないと考え、私が立候補すること
を決意いたしました。

ということのようで、現職市議も立候補する模様。

現職市議で立候補する人は誰なのかは、調査中です。

追記:立候補するのは中村譲二市議 でした。

参考記事:危機感ないが…市長選、自民推薦候補3連敗の県 : 地方選 : 選挙 : YOMIURI ONLINE(読売新聞)

 安倍内閣が高い内閣支持率を維持する一方で、8日の埼玉県八潮市長選で自民推薦候補が大差で敗れるなど、県内の市長選挙で、自民党が苦戦している。
 自民の推薦候補は、相乗り候補を除くと、5月のさいたま、7月の飯能両市長選に続き「3連敗」となり、今後の選挙に向け態勢の見直しが急務となりそうだ。
 8日に投開票が行われた八潮市長選では、自民推薦の前市議、大久保龍雄氏が、前県議の大山忍氏の半分も得票できず惨敗した。大久保氏は元民主市議だが、昨夏に離党し、自民の推薦を得た。大山氏は元自民県議だが、衆院選で日本維新の会から当選した鈴木義弘氏を応援するため昨年7月に離党していた。自民県議が市長選で大山氏の応援演説をして処分されるなど、党内の結束の乱れを露呈した。
 自民党県連の奥ノ木信夫幹事長は10日、読売新聞の取材に対し、「(市長選は)候補個人の力量不足や地域の事情がある。県連として危機感を持っているわけではない」と答えた。
 相次ぐ敗北は、5月のさいたま市長選から始まった。候補擁立を巡り、県議団と市議団が対立。推薦候補として前県議の長沼威氏を擁立したが、溝は埋まらず、市内10区の支部のうち浦和、大宮、緑の3支部は長沼氏を推薦しなかった。緑区の支部長(当時)が対抗の清水勇人陣営の総括責任者になるなど足並みはそろわなかった。
 総括は形ばかりとなり、6月10日に開催された県連役員会後、県議団の重鎮、野本陽一県議は「(さいたま市長選の)総括はしたが、結果についてご覧の通りということで終わり」と素っ気なく答えただけだった。
 同時に投開票された川口市長選こそ勝ったものの、その後は負けが続いた。自民党県議の1人は「以前の自民党なら負ければ責任問題になったが、今は候補者が悪いとか地域事情があるとか理由をつけて誰も責任を取らない」と嘆く。
 10月には鶴ヶ島、熊谷、春日部、越谷、ふじみ野市と市長選が目白押し。党内の結束や地方組織の強化について見直しを迫られそうだ。
(2013年9月11日13時13分 読売新聞)

追記:2013.9.25

高橋現市長のWebページができたようです。(リニューアルとあるけど、前からあったのか???)

他に、立候補される予定の方々

越谷市議会議員一覧 2013.9時点

|

カテゴリ:

名前 所属 得票数 Web ・ Blog ・ Twitter ・ FB
浅 井明 自由民主党 4,042票 [ Web ]
辻 こうじ 越谷市民ネ ッ トワーク 3,906票 [Blog] [Twitter]
白 川 ひでつぐ 無所属 3,478票 [ Web ] [Twitter]
佐 々 木 浩 無所属 3,330票 [ Web ]
島 田 れいこ 自由民主党 3,291票 [ Web ] [Blog]
は っ と り 正一 自由民主党 3,291票 [Blog]
も り や とおる 公明党 3,291票 [ Web ]
松 島 たかお 無所属 3,276票 [ Web ]
せ が きょうこ 公明党 3,259票 [ Web ]
金 井 なおき 自由民主党 3,231票 [Blog] [Twitter]
は し づ め 昌児 公明党 3,132票 [ Web ]
野 口 けいじ 無所属 3,075票
お かの英美 公明党 3,040票 [ Web ] [Blog]
竹 内 えいじ 公明党 2,958票 [ Web ]
髙 橋 幸一 民主党 2,919票
か し 村 きげん 無所属 2,913票 [Blog]
玉 生 芳明 民主党 2,773票
は た や 茂 公明党 2,731票 [ Web ] [Blog]
江 原 チエコ 自由民主党 2,711票 [Blog]
武 藤 さとし 無所属 2,634票 [ Web ] [Twitter]
伊 藤 おさむ 自由民主党 2,606票 [ Web ]
小 林 とよ子 無所属 2,532票
き くち貴光 無所属 2,508票 [ Web ] [Blog]
ご とう孝江 民主党 2,452票 [ Web ]
大 石 みえこ 民主党 2,362票 [Twitter]
金 子 まさえ 日本共産党 2,289票 [Blog]
山 田 だいすけ 日本共産党 2,261票 [Blog]
橋 本 哲寿 無所属 2,231票 [ Web ]
中 村 じょうじ 無所属 2,210票 [ Web ]
大 野 やすし 無所属 2,165票 [Blog]
福 田 あきら 民主党 2,105票 [ Web ] [Blog] [Twitter] [FB]
ふ じ も り 正信 無所属 2,080票 [ Web ] [Blog] [Twitter] [FB]

ゼロからはじめるプログラミング講座(Perl)@越谷 第2回

| | トラックバック(1)

カテゴリ:

ゼロからはじめるプログラミング講座 第2回 講義ノート

  • 2013.9.4 書きかけリリース
  • 2013.9.19 一応、完成

配列を思い出す

配列の定義のしかた

配列の基本は、全体を「丸いカッコ " ( " と" ) "」で囲う。中の要素は、文字列ならシングルクォート( ' )で囲う。ダブルクォートで囲ってもいいけど、それを使うのは、変数展開をするときに適している。数字なら、クォートで囲う必要はない。

# 配列の基本形 - 配列のシジルは@ 
@eras = ('明治', '大正', '昭和', '平成');

# 別にダブルクォートで文字列を囲んでもいい
@eras = ("明治", "大正", "昭和", "平成");

この他に、カッコやクォートを書くのがめんどくさい場合に、qwというのがある。

# カッコやクォートを書くのがめんどくさかったら
@eras = qw/明治 大正 昭和 平成/;
@eras = qw!明治 大正 昭和 平成!;
@eras = qw{明治 大正 昭和 平成};

qw は quote words の略で、words(単語)をクォートして(囲って)ね、という意味。普通は、qw/単語1 単語2 単語3../と、始まりと終わりをスラッシュ( / )でくくるけど、ここの文字は他の文字でもよい。例えば、 | とか ! とか # とか $ とかでもOK。かなりいろいろな記号が許容される。また、4種類のカッコのペア () と{} と [] と <> でもよい。

この qw// の記法はクォートとカンマを省略できるメリットの他に、もう一ついいことがあって、それは、クォートの記号のエスケープをしなくてすむというところ。

例えば、「明治」という単語の中が、(なぜか)「明'治」となって、「明」と「治」の間に、シングルクォートが入っていたとしよう。それを配列に入れようとすると、「明」と「治」の間のシングルクォートは、単語をくくっているクォートとは別なんだよ、と示すために、前にバックスラッシュ(円マーク)をつけないといけない。(下記のように)

@eras = ('明¥'治', '大正', '昭和', '平成');

これを、「エスケープする」というのだけど、こういうことが増えてくると、くくるためのクォートなのか、単語の中に(たまたま)含まれているクォートなのかを判別して、エスケープしていくのが、煩雑になってくる。

しかし、qw// の場合は、くくる文字がシングルクォートではないので、エスケープする必要が生じない。

@eras = qw/明'治 大正 昭和 平成/;

じゃあ、文字の中にスラッシュ( / )が入ってしまったら?そうしたら、 / 以外の文字でくくってやればいい。

@eras = qw!明'治 大/正 昭和 平成!;

このように、エスケープする必要が生じたら、それをしなくていいように囲う文字を造作もなく変えることができるので、 qw// は便利なのである。

配列の要素を呼び出すには

配列は、何番目の要素かを指定してやることで、その要素を呼び出すことができる。

たとえば、

print "$eras[0] ¥n"; # 「明治」とでてくる

注意しなくてはいけないのは、最初の要素は1番目ではなく、0番目であるということ。それから、添字は [ ] という角カッコで囲むこと。(違うカッコの形、たとえば { } だと違う意味になってしまいNG)

表示するのは、

print "$eras[0] ¥n"; # 明治
print "$eras[1] ¥n"; # 大正
print "$eras[2] ¥n"; # 昭和
print "$eras[3] ¥n"; # 平成

とやればいいけど、もっとたくさんの要素数になったら大変。どうする?→ループを使おう

for 文

C言語っぽい書き方

#    はじめ おわり 1ステップ進んだら
for ( $i = 0; $i < 4; $i++ ){
    print " $eras[ $i ] ¥n ";
}

#解説
for ( 条件式 ){
 ループ1回の処理内容
}

最初の $i = 0 は、$i という変数を 0 という値にしていて、初期化の意味合い。2番目は、このループが継続される条件を示していて、この場合だと、4より小さければ続行。3番めの $i++ は $i を1増やすという意味。ちなみに、$-- は1減らす。

このループを日本語にしてみると、

最初は $i は 0
$i は 4より小さいので { } の処理をする
終わったら $i を 1増やす→ $i は 1 になった!
ループの先頭に戻ってくる
いま $i は 1 で、 4より小さい→ループ続行
{ } の処理をする
終わったので $i を 1 増やす→ $i は 2 になった!
ループの先頭に戻ってくる
(中略)
$i を 1増やす→ $i は 4 になった!
ループの先頭に戻ってくる
いま $i は 4 で、 4より小さくない!→ループ終了

という感じである。 { } の中では、条件式で使った $i を使用している。

print " $eras[ $i ] ¥n ";

これは、 $i 番目の添字の要素を表示するという意味になっており、$i は1ずつ増えていくので、ループがまわるごとに1個ずつ要素が表示されていくことになる。

foreachを使うやり方

C言語ライクなfor文は、配列の添字を1個ずつずらしていくことで、 一個ずつ配列の要素を取り出していく方法だった。 この方法だと、添字( $i )をわざわざ用意して、それを一個ずつ増やしていくという ことをしなくてはならないし、 添字の始まりはいくつで、終わりはいくつという”境界条件”について、 考えなければ書くことができない。

添字を使う書き方は、慣れてしまえばどうということはないかもしれないが、 やはり煩わしいのではないか。

その煩わしさから開放される書き方が foreach文による書き方だ。

実は、for文とforeach文はPerl的には等価なので、以下のコードはforeachと書いてあるところを、forと書いてもらっても全く問題ない。

foreach $jidai ( @eras ){
    print $jidai, "\n";
}

#解説
foreach 要素 ( 配列 ){
    ループ一回分の処理
}

配列という入れ物の中から、要素を一個ずつ取り出していって、 中身がなくなったらそれで終わり、というイメージである。 わざわざ始まりと終わりを指定するコードを書かないで済むので、 個人的に書いていて楽だと感じる。

今回は、@erasから要素を一個取り出したら、$jidaiという変数でそれを受け取ったが、 変数名は自由につけて構わない。

ちなみに、要素を受け取る変数名は、省略してしまってもいい。 その場合は、「 $_ 」という特殊変数に要素がセットされる。

foreach ( @eras ){
    print $_, "\n";
}

if文

今度は条件分岐のための構文の、if文である。

例えば、平成という年号は1989年にはじまるので、 もし1995年生まれだったら平成生まれだし、1980年生まれだったら昭和生まれだということになる。

その人が平成生まれか昭和生まれか、プログラムで判定するプログラムを書いてみることにする。

print 'Born year?:';

$b_year = <STDIN>;

chomp( $b_year);

if( $b_year < 1989 ){
        print "Showa!\n";
}else{
    print "Heisei!\n";
}

最初は、「生まれた年は?」と聞いてるつもりで、「Born year?」と表示し、 その直後で、入力を受け付けるようになる。()受け取った入力の改行コードを削るのが chomp($b_year) で、このあたりは第一回でやったのでそちらを参照してほしい。

$b_year という変数に何年生まれかの数字(おそらく19ではじまる4桁の数字)が格納されていて、それが if文 の条件式にはいる。

if( $b_year < 1989 ){
        print "Showa!\n";
}

「 $byear < 1989 」は$byearの値が1989よりも小さい、という意味で、 この式が正しければ、つまり、$b_yearに入っている数字が1989より小さければ、 そのあとの { } で囲まれたブロックが実行される。今回は、単純に「 Showa!」と表示するだけである。

if文 は、単にこれだけでも成立する。

しかし、これだけだと、1989以降の値を入力した人には何も表示されなくて切ないことになってしまう。そこで、 else という分岐を加えて、先の「$b_yearの値が1989よりも小さい」という条件に合致しない場合は、こちらのブロックを実行せよ、と支持している。

今回は、1989以上の数字が入力された場合は、「 Heisei! 」と表示するようになっている。

if( $b_year < 1989 ){        # 1989より小さかったら
        print "Showa!\n";  # 昭和!
}else{                               # そうじゃなかったら
    print "Heisei!\n";           # 平成!
}

このように、if文はelseと同時に使うことが多い。

そして、もう一つ、if と else の他に、 elsif というものがある。

elsif

注意点は、「 elseif 」でも「 else if 」でもなくて、「 elsif 」だということである。

先の、 if - else の場合は、「条件Aが真ならばこれこれ、そうでなければそれそれ」、という二者択一的な分岐だった。elsifを用いると、「条件Aが真ならばこれこれ、(条件A、は真ではないけど)条件Bが真ならばあれそれ、そうでなければそれそれ」と分岐の選択肢を増やすことができる。

1989年に生まれた人は、生まれた日によっては、平成生まれかもしれないし、昭和生まれかもしれないので、もし、1989と入力されたときは、即「平成!」とレッテルを貼るのは不正確である。ということで、以下のように修正をした。

if( $b_year < 1989 ){
    print "Showa!\n";
}elsif($b_year == 1989){
    print "Showa or Heisei!\n";
}else{
    print "Heisei!\n";
}

今度は、 elsif( $b_year == 1989 ) という条件が加わった。今度は、$b_yearが1989に一致したら、という意味になる。イコールが2つつながる( == )と数字として一致するという意味になります。

「 $b_year == 1989 ($b_yearが1989と一致するという条件式)」と「 $b_year = 1989 ($b_yearに1989という値を代入)」は「 = 」が一個あるかないかの違いしかありませんが、意味がまったく違うので、注意しましょう。

練習:for文とif文を組み合わせる

配列の宣言の仕方として、 こんなのもあります。

@years = ( 1970 .. 2013 );

#上は下と等価
@years = ( 1970, 1971, 1972, 1973, (中略), 2010, 2011, 2012, 2013 )

1970 .. 2013 と書くことで、1970から1ずつ増やして2013までの連続した数字の配列をあらわすことができます。何十もの要素をもつ配列ですが、こんなに簡単に表現できてしまいます。

これを使って、 1970年から2013年までを1年ずつ表示し、それが平成か昭和か判定するプログラムを書いてみます。

@years = (1970..2013);

for $y ( @years ){
    if( $y < 1989){
        print "$y : Syowa !\n";
    }elsif( $y == 1989){
        print "$y : Syowa or Heisei !\n";
    }else{
        print "$y : Heisei !\n";
    }
}

forのブロックの中に、if文で条件分岐し、条件ごとに違った文字列を出力しています。 自力で書くことができたでしょうか?

ハッシュの練習

ハッシュは前回触れましたが、もう一度ハッシュを扱う練習です。

ハッシュとは、キーとバリュー(値)がペアになっている変数の集まりのことです。

例えば、平成は1989年からで、昭和は1926年から、大正は1912年からで、明治は1868年から、という風に、年号と始まりの年のペアをそれぞれキーとバリューと考えた時に、それを表現するハッシュを書いてみます。

%era_year = (   'Heisei' => 1989,
                'Syowa' => 1926,
                'Taisyo' => 1912,
                'Meiji' => 1868
             );

これは見やすくするために、複数行にわけて書いていますが、一行にしてしまっても構いません。

また、キーとバリューを結ぶ記号として「 => 」を使っていますが、 実は、単にカンマでもOKです。奇数目の変数がキーで偶数目がバリューだとPerlは解釈できるからです。しかし、人間の目にはわかりずらいので、たいていは「 => 」を使って書きます。

#一行にしちゃってもOK(でも見にくい)
my %era_year = ( 'Heisei' => 1989, 'Syowa' => 1926, 'Taisyo' => 1912, 'Meiji' => 1868 );
# => 使わなくてもOK(でも見にくい)
my %era_year = ( 'Heisei', 1989, 'Syowa', 1926, 'Taisyo', 1912, 'Meiji', 1868 );

キーは文字列なので今回はシングルクォートで囲んでいますが、 ダブルクォートで囲んでもいいですし、 実は文字列が一定の条件(ハイフンをふくまないなど)をみたせば、 クォートを省略することができます。 Perl は => という記号を目印に、その左側は文字列であると判断できるからです。

バリューの方は、その変数の性質(数字なのか文字列なのかオブジェクトなのか変数なのか)によって、適切にクォートをつけたりしてください。

ハッシュとfor文を組み合わせる練習

今度は、ハッシュと先ほど練習したfor文の練習です。

「(年号)は(西暦)年から始まります」

という文を、次々に表示するコードを書いて下さい。

ハッシュのキーは keys という関数を使うと、キーだけを一括して取り出し、配列にすることが出来ます。 そのキーの配列をfor文で回して、ハッシュの値を次々に取り出して行きます。

@era = keys %era_year;

for $jidai (@era){
    print "$jidai は $era_year{$jidai} にはじまります。\n";
}

use strict と my

ここまでやってきて、プログラムが動かない!という場面に何度も遭遇したと思いますが、変数名を打ち間違えていたというケースがけっこう多かったように見受けられます。

例えば @era と書くところを @ear と書いてしまったり、$eras[$i]と書くところを@eras[$i]と書いていたり。

そのようなたかが1文字違うだけでも、Perlはまったく違うものとして扱うため、プログラムは止まってしまいます。そして、人間の目には1文字の違いは見落としがちで、なぜプログラムが動かないのかわからずに煩悶しがちです。

そういうミスを回避するために、「 use strict; 」を使います。

use strictを使うと、変数は、使う前にあらかじめ宣言することが必要になります。use strictの使い方は、単に、ファイルの中に 「 use strict; 」と一行書くだけです。各場所はどこでもいいのですが、たいていはソースコードの一番上、シバン行のすぐ後に書きます。

#!/usr/bin/perl

use strict;

my $words = 'Hello, World';
print $words, "\n";

上のコードでは、 $words という変数の前に my というものがくっついていることに気づいたと思います。

my を変数の前に書くと、「この変数名をこれから使います!」という宣言になります。「私の」という意味のmy です。(似た言葉に our があります)

先ほどのハッシュのコードは、use strictすると、下記のように書かないと動きません。

use strict;

my %era_year = (    'Heisei' => 1989,
                    'Syowa' => 1926,
                    'Taisyo' => 1912,
                    'Meiji' => 1868
                 );

my @era = keys %era_year;

for my $jidai (@era){
    print "$jidai は $era_year{$jidai} にはじまります。\n";
}

こうすると、何が嬉しいのでしょう? my という文字を打つ手間が増えるだけじゃないかと思うかもしれませんが、そうではありません。

use strictすると、宣言をした変数しか使えなくなるため、 @eraと書くべきところで @earと書いてしまったら、Perlがエラーメッセージを吐いてくれるようになります。

@eraは宣言されていますが、@earは宣言されていません。なので、宣言されていない @earが突然でてきたら、Perlは、「そんな変数を使うなんて聞いてない」とプログラムを停止し、エラーを出力します。

そのようにエラーがでてくれば、プログラマは、すぐにどこかでミスをしたことに気付くことができます。もし use strict をしていないと、@earと書いてあっても、ひとまずはプログラムが止まることなく動いてしまうので、プログラマはミスに気付くのが遅くなります。

use strictすると、他にもいろいろと"厳しく"なるのですが、その厳しさは、どれもプログラマを助けてくれるためなので、今後はuse strict; を必ず書くようにして、変数には my をつけて宣言してから使うようにしましょう。

ゼロからプログラミング講座(Perl) #2+補講@越谷 開催しました。

|

カテゴリ:

あ、告知してなかった・・・・。

先日、7月に「ゼロからプログラミング講座」を開催しましたが、
その際に、二回目の開催を希望していただけたので、
8/31に第二回を開催いたしました。

#2もつつがなく開催でき、その後の懇親会も
楽しい時間となったので、ほっとしております。

人数は、第一回が5名だったのが、
第二回は10名に増えました。(ありがとうございます)

第二回は次のような時間割でした。
14:00 〜 15:00 準備(机移動とか) (2名)
15:00 〜 17:00 第一回の補講    (5名?)
17:00 〜 19:00 第二回の本編    (10名)

第一回の補講は、最初は、マンツーマンで、「わからないところはどこですか?」と
聞きながらやっていたのですが、人数が4,5人になって
同じことの繰り返しになってきたので、
講義形式に切り替えて、第一回の内容をおさらいしました。

第二回本編は、for文とif文の扱い方をやりました。
と、同時に、配列の扱い方とハッシュの扱い方も絡めて、
講義を進めました。
内容は、別エントリにまとめる予定です。
(しかし、すでに記憶が薄れておる・・・)

自分としては、進むスピードが(一部の人にとっては)のろすぎるのではないかと
ずっと気になっていたのですが、終了後に聞いてみると、
思いの外、遅すぎるという意見はなかったようなので、ほっとしました。
(もう少しはやくてもいいという意見はありましたが)

業務に役立つPerl」の著者である木本さんも参加してくださって、
ものすごく驚きました。

講座の終了後は、たまたま同じ日にすぐ近くで開催されていた、
川辺のジャズコンサートがあり、そこに出店が3軒(居間人さん、ココチーノさん、エルカミーノさん)あったので、
ジャズの音楽を聞きながら、しばしみんなで缶ビールやジュースを片手に
タコスを食べて歓談しました。
(イスがなかったので、立ち食い!)

歓談が一段落し、家が遠い方が帰られたあと、
移動して、近くにあったイタリア料理のお店に移動しました。
そこでまた、楽しく飲んだり食べたりしました。

マニアックなサーバーのセキュリティの話とか、
OSの仮想化の話がでたかと思えば、
なぜか高齢化の話しとか移民の受け入れの話とかもでたりして、
そうやって話題がIT関連以外のところにも振れたのが、
個人的には面白かったです。

第三回は10月の初旬の土曜日(おそらく10/3)を予定しています。

もっと参加してくれる人が増えるといいな〜と思う反面、
これ以上増えると、マネジメントできなくなりそうっていうのがあり、
また、第三回から参加だと、さすがに補講が大変そうというのもあり。

でも、今度、いくつかのイベントに、プログラミング講座の宣伝にいこうかとも
考えていたりもする。


プロフィール

月別 アーカイブ

月別アーカイブ

全アーカイブ

ブログパーツ



Powered by NINJA TOOLS