Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
298 lines (252 sloc) 16.6 KB

Perl入学式


第1回 環境構築編


諸注意

  • 会場について
    • 飲食・喫煙・トイレetc
  • 写真撮影について
    • 写真撮影NGな方はお手数ですが申し出てください

本日の内容

  • 第1部
    • 環境構築
  • 第2部
    • ターミナルとシェル入門
    • エディタについて
  • 第3部
    • Perl入学式について
    • Hello, World

アイスブレイク


講師紹介

  • 講師・サポーター紹介

皆さんで自己紹介

  • せっかく今日集まったので, テーブルで自己紹介をしましょう
    • 話題は自由ですが, 名前(ハンドルネーム)や「なぜPerlを勉強してみようと思ったか(なぜPerl入学式に参加してみようと思ったか)」などがあると, 盛り上がると思います!

Perl入学式について


Perl入学式とは

  • 2012年1月に大阪で誕生した, プログラミング未経験者〜初心者向けのPerl勉強会です.
  • 2013年度では東京, そして2014年度では福岡と, 3年目にして3大都市で開催!
    • 2016年度は, 東京, 大阪, そして新たに沖縄の3都市で開催します.
  • 参加費は無料です. 受講者の負担が極力少ない形で行われています.
  • カリキュラムは年5回です. 東京は, 1年間に2回のカリキュラムを実施します(5月スタート, 11月スタート[予定]).

Perl入学式の使い方

  • 例えば...
    • プログラミング, ちょっと興味があるから初めてみたいな, という人.
    • 今流行のウェブアプリケーションを作ってみたいものの, 基礎から勉強したい人.
    • 他の言語を使っているけど, ちょっとPerlも使ってみたいと思った人.
    • 仕事や研究でPerlを使い始めたけど, ちょっと自信がないので勉強したい人.
  • 皆さんの学びたい, 作りたいといった気持ち, 目標をサポートします!

オンラインでのサポート

  • Perl入学式の公式ページ http://perl-entrance.org/
  • Twitterアカウント @PerlEntrance
    • 公式ページやTiwtterアカウントでは, 開催日程などがアナウンスされます.
  • Twitterハッシュタグ #Perl入学式
    • 運営側がウォッチしているので, なにか疑問があればこれをつけて気軽に質問してみましょう.
  • GitHubのPerl入学式アカウント.
    • 講義で使われた資料, コードなどがあります.

Perlという言語について


Perlって何?

  • 1987年, Larry Wall(右写真)が開発したプログラミング言語です.

- Ruby, Python, PHPと並ぶLL言語(Lightweight Language)と呼ばれるカテゴリのプログラミング言語の1つです. - 後のRubyやPHPに影響を与えました. - C言語やsed(せど), awk(おーく)の影響を受けた動的型付け言語です. - 「Perl」は言語そのもの, 「perl」はその処理系を示します.

Perlの特徴

  • Wikipediaの記事から重要なものだけ引用します...
    • 強力な文字列処理. 正規表現をサポート.
    • 日本語をはじめとして世界中の言語を処理可能.
    • 自由度の高い文法. 簡潔にプログラムを記述できる.
    • 高い後方互換性を持つ.
    • 数多くのオペレーティングシステムで利用可能.
    • プログラムの実行には事前コンパイルは不要.
    • 有志によって開発された豊富なモジュール.

TMTOWTDI

  • Perlのスローガン. 「ティムトゥーディー」と読みます.
    • "There's more than one way to do it."
    • 「やり方はひとつじゃない」.
  • Larryは「プログラミング言語は, いろんな対象をシンプルに記述する為に, ある程度複雑でなければならない」と信じています.
    • Perlは, 同じ意味を持つ処理をいろいろな書き方で表すことができます.
    • これについては, きっとこれからのPerl入学式のカリキュラムの中で実際に体験することが出来ると思います.

高い後方互換性

  • Perlのバージョンアップによって昔のスクリプトが動かなくなる, ということはほとんどありません.
  • もちろん, Perlもバージョンアップによる細かい機能変更はあります.
    • しかし, 基本的な処理については後方互換性が相当繊細なまでに維持されています.

豊富なモジュール

  • CPANと呼ばれるアーカイブに, 全世界のPerl Mongerがモジュールを投稿しています.
    • Perl Monger ... Perl使い, Perlを得意とするエンジニアのこと. RubyにおけるRubyist, PythonにおけるPythonistaと同義です.
    • 皆さんも今日からPerl Mongerです!
  • 例: Encode ... 文字列のエンコードを処理するモジュール.
  • 例: Net::Twitter ... TwitterのAPIを操作するモジュール.
  • 例: DBD::SQLite ... Perlから, SQLiteというデータベースを操作するモジュール.

Perl5 のバージョンの歴史

  • Perl 4以前は前史として, 既に周囲に環境が存在しないと思って良いです.
  • Perl 5.00x(xは数字)というバージョンでPerl5が登場しました. 1994年のことです.
  • Perl 5.6が登場. 2000年. この頃からインターネットやウェブというものが徐々に一般に普及していきます.
  • Perl 5.8が登場. 2002年. 国際化対応や今につながる様々な機能が搭載されます. 5.8時代が長かったため, 多くの企業等に長きにわたって使われ続けました.

Perl5 のバージョンの歴史

  • Perl 5.10が登場. 2007年. 後方互換性を損ねない構文拡張等を行います.
  • Perl 5.12が登場. 2010年.
  • Perl 5.14が登場. 2011年.
  • Perl 5.16が登場. 2012年.
  • Perl 5.18が登場. 2013年.
  • Perl 5.20が登場. 2014年.
  • Perl 5.22が登場. 2015年.
  • Perl 5.24が登場. 2016年. 現在の最新の安定版です.

Perl5 のバージョンの歴史

  • 5.(偶数) が安定版. 5.(奇数) が開発版です.
  • 基本的に最新版の一つ手前の安定版までがサポート対象です.
  • Perl 5.8時代が長かったので, 今もPerl 5.8が生き残っている現場はあるものの, 今ならPerl 5.10以降だけを考えれば良いです.
  • Perl 5.10以降から5.20まで, Perl初学者にとって大きな違いはあまりありません.

余談: Perl6について

  • Perl 5とは別に, Perl 6も開発されています.
    • 当初はPerl5の後継となるはずだったが, 後に「Perl5とは別に開発を進める」と公式に発表されました.
    • よって, Perl5の開発は継続されます.
    • また, 現在ではPerl 6はPerl 5とは別の言語とみなされている, と解説されることもあるほど互換性はありません.
      • これはPerl5のバージョン間での互換性が最大限に保たれていることの裏返しでもあります.
    • 現在の最新の安定版は5.24.0(2016年5月12日現在), バージョンを確認する perl -v では, Perl5のバージョン24, のように表記されています.

Perlのコミュニティ

  • 世界各地にPerl Monger(PM)のコミュニティが存在します.
    • 地域のPerl Mongrerコミュニティは, (地名).pmを名乗ることが多いです.
    • 日本でも, 十数個のコミュニティ, 勉強会が開催されています.

地域コミュニティ

  • pm.orgに登録されている, 公認のコミュニティ.
    • Hokkaido.pm, Kushiro.pm, Sendai.pm, Niigata.pm, Tokyo.pm, Shibuya.pm, Yokohama.pm, Kamakura.pm, Gotanda.pm, Nagoya.pm, Kansai.pm, Kyoto.pm, Fukuoka.pm, Okinawa.pm
  • 非公認のコミュニティ
    • Hachioji.pm ...
  • 勉強会/イベント
    • Hokkaido.pm Casual, Perl Casual, Perl入学式, よなべPerl...

YAPC::Asia Tokyo


PerlとCGI

  • 一時期, 「PerlでWebサービスを作るならCGI」という時代がありましたが, 今はそうではありません.
  • 最近は, PSGI(Perl Web Server Gateway Interface)という仕様に対応したWAF(Web Application Framework)を使っての開発が増えています.
    • 2016年現在, Perlの代表的かつ新規採用されやすいWAFとしては, MojoliciousやAmon2などがあります.
  • Perl入学式は「モダンなPerlを教える」という方針を取っていますので, CGIについては触れません.

より深く学ぶには?


勉強会への参加

  • 日本中のPerlコミュニティが, 定期的/不定期に勉強会を開催しています.
    • 難しい内容かもしれないので不安...
      • 参加するだけなら怖くありません.
      • 参加費も無料, もしくは会場費の割勘程度です.
  • こんな世界もあるんだ〜, 程度に聴講すると, 数年後にふと繋がることもあります
  • 懇親会に参加して盛り上がると, さらに業界やPerl界隈の裏話が聴けたりも!?

検索 vs 書籍

  • 最近は検索(ググる)ことで解決することも多いです.
    • ただそれだと体系的な勉強は出来ないので, より深く学びたいのであれば何らかの書籍を通読するのがオススメです.
  • ネットの情報は玉石混交, 一方で書籍の場合は情報の陳腐化があり得ます.
    • 最初は誰しも「記号」が分からないので, ググるにも手がかりが無い場合, ドキュメント(perldoc -v / perldoc.jp)を活用しましょう.

オススメの書籍

  • 「プログラミングPerl」(通称: ラクダ本). プログラミング未経験の初心者にはハードルが高く, 時期が来るまで買うのを待っても良いかも?
  • 「初めてのPerl」(通称: リャマ本). 若干プログラミング初心者向け, オライリーの文体に慣れていないと多少厳しいかも.
  • 「CPANモジュールガイド」CPANモジュールのガイド本. Perlの可能性を知るだけでも良書.
  • 「雅なPerl」2013年刊行. 同人誌, とはいえ初心者向けという意味ではかなり秀逸な解説をしています.
    • その他, 様々な対象者や内容の書籍がたくさんありますが, 割愛します.

Hello, world!


システムPerlとユーザPerl

  • MacやLinuxなどの多くのシステムには最初からPerlが入っています。このPerlのことを システムPerl と呼ぶことがあります.
  • もちろんシステムPerlをそのまま使っても良いのですが、今後モジュールを入れたりする際にシステムPerlの環境を汚すことを避けるために、自分専用のPerl環境 ユーザPerl を構築することが最近の主流です.
  • とはいえ, 単にPerlの勉強を始める, という状況であれば, システムPerlでも十分です.
    • そのため, 今回は基本的に「システムPerl」を利用しながら, Perlを勉強していきます.
    • ユーザPerlのインストールについては, 後日紹介します.

Perlとモジュール

  • 複雑な処理などを肩代わりしてくれる外部プログラムであるモジュールがPerlには豊富に用意されています.
  • PerlのモジュールはCPAN(シーパン)という場所に集められていて, 誰もが自由に使うことができます.
  • モジュールには, コアモジュールとそうでないモジュールが存在します.
    • コアモジュールは, Perlをインストールすると標準で利用できるモジュールです.
    • そうでないモジュールは, 別途cpanmなどのコマンドを利用して, CPANからインストールする必要があります.
    • これについては, 後日紹介します.

PerlとモジュールとCPANの世界

  • CPANには, ジョークのようなモジュールから, ウェブプログラミングを支援するためのモジュール, TwitterやFacebookなどにアクセスして情報を取得するためのモジュールなど, ありとあらゆるものがあります.
  • あなたの趣味や仕事を助けてくれるモジュールがきっとあるはずです. CPANを検索して自分が必要な処理を肩代わりするモジュールを使うことができるレベルまで, まずは少しずつPerlを勉強していきましょう.

最初のプログラム

  • どのプログラミング言語でも, 最初に解説されるのは「Hello, world! と表示するプログラム」であることが多いです.
  • というわけで, 先ほど構築したPerl環境を使って, Hello, world! を表示するPerlプログラムに挑戦してみましょう.
    • これは端末上に Hello, world! という文字列を表示するプログラムです.

Hello, world!

print "Hello, world!\n";
  • エディタにこのようなプログラムを書いて, hello.plという名前で保存しましょう.
    • Perlのスクリプトは.plという拡張子で保存することが多いです.
  • printは, 端末に文字を出力する命令です.
    • \nは改行を意味します.
    • Macの日本語キーボードの場合, \はOption + キーで入力できます.
  • 文の最後にはセミコロン(;)を付けましょう. 文の区切りという意味です.
    • C言語を知っている方は馴染み深いでしょう.

スクリプトの実行

$ perl hello.pl
Hello, world!
  • perlの引数に, 実行したいスクリプトファイル名を与えると, そのスクリプトを実行してくれます.

perldocとドキュメント

$ perldoc Term::ANSIColor
  • 使い方は perldoc Term::ANSIColor と打つと読めます(英語ですが). colored というサブルーチンが使えることがここでわかります.
  • モジュールには使い方のドキュメントがついていて、perldoc コマンドで読むことができます.
  • 実際にエディタを使ってPerlプログラムを書いていく際は, これらのモジュールを use を使って読み出します.

練習問題 (1)

  • print命令を複数個使って, あなたのプロフィール(名前, 年齢, 大学etc...)を表示するスクリプトを書いてみよう.
    • スクリプトの名前はprofile.plとして, 実行してみましょう.
    • print命令を複数書く場合にはセミコロンで文を区切りましょう.
    • セミコロンの後に改行を入れて複数の行にして読みやすくするのが通常です.

練習問題 (2)

  • print 5-2; とすると3が表示されます(ダブルクォートはしません). では, 2016からあなたの生年の西暦を引き算して, 満年齢を表示してみましょう.
    • 改行を入れる場合, セミコロンで文を分けて, 次に print "\n" を書くなど, 色々試してみましょう (色々な方法があります).

おまじない


おまじない

#!/usr/bin/env perl
use strict;
use warnings;
  • おまじないとして, 冒頭の3行を書くようにしよう
  • use strict -> 厳密な書式を定めたり, 未定義の変数を警告するといった効果があります
  • use warnings -> 望ましくない記述を警告してくれる効果があります
    • 以下, この資料のサンプルコードでは「お約束」を省略します
    • 書かれているものとして扱ってください

use

use Acme::FizzBuzz;
  • use の後にモジュール名を書くことで, そのモジュールを読み込んで利用する事を意味します

練習問題 (hello.pl)

  • 先程の冒頭の3行のおまじないを加えた上で, Hello, worldという文字列を出力するhello.plを作成しよう
    • ヒント: 文字列は"で囲みます
    • ヒント: 文字列を出力する関数はprintです