Skip to content

Latest commit

 

History

History
412 lines (269 loc) · 18.8 KB

part3.md

File metadata and controls

412 lines (269 loc) · 18.8 KB

Perl入学式


第1回 環境構築編


講師紹介

  • 講師・サポーター紹介

皆さんで自己紹介

  • せっかく今日集まったので、テーブルで自己紹介をしましょう。

  • 話題は自由ですが、以下がオススメです。

    • 名前(ハンドルネーム)

    • なぜPerlを勉強してみようと思ったか

    • なぜPerl入学式に参加してみようと思ったか


Perl入学式について


Perl入学式とは

2012年1月に大阪で誕生した、プログラミング未経験者〜初心者向けのPerl勉強会です。

  • 2013年度 : 東京開講
  • 2014年度 : 福岡開講
  • 2015年度 : 沖縄開講
  • 2017年度 : 札幌開講
  • 2019年度 : 千歳開講

講師の都合に合わせて休講しているところもあります。

参加費は無料です。受講者の負担が極力少ない形で行われています。

現在のカリキュラムは全5回です。


Perl入学式の使い方

例えば...

  • プログラミング、ちょっと興味があるから始めてみたいな、という人。

  • 今流行のウェブアプリケーションを作ってみたいものの、基礎から勉強したい人。

  • 他の言語を使っているけど、ちょっとPerlも使ってみたいと思った人。

  • 仕事や研究でPerlを使い始めたけど、ちょっと自信がないので勉強したい人。

皆さんの学びたい、作りたいといった気持ち、目標をサポートします!


オンラインでのサポート


Perlという言語について


Perlって何?

1987年、Larry Wallラリー ウォール(右写真)が開発したプログラミング言語です。

RubyルビーPythonパイソンPHPピーエイチピーと並ぶ軽量言語(Lightweight Languageライトウェイト ランゲージ)と呼ばれるカテゴリのプログラミング言語の1つです。


Perlの登場

PerlはC言語やsedセドawkオークの影響を受けた動的型付け言語です。

先頭大文字「Perl」は言語そのもの、先頭小文字「perl」はその処理系を示します。

Perlは後に開発されたRuby(1995年)やPHP(1995年)に影響を与えました。

Computer Languages History

Programming Languages Influence Network | Exploring Data


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パイソニスタと同義です。

  • Encodeエンコード ... 文字列のエンコードを処理するモジュール。
  • Net::Twitter ... TwitterのAPIを操作するモジュール。
  • DBD::SQLiteエスキューライト ... Perlから、SQLiteというデータベースを操作するモジュール。

Perl5 のバージョンの歴史

  • Perl 4以前は前史として、既に周囲に環境が存在しないと思って良いです。

  • 1994年、Perl 5.00x(xは数字)というバージョンでPerl5が登場しました。

  • 2000年、Perl 5.6 が登場。この頃からインターネットやウェブというものが徐々に一般に普及していきます。

  • 2002年、Perl 5.8 が登場。国際化対応や今につながる様々な機能が搭載されます。5.8時代が長かったため、多くのサービスで長きにわたって使われました。

参考: レガシーPerlビルド 現代に蘇るPerl[1..5].0とPerl6


Perl5.8 以降のバージョンの歴史

  • 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年。
  • Perl 5.26が登場。 2017年。
  • Perl 5.28が登場。 2018年。
  • Perl 5.30が登場。 2019年。 現在の最新の安定版です。

Perl5 の安定板と開発版

5.(偶数) が安定版、 5.(奇数) が開発版です。

基本的に最新版の一つ手前の安定版までがサポート対象です。

過去のバージョンのPerlが生き残っている現場も多いですが、今ならPerl 5.10 以降だけを考えれば良いです。

Perl 5.10 以降から 5.30 まで、Perl初学者にとって大きな違いはあまりありません。

また、5.(奇数) の開発版をあえてインストールする必要はありません。5.(偶数) の安定版をインストールしましょう。


余談: Raku(旧称 Perl6)について

Perl 5とは別に、Perl 6も開発されています。

当初はPerl5の後継となるはずでしたが、後に「Perl5とは別に開発を進める」と公式に発表されました。

また、Perl 5とPerl 6では互換性を考慮していません。

これはPerl5のバージョン間での互換性が最大限に保たれていることの裏返しでもあります。

2019年10月、Perl6 は Rakuラクと改名しました。順次、名称の変更作業が行われています。

参考: The Raku Programming Language


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::Japan

YAPCヤプシー ... Yet Another Perl Conference

YAPC::Japanは日本の都市で年度内に1〜2度行われる、日本最大規模のPerlの祭典です。

2006年から2015年まで続いた YAPC::Asia の後継イベントです。

2016年12月に札幌で行われた YAPC::Hokkaido 2016 SAPPORO を皮切りに、大阪、福岡、沖縄、東京で開催されました。

2019年度は11月に名古屋で開催し、来年2020年03月には京都での開催が決定しています。

参考:YAPC::Kyoto 2020」を開催します!!!

日程は2020年 3月27日(金曜日)〜28日(土曜日), 場所は京都リサーチパークとなります.


PerlとCGI

一時期、「PerlでWebサービスを作るならCGIシージーアイ」という時代がありましたが、今はそうではありません。

最近は、PSGIピーエスジーアイ(Perl web Server Gateway Interface)という仕様に対応したWAFワフ(Web Application Framework)を使っての開発が増えています。

2019年現在、Perlの代表的かつ新規採用されやすいWAFとしては、MojoliciousモジョリシャスAmon2アモンツーなどがあります。

Perl入学式は「モダンなPerlを教える」という方針を取っていますので、CGIについては触れません。


より深く学ぶには?


勉強会への参加

日本中のPerlコミュニティが、定期的/不定期に勉強会を開催しています。

Q. 難しい内容かもしれないので不安...

A. 参加するだけなら怖くありません。参加費も無料、もしくは会場費の割勘程度です。

こんな世界もあるんだ〜、程度に聴講すると、数年後にふと繋がることもあります。

懇親会に参加して盛り上がると、さらに業界やPerl界隈の裏話が聴けたりも!?


検索 vs 書籍

最近は検索する(ググる)ことで解決することも多いです。

しかし、書籍を通読することで、体系だった知識を身につけることができます。

ネットの情報は玉石混交、一方で書籍の場合は情報の陳腐化があり、一長一短と言えます。

最初は誰しも「記号」が分からないので、ググるにも手がかりが無い場合、ドキュメント(perldocパールドック / perldoc.perl.org / perldoc.jp)を活用しましょう。


オススメの書籍

  • プログラミングPerl」(通称: ラクダ本)。プログラミング未経験の初心者にはハードルが高く、時期が来るまで買うのを待っても良いかも?

  • 初めてのPerl」(通称: リャマ本)。若干プログラミング初心者向け、オライリーの文体に慣れていないと多少厳しいかも。

  • CPANモジュールガイド」CPANモジュール(後述)のガイド本。Perlの可能性を知ることができる良書。

  • 雅なPerl」2015年に第3版刊行。同人誌、とはいえ初心者向けという意味ではかなり秀逸な解説をしています。

  • もっと自在にサーバを使い倒す 業務に役立つPerl」サーバーのログ加工を中心に、Perlの実用例を学べる本です。

様々な書籍がたくさんありますが、割愛します。


Hello, world!


システムPerlとユーザPerl

OSに最初から入っているPerlを システムPerl と呼ぶことがあります。

それに対して、自分専用・開発専用のPerl環境である ユーザPerl を構築することもあります。本格的な開発においては、ユーザPerlを利用することが多くなっています。

とはいえ、単にPerlの勉強を始める、という状況であれば、システムPerlでも十分です。

Perl入学式では「システムPerl」を利用しながら、Perlを勉強していきます。


最初のプログラム

どのプログラミング言語でも、最初に解説されるのは「Hello, world! と表示するプログラム」であることが多いです。

というわけで、既にあるシステムPerlの環境を使って、Hello, world! を表示するPerlプログラムに挑戦してみましょう。

これはターミナル上に Hello, world! という文字列を表示するプログラムです。


Hello, world!

print "Hello, world!\n";

エディタにこのようなプログラムを書いて、hello.plという名前で保存しましょう。Perlのスクリプトは.plという拡張子で保存することが多いです。

  • printは、ターミナルに文字を出力する命令です。

  • \nバックスラッシュ エヌは改行を意味します。

  • Macの日本語キーボードの場合、\はOption + キーで入力できます。

  • 文の最後にはセミコロン(;)を付けましょう。文の区切りという意味です。


スクリプトの実行

$ perl hello.pl
Hello, world!

エティタを閉じ、ターミナルで上記のように打ち込み、実行します。

perlの引数に、実行したいスクリプトファイル名を与えると、そのスクリプトを実行してくれます。


perldocとドキュメント

$ perldoc -f print

スクリプト中にわからない命令が出てきた場合には、perldocコマンドを利用します。

printについて調べる場合には上記のように、ターミナルで入力します。

先に登場したperldoc.jpでも確認が可能です。

スクリプトに機能追加を行うモジュール(第4回で説明)も同様にperldocや, インターネット上のperldoc.perl.org, perldoc.jpで確認が可能です。


練習問題 (1)

print命令を複数個使って、Perl入学式とYAPCの情報を表示するスクリプトyapc.plを書いてみましょう。

  • 「この勉強会の名前」、「今日の日付」、「会場名」、「前回のYAPCの場所」を表示してください。

  • print命令を複数書く場合にはセミコロンで文を区切りましょう。

    • セミコロンの後に改行を入れて複数の行にして読みやすくするのが通常です。

    • プログラムは上から順に実行されます。


練習問題 (2)

print 5-2;
print "\n";

エディタにこのようなプログラムを書いて、minus.plという名前で保存しましょう。

このスクリプトを実行すると、ターミナルに3が表示されます。

では、上記のスクリプトを参考にして、2019からPerl1.0のリリース年の西暦を引き算して、Perlの満年齢を表示してみましょう。

ちなみにPerl1.0のリリース年は1987年とされています。 (Wikipediaより)


おまじない


おまじない

#!/usr/bin/env perl
use strict;
use warnings;

プログラムには、問答無用で書いておく「おまじない」ともいうべきものがあります。Perlは上記の3行が「おまじない」となります。

  • #!/usr/bin/env perl ... shebangシバンと呼ばれるもので、このスクリプトがperlで動くことを明示します

  • use strict ... 厳密な書式を定めたり、未定義の変数を警告する

  • use warnings ... 望ましくない記述を警告する

以下、この資料のサンプルコードでは「お約束」を省略します。書かれているものとして扱ってください。 


練習問題 (hello_perl.pl)

先程の冒頭の3行のおまじないを加えた上で、Hello, Perlという文字列を出力するhello_perl.plを作成しよう

  • ヒント: 文字列は"で囲む

  • ヒント: 文字列を出力する関数はprint


お疲れ様でした!

長い時間、Perl入学式第1回お疲れ様でした!

これでみなさんもPerlMongerです。

是非Perl入学式のslackに参加して、 サポーターや参加者の皆さんと交流しましょう。

不明点もslackで是非質問してください。

第2回以降の参加もお待ちしております!


次回予告

  • スカラー変数

  • 四則演算

  • 標準入力

  • 条件分岐「if文, else文」

  • 論理演算子「&&(かつ), ||(または)」

  • スカラー変数の集合,「配列」

  • くりかえし「for文」