Perl Hackers Hub

第72回初学者に伝えたい Perl学習の勘所 ―勉強会を10年運営して培ったノウハウ(1)

本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーは初学者のPerl学習を支援する勉強会Perl入学式の運営に携わっている尾形鉄次さん、和田智さん、三島智一さんで、テーマは「初学者に伝えたいPerl学習の勘所」です。

本稿のサンプルコードは、執筆時点(2022年3月)の最新であるPerl 5.34.1で動作確認を行っています。サンプルコードの全文は本誌サポートサイトから入手できます。

最初のプログラミングをPerlで学ぶ

義務教育でのプログラミング教育必修化など、老若男女を問わず初学者がプログラミングを学びたくなる機運は高まっています。しかし、プログラミングを学ぶためには実行環境を構築する必要があり、初学者にとっては学習のスタートラインに立つこと自体が大変です。

Perlは、macOSには最初からインストールされており、すぐに学習を開始できます。また、Perlが標準ではインストールされていないWindowsでも、本稿で紹介する手順で環境を簡単に構築できます。

筆者らは、Perl入学式という初学者向けのプログラミング勉強会を運営しています。名前のとおり、Perlを題材とし、プログラミング初学者を対象に、プログラミン グ学習の最初の一歩を手助けしています。Perl入学式は2012年に大阪で始まり、その後日本各地で開催され、現在もオンラインを主軸に開催を続けています。

本稿では、Perl入学式の10年間の運営で培ったノウハウをもとに、Perlを学ぶにあたって、プログラミング初学者がつまずきやすいポイントや、その理解の手助けとなる情報を解説します。執筆は、主に本節と「2022年にPerlを学ぶ意義」を尾形が、⁠環境構築」⁠よくある疑問への回答」を和田・三島が、⁠エラーが発生したときはどうすればよいか」⁠コミュニティに参加してみよう」を三島が、それぞれ担当しています。

2022年にPerlを学ぶ意義

20世紀末のCGIの時代から、PerlはWebアプリケーション開発を支えてきました。しかし、現在ではプログラミング言語の選択肢が増え、残念ながらPerlが選ばれづらいことも事実です。

そんな2022年現在において、プログラミング初学者、またはプログラミングがあまり得意ではない人がPerlを選ぶ利点はあるのでしょうか。

シェルスクリプトに似ている

今でこそインフラという用語がプログラミング活用を包含する時代になりましたが[1]⁠、サーバの保守運用に携わる人は簡単なシェルスクリプトを主力とする人も少なくありません。そういう方にとって、Perlの記法はシェルスクリプトに似ていて馴染みやすいです。

ワンライナーに適している

また、サーバの保守運用業務ではPerlのワンライナーが活躍します。

事前コンパイル不要なスクリプト言語で比較すると、Perlはインタプリタのサイズが小さいため起動が速いです[2]⁠。特に、外部モジュールを使わないワンライナー処理に関しては顕著です。

さらに、$_[3]の記述を省略可能な仕様が、ワンライナーの文字数削減に貢献することも見逃せません。このテクニックは、本格的なプログラムでは可読性を悪くするため避けられますが、ワンライナーでは短さに重きを置いてたびたび活用されます。

サーバ向けのOS環境に、ほぼ必ず入っている

そして、Web開発の現場でよく使われるLinuxやBSDなどのサーバ向けのOS環境に、ほぼ必ず入っていることもPerlの強みでしょう。Perlへの依存を弱めようとしているLinuxディストリビューションも一部存在しますが、サーバの保守運用に必須な各種パッケージがPerlに依存しており、サーバ内でのPerlの存在を確かなものとしています[4]⁠。

構文が簡素

あらゆるデータの基本であるテキストデータの処理を後押しする簡素な構文がそろっているPerlは、サーバの保守運用のみならず、日々のちょっとした作業を楽にする道具として最適です。

Perlより新しいプログラミング言語がもたらす概念には、本格的な開発プロジェクトでは支持される反面、初学者にとってとっつきづらい厳格なものもあります。ゆくゆくは厳格な言語での開発を視野に入れつつ、足掛かりとしてPerlを勉強する戦略はお勧めです。

環境構築

それでは、特につまずきやすい環境構築から学んでいきましょう。

Perl入学式では、受講生が各自のPCに環境構築を行うところから学習を始めます。Perl入学式で行っている方法をもとに、お勧めの環境構築方法を解説します。

Windowsでの環境構築

WindowsでのPerlの環境構築には、次の方法があります。

Perl入学式は、ターミナルを知らない、触れたことがない人を想定しています。このため、MSYS2を利用します。Active PerlやStrawberry Perlを利用するよりもインストールの手間はかかりますが、Perlと同時に標準的なシェルに触れられるMSYS2は理想的な学習環境です。また、ターミナル操作の学習過程をmacOS/Linux環境の受講生と共有できます。

WSL2による環境構築でも、MSYS2と同様に標準的なシェルとPerlに触れることが可能です。ただし、Perl入学式では古いPCを利用する人もいることから、動作の軽いMSYS2を採用しています。

MSYS2を使った環境構築手順は、テキストと動画でWebに公開しています。

macOSでの環境構築

macOSでは、macOSにインストールされているPerl、俗に言うシステムPerlを利用します[5]⁠。初歩的文法を学ぶ初学者にとっては、システムPerlで問題ありません。このため、特に環境構築は行いません。

ただし、Appleは将来的にmacOSからスクリプト言語を外す方針を表明しました。何らかの原因でシステムPerlが利用できない場合には、macOS用のパッケージマネージャーであるHomebrewを利用してPerlをインストールしてください。執筆時点のバージョンは3.4.4です。

Homebrewは、ターミナルから次のスクリプトを実行してインストールします。

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Homebrewのインストール後に、次のコマンドでPerlをインストールします。

$ brew install perl

Perlの発展的なインストール方法

本項では、Perlの発展的なインストール方法を紹介します。ただし、本項の方法は、ほかの言語に触れていたり、ターミナルの操作に慣れている人向けです。

plenvによる環境構築

─⁠─ バージョンの異なるPerlを使い分ける

サービスの本番環境と開発環境で、Perlのバージョンが異なる場合があります。Perlは後方互換性に優れた言語ですが、両環境は同じバージョンだと安心です。

このようなときは、Perlのバージョンを切り替えられるplenvが便利です。執筆時点のバージョンは2.3.2です。

Homebrewを用いてplenvをインストールするには、次のコマンドを実行します。

$ brew install plenv

インストール後は環境変数のエクスポートが必要です。公式ページを参考に行ってください。

以下は、plenvの利用例です。

インストール可能なPerlのバージョンのリストを表示する
$ plenv install --list

指定したバージョンのPerlをインストールする
$ plenv install 5.34.1

指定したバージョンのPerlをシステムで利用する
$ plenv global 5.34.1

Perlを含む、さまざまな言語のバージョンを切り替えて利用したい人は、anyenvが便利です。

Dockerによる環境構築

─⁠─ 既存環境に変更を加えずPerlを利用する

Dockerを利用することで、インストールを行わずにPerlを利用できます。Perlの公式Dockerイメージも公開されています。

macOSでDockerを利用するには、Docker HubからDocker Desktop for Macをダウンロードしてインストールします。実際に利用する場合はDockerfileを用意して環境を整えますが、ここでは割愛します。以下は、Docker Desktop for Mac 4.5.0での利用例です。

公式イメージをダウンロードする
$ docker pull perl:latest

Perlのバージョン情報を表示する
$ docker run --rm perl:latest perl -v

ワンライナーでHello, World!を表示する
$ docker run --rm perl:latest perl -E"say 'Hello, World!'"

<続きの(2)こちら。>

WEB+DB PRESS

本誌最新号をチェック!
WEB+DB PRESS Vol.130

2022年8月24日発売
B5判/168ページ
定価1,628円
(本体1,480円+税10%)
ISBN978-4-297-13000-8

  • 特集1
    イミュータブルデータモデルで始める
    実践データモデリング

    業務の複雑さをシンプルに表現!
  • 特集2
    いまはじめるFlutter
    iOS/Android両対応アプリを開発してみよう
  • 特集3
    作って学ぶWeb3
    ブロックチェーン、スマートコントラクト、NFT

おすすめ記事

記事・ニュース一覧