フェムトセカンド #七味とーがラジオ / @melonsode

The Destination is unknown. The Journey is the Reward.
Author: 野澤真一 / NOZAWA Shinichi , version 2.0220330 / Podcast: 七味とーがラジオ / twitter: @melonsode

2013年7月アーカイブ

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

以下、メモです。時間を見つけて、加筆修正する予定です。

前提

  • 参加者の方には下記の準備をしてきてもらっています。
  • 教えるプログラミング言語はPerlという言語です。
  • まったくの初心者歓迎
  • プログラミングを学ぶ時の一番最初にして最大の障害である、「環境の構築」を一緒にやります
  • 反響をみて、第二回以降を開催
  • 場所は越谷

準備

Perl入学式の第二回資料を印刷して持ってきてもらう。

Mac の人

  • テキストエディタをインストールしてきてもらう
  • テキストエディタは使い慣れているものがあれば、それでOK
  • テキストエディタというものがどういうものかわからない人にはSublime Text 2というエディタを紹介
  • http://www.sublimetext.com/

Winの人

  • VMWare Playerをインストールし、その上に仮想化したUbuntuをインストールしてきてもらう
  • インストールのやり方は下記のPerl入学式の下記スライドを参照
  • http://www.slideshare.net/papix/perl-1
  • インストール後はUbuntuを全画面で表示する設定や、ダッシュボードのアイコンを整理したりしてもらっておくほうが良かった

講座内容

ターミナルとテキストエディタ

ターミナル(Ubuntuは"端末"と呼ぶ)と、 テキストエディタを開いてもらう。

テキストエディタは、Macの場合、Sublime Text 2、 Ubuntu の場合は デフォルトで入ってる gedit。

以降、Perlの話よりもターミナルの使い方がメイン。

which perl

which perl
  • perlがどこにあるか
  • (どのPerlを使っているか)
  • そもそもPerlが入っているか

確認できる。

/usr/bin/perl

想定される反応はこういうもの。(環境によって異なるが)

ディレクトリの構成について解説

ls コマンド

今いるディレクトリのファイル・ディレクトリ一覧を表示するコマンド

  • ls
  • ls -l パーミッションや所有者名など詳細を表示
  • ls -a 「 . 」ではじまる隠しファイルも表示
  • ls -la -lと-aをあわせたもの

など。lsはlistの略。他にもオプションがある。

cd コマンド

  • cd [行きたい場所]

change directoryの略 とりあえず、

cd /

とやって、一番上の階層「 / 」に行ってもらって、 それからユーザーのデフォルトの場所まで戻ってきてもらった。

lsを使っていまいる場所にどんなディレクトリがあるか探ったり、 tabキーを打ってコマンドの補完をしたり、 ↑キーを使ってコマンドの履歴を呼び出したりする練習。

下記のコマンドで一発で戻れる

cd ~/

「 ~ 」このニョロのマークはチルダと読む

Hello, World を書いて保存

やっとPerlの話になる。

プログラム初心者のはじめの一歩、Hello, Worldを表示するプログラムを書く。 テキストエディタで下記のように書く。 最初は、改行文字( ¥n あるいは バックスラッシュn)はなしで。

#!/usr/bin/perl

print "Hello, World";

そして、これを適切な場所に保存する。 今回は、Document(あるいは書類)というディレクトリに 「sample.pl」という名前で保存してもらった。 (この操作はGUIで行う)

そして、先ほどの cd コマンドや ls コマンドを駆使して、 ターミナル上でそのファイルを見つけ出し、実行してもらう。

sample.plの実行

sample.plが置いてあるディレクトリまで移動できたら、

perl sample.pl

とやって実行してもらう。

Hello, Worldの解説

1行目はシバン行(シェバン行)と呼ばれているが、 おまじないとしておく。

最初は、行末の改行文字なしで実行してもらい、 改行文字がないと結果がどうなるかを実感してもらった。 それから、改行文字あり。

#!/usr/bin/perl

print "Hello, World¥n";
  • Hello, World を囲っているのはダブルクォート(シングルクォートではない)
  • 全部半角文字でうつ
  • print と「 " 」の間にはスペースを必ず入れる

それから、ダブルクォートをシングルクォートにするとどうなるか、実験。 シングルクォートにすると、変数展開しないため、¥nは改行にならず、 そのまま¥n(えんまーくえぬ)と表示されるのを確認。

プログラムを実行するもうひとつの方法

実は

perl sample.pl

とやって実行する場合は、最初の一行のシバン行(#!/usr/bin/perl)はいらない。 なぜなら、実行するときに、perlと打っているから。

そして、次のようにも実行できる。

./sample.pl

しかし、現状では「Permission Denied(権限がありません)」と表示されて、実行できない。

権限を変更する方法 chmod コマンド

  • 読み、書き、実行の3種類の権限の組み合わせ
  • 読み = read = r, 書き= write = w, 実行 = execute = x
  • user, group, otherの3種類の実行者分類
  • 権限を変更するのは chmod コマンド
  • change mode
  • userに実行権限を付与するとき:chmod u+x sample.pl
  • 権限をなくすとき:chmod u-x sample.pl
  • u+xとかではなく、644とか755とか数字で表現することもできる

和暦(平成)を西暦 に変換するプログラム

Hello, Worldができたところで、変数の扱いを知るために、 与えられた数字を西暦に変換するプログラムを作る。

#!/usr/bin/perl

$jyear = 25;
$year = $jyear + 1998;

print "$year¥n";

これを実行すると、「2013」という答えが返ってくる。
意味合いとしては、入力された数字を平成の年だと解釈して、 それを西暦に変換してる。

もう少し、結果をわかりやすくするために、下記のように加工。

#!/usr/bin/perl

$jyear = 25;
$year = $jyear + 1998;

print "平成 $year 年は $year 年です。¥n";

こうすると、「平成 25 年は 2013 年です。」という結果がでてくるようになる。

値を入力できるようにする(標準入力を受け取る)

いまの状態だと、平成21年が西暦何年か、平成3年が西暦何年か調べるために、 いちいちプログラムを書き換えなければならない。 そこで、平成何年を調べたいかプログラムに尋ねさせて、それに答えて(数字を入力して)結果を出力するという風に変更する。

#!/usr/bin/perl

print "平成?";
$jyear = <STDIN>;
$year = $jyear + 1998;

print "平成 $jyear 年は $year 年です。¥n";

こうすると、「平成?」と画面に出た後に入力待ちになり、 そこに数字を打ち込んでエンターを押す(例えば20)と、

平成 20
年は 2008 年です。

という結果になる。

ここで、結果が二行になってしまっているのは、表記ミスではなく、実際にそうなってしまう。

この場合は、20と打った後にエンターキーを叩くので、そのエンターキーによって入力された改行がそのまま反映されてしまうからである。

その余分な改行を取り除くにはchompという関数を使う。

#!/usr/bin/perl

print "平成?";
$jyear = <STDIN>;
$year = $jyear + 1998;

chomp( $jyear );
print "平成 $jyear 年は $year 年です。¥n";

こうすると、余分な改行は出てこない。

  • STDINはStandard Inputのこと。日本語だと標準入力。
  • これを書くと、ターミナルの入力を受け付ける
  • STDINを囲んでいるくの字カッコ( < と > )は見た目のためではなく意味がある
  • STDINという文字列は予約されていて、他の用途では使えない
  • STDINの他に、STDOUT, STDERRというのがある

変数とは

変数とは文字列とか数値とかを1個格納するもの。

上記のプログラムでは、$jyearと書かれているところに、例えば25と書けば、実行できるがそうすると、別の数字で実行したいときに全部書き換えなければいけない。

しかし、変数でおいておけば、その変数に値を代入する行だけ書き換えればよい。

今回のコードでは、和暦の数字を格納するための変数の変数名として「$jyear」という変数名を使った。jyearの j はJapanのJのつもりだったが、j を l (エル)とか i (アイ)とかと見間違える人が多かったし、そのあとで出てくる、「$year」という変数と1文字しか違いがなく、それも間違いのもとなので、 $jyear という名前の付け方は良くなかったようだ。

というわけで、 $jyear という変数名はやめて、 $input という変数名にしましょうと提案、実際に書き換えてもらった。

#!/usr/bin/perl

print "平成?";
$input = <STDIN>;
$year = $input + 1998;

chomp( $input );
print "平成 $input 年は $year 年です。¥n";

ポイントは、$jyearだったところで、全て、残らず、書き換えることである。1個でも漏らしたり、スペルミスをすると、動かない。(動くかもしれないが、望む挙動をしてくれない。)

Perlにおける変数名は、先頭に必ず「 $ (ドルマーク)」がつくこと。これが、他の言語とは異なる特徴で、他の言語の場合、こういうマークは一切つかない。

配列、ハッシュ

変数の次は配列とハッシュ。配列は値を複数持つもの。

@array = ('John', 'Taro', 'Hanako');

このように、表現する。変数と違い、先頭の文字は「 @ (アットマーク)」である。 配列にアクセスするときは何番目の要素かを指定してアクセスする。

$array[0] だったら John
$array[1] だったら Taro
$array[2] だったら Hanako

ということになる。注意することは、1番目からはじまるのではなく、0番目から始まるということ。

ハッシュは、配列の時は添字(何番目の要素か)という情報をもとにアクセスしたが、それだと不便なときがある。そういうときに、キーワードになる文字列でアクセスできるようなキーと値のペアのことである。

%hash = ( 'Taro' => 'Japanese', 'John' => 'American');

この場合、Taro と Japanese という文字列がペアになっている。 要素にアクセスするときは次のようにする。

$hash{'Taro'} とすると Japanese という値が出てくる

配列とハッシュで注意することは、まず、個々の値を呼ぶときは先頭の文字が@や%ではなく、変数と同じ $ になっていることである。

配列:@array 配列の要素:$array[0]

 ハッシュ:%hash ハッシュの要素:$hash{'Taro'}

次に、カッコの形も重要である。配列は添字を書き込むときに、角カッコで囲む。一方、ハッシュの時は弓カッコで囲む。

配列の要素:$array[0] ← 添字 0 は [  ] で囲われてる

 ハッシュの要素:$hash{'Taro'} ← キー'Taro' は { } で囲われてる

配列を使ってみる

@array = ('Yamada', 'Tanaka', 'MyName', 'Suzuki');

上のような配列を与えられた時に、自分の名前を表示するようにする。 (私の名前は MyName です)

解答:

#!/usr/bin/perl

@array = ('Yamada', 'Tanaka', 'MyName', 'Suzuki');

print "私の名前は $array[2] です¥n";

ポイントは

  • 添字は3ではなく、2である(0番目からはじまる)
  • ダブルクォートでくくる

そのほかに、確認として、ダブルクォートをシングルクォートに変えてみたり、 「"私の名前は" . $array[2] . "です¥n" 」と文字列を分割し、 ピリオドを使って結合してみたりしました。

第一回はここまで〜

その他

  • 今回の参加者は6名(自分含む)
  • 会場費 500円いただいた
  • 会場代 3500円(午後・夜間使用料+電源代)
  • 電源が遠く、テーブルタップのコンセントが足りず
  • 携帯の電波は良好
  • スクリーンなかったけどプロジェクタはきれいに映った
  • プロジェクタのアダプタの問題で、 ターミナルとテキストエディタを実際に移す様子を見せられなかった
  • 前日に参加を決めた方がおり、連絡が間に合わずUbuntuがない状態で参加
  • dankogaiさんのサーバーを使用 http://colabv6.dan.co.jp/lleval.html
  • 終了後は、サンシティの地下のお店(るーぱん)で懇親会
  • 懇親会は5名参加(割り勘で1200円程度)

Apple Developer Center が落ちてる

|

先週、XcodeをダウンロードしようとしたらApple Developer Centerにつながらない。
最初はURLが間違ってるのかと思ってたが、
どうもそうではなくて、Apple Developer Centerのサイトが落ちているようで、
いまはこういうメッセージが表示されている。

WS000112.JPG

なにやら、Apple Developer Centerのサイトにハッキング的なことがあった模様。

重要な個人情報は暗号化され、アクセスできないようになっているが、
一部の開発者の名前・住所・メールアドレスにアクセスされた可能性は
排除的ないとのこと。

Sensitive personal information was encrypted and cannot be accessed, however, we have not been able to rule out the possibility that some developers’ names, mailing addresses, and/or email addresses may have been accessed.

そのようなわけで、即座にサイトをダウンさせ、
サーバーのアップデートとデータベースの再構築を行っているらしい。

今日、そのことを知らせるメールが届いていた。

WS000113.JPG

すぐに再開できる見込みと書いてあるが、
いつまでにと書いてないし、もうすこし長引くかも。

追記:2013.7.28 0:25
いま接続してみたら、Xcodeがダウンロードできるようになっていた。

https://developer.apple.com

右上の「member center」というリンクは相変わらず無効だが、
Mac Dev Center https://developer.apple.com/devcenter/mac/index.action

はアクセスできて、Sing In すれば中に入れて、Xcodeをダウンロードできる。
iOS Dev Centerもアクセスできた。

Apple’s Developer Center Is Back After Over A Week Offline | TechCrunch

ちなみに、原因はトルコ人のセキュリティ研究者が
アップルの脆弱性を調べるために意図的にハックしたんだとかいう情報が
流れていますが、どうなんでしょうか。

Apple Developer site hack: Turkish security researcher claims responsibility


メモ:2016年任期満了の埼玉県の参議院議員

|
  • 関口昌一(自由民主党) Web
  • 西田実仁(公明党) Web
  • 大野元裕(民主党) Web

2013年7月 参議院選挙

|

カテゴリ:

参議院選挙が公示された。


参議院議員通常選挙のおしらせ 越谷市公式ホームページ

参議院議員通常選挙 候補者・名簿届出政党等情報及び選挙公報 - 埼玉県ホームページ

この選挙で、自分の関係する選挙区の誰が議員でなくなり、
新しい候補者は誰なのだろう?

Wikipediaによると、自分に関係する選挙区は”埼玉県”で、
定数は6で、今回の参議院選挙で失職するのは三名。

http://ja.wikipedia.org/wiki/参議院議員一覧

埼玉県(定数6)

任期満了:2013年(平成25年)

行田邦子(みんなの党) *当選時は民主党公認

古川俊治(自由民主党)

山根隆治(民主党)

任期満了:2016年(平成28年)

関口昌一(自由民主党)

西田実仁(公明党)

大野元裕(民主党)

今回の選挙ではだれがでるのだろうと気になるが、
まだ、選挙管理委員会のページには出てない。
でも、例のごとく、参議院選挙公示に先駆けて、
青年会議所の埼玉ブロックが公開討論会をやったらしく、
そのパネリストの顔ぶれから、おおむね推測できる。

埼玉選挙区 参議院議員選挙に伴う公開討論会開催 | 事業報告 | 埼玉ブロック協議会

立候補すると思われる方々(あいうえお順)

  • 伊藤岳(共産党) [ Web ]
  • 川上康正(社民党) [ Web ]
  • 行田邦子(みんなの党) [ Web ]
  • 谷井みほ(幸福実現党) [ Web ]
  • 古川俊治(自由民主党) [ Web ]
  • 矢倉克夫(公明党) [ Web ]
  • 山根隆治(民主党) [ Web ]

維新の会の立候補者はいないのか。へえ。

あどでみる:参議院議員選挙(越谷市)の結果 越谷市公式ホームページ

ちなみに、今年の11月には越谷市長選があります。

追記:上記の立候補者の他にも1名立候補者がいた。

宮永照彦(埼玉の未来を創る会)

[告知]ゼロからはじめるプログラミング講座@越谷

|

[Facebook] ゼロからプログラミング講座@越谷
[Zusaar] ゼロからプログラミング講座@越谷

越谷でゼロからのプログラミング講座やります。僕の時間の都合で土曜日開催で、7/27か8/3にやろうと思っています。参加したい方の都合をみながら決めたいと思います。場所はせんげん台のセブンタウン内にあるレンタルスペースか、越谷市民会館です。

やる内容は、「プログラミングの環境構築をする!」です。もはやプログラミングですらないのですが、プログラミングをやろうとする上でもっとも高いハードルはそこなのではと思いますので、それを一緒にやっていこうと思っています。

参加者は15名程度を考えています。参加費は場所のレンタル代を賄うため、1人500円ぐらいいただくつもりです。
参加資格は、ノートパソコンを持っていることで、当日にそれを持参して下さい。
そこに、プログラミングができる環境を構築します。
単発で終わらせるか、その後も継続するかは第一回を開催してから決めようと思います。

参加者と同時にお手伝いしてくれる方も募集します。何かと雑用が発生すると思いますので、当日のお手伝いをお願いしたいです。

昨日今日とTwitterとFBでつぶやいた感じだと参加者はたぶんいなんじゃないか(笑)という感じですが、50%以上の確率で参加したい!と思ってる方いましたら、ひとまずコメントなどください。

なんでそんなことをやろうかと単純に仲間を増やしたいからです。
プログラミングを知ることで見えてくる地平というのがあると思うし、
僕自身がもっとIT全般に関してスキルアップしたいので、
身近で切磋琢磨しあえる仲間を求めています。

ちなみに、プログラミングとひとくちに言っても、CやらJAVAやらPerl, Python, RubyにHaskellなどなど様々にありますが、特にライトウェイト言語として知られているPerl, Ruby, Pythonのような言語が主なターゲットです。というか、僕がまともに書けるのはPerlだけなのですが。

ただし、第二回目以降があればですが、話題をPerlに絞るつもりはなくて、
Perl以外のホットなプログラミング言語の話題ももちろんしたいし、
プログラミング言語だけでなくて、新しいITテクノロジーや
昨今のMaker MovementなどIT全般について知る機会を得られるような場を
目指しています。

よろしくお願いします。

プロフィール

月別アーカイブ

全アーカイブ

フェムトセカンド1.0


メールを送る(故障中)