Perlとは?特徴と他プログラミング言語との違いをわかりやすく解説
35年以上の歴史を持つPerlは、高度なテキスト処理やシステム管理で利用できる、さまざまな機能の豊富なライブラリを備えたスクリプト言語ですが、RubyやPythonなどの人気言語に比べて見過ごされがちです。
本記事では、Perlの特長や他のプログラミング言語との違いをわかりやすく説明するとともに、Perlを利用するメリットや学習方法なども詳しくご紹介します。
-
Contents
Perlとは?
Perlは元々システム管理などに使える汎用スクリプト言語として、NASAのシステム管理者だったラリー・ウォール氏により1987年に開発されました。
スクリプト言語とは、実行時に一つ一つのコマンドを解釈しながら実行していくもので、コンパイラ型のプログラミング言語が実行前にプログラム全体を機械語に翻訳するのとは対照的です。
C言語やsh・AWK・sedなどテキスト処理機能を有するプログラミング言語を参考にしており、強力な正規表現が使えることから1990年代にはWebサイトのサーバー側で動作するCGIスクリプトを作成する言語として人気を博しました。
Perlの特長は、柔軟かつ表現力の高い強力な文法を備えており、アルゴリズムを短く記述できる点です。
Perlは実用性をモットーとしており、美しさより実用性を重視する姿勢は、ダクトテープなどにも例えられます。テキスト操作だけでなく、システム管理やWebサイトの制作、ネットワークプログラミング、ファイナンス、バイオインフォマティクスなどの幅広い用途で使用されています。
実用性が多くの利用者に支持され、DOSやWindows、macOS、Linuxを含む100を超える幅広いOS環境で利用できます。
Perlには姉妹言語となるRaku(元々はPerl 6として開発され、別言語となったもの)があり、本記事では左記を除くPerl(現行バージョンはPerl 5系)に限定してご紹介していきます。
-
他のプログラミング言語との違い
Perlは高水準のスクリプト言語(インタープリタ型言語)として、長い歴史を持っており、のちにプログラミング言語に影響を与えています。Perlと同じくスクリプト言語として人気のあるRuby・Pythonとの違いを見ていきましょう。
-
Rubyとの違い
RubyもPerlと同じく動的な言語ですが、いくつかの点で違いがあります。
Perlはアメリカで1987年に開発され、C言語に似た文法を持ちます。
Rubyは日本で1994年に公開され、簡潔な文法を持っており、Perl・C言語・Smalltalk・Adaなどに影響を受けています。
プログラミング言語としてRubyがPerlと違うのは、オブジェクト指向を言語の中心に取り入れた点です。Perlにもオブジェクト指向の機能はのちに追加されましたが、Rubyでは、数値や文字列などの基本的な要素もすべてオブジェクトとなっており、オブジェクト指向プログラミングの恩恵により、読みやすく書きやすいコードが特徴です。
さまざまな用途に利用できるRubyですが、Webサービスなどのバックエンドとしてサーバー側で動作するシステムの開発に利用されることが多くなっています。
Rubyを詳しく知りたい方は、次の記事も参考にしてください。
関連記事:プログラミング言語【Ruby】とは?Rubyの特徴や使用の注意点を解説
-
Pythonとの違い
PythonとPerlはいずれも高水準のインタープリタ型言語ですが、いくつかの点で違いが見られます。
Pythonはより強固で大規模開発にも耐える構造を持ち、見た目が整ったコードになります。Pythonコードはインデント(字下げ)により、コードの塊(ブロック)が視覚的にわかりやすい特徴があります。同じロジックを書くと誰が書いても似たような見た目のコードができあがるため、複数人での開発やオープンソースなどコードを共有するのに向いています。
Perlは、C言語に似た表現力の高い文法が特徴で、Pythonよりも自由にコードを記述でき、同様の操作をさまざまな書き方で記述できる多様性があります。短い文字数で複雑な処理を記述できるため、熟練者が書いたPerlコードは記号や暗号のように見えることがあります。他人の書いたコードや自分のコードであっても数年後に見返すと、内容を理解するのに手間取ることがあります。
Pythonは近年データサイエンスや機械学習などの分野で人気のある言語ですが、Perl同様Web開発などにも利用できます。
-
Perlでできること、開発例
PerlはWebシステムの開発や、サーバーの管理、テキスト処理に向いています。
- テキスト操作に向いているため、ログを解析したり、Webサイトの巡回、データ抽出などに利用できます。
- システム管理では、反復作業の自動化、システムの使用状況の監視に使用されます。
- Web開発では、PerlはCGIプログラミングやWebフレームワークが整備されているため、各種のサーバー側処理やWebサービスの構築に利用できます。例えば、アンケートフォームのように、サイトの利用者がテキストやチェックボックスなどを使って入力した内容を、サーバー側で処理して集計したり、メールで送信したりするシンプルなCGIを構築したり、Webフレームワークを使ってWebアプリケーション全体を開発できます。
- Perlはスクレイピングにも使用できます。スクレイピングとは、Webサイトから情報を収集して利用目的に合うよう加工するプロセスです。テキスト処理が得意なため、Webサイトの文面から必要な部分を抽出するのに向いています。
- ネットワークプログラミングには、Perlを使ってソケットプログラミングやネットワーク監視などをおこなえます。
- 画像処理にも使用でき、画像形式の変換や操作を自動化できます。
インターネット小売り大手のアマゾンは、創業当時からPerlを使用しており、規模が拡大するにつれてPerlの占める割合は下がったものの、現在でも使用されています。
Perlで構築されたWebアプリケーションの例は、CMS(コンテンツ管理システム)のMovable Typeです。2001年のリリース以来、多くの企業サイトや個人のブログ作成に利用されています。 Movable Typeにはオープンソース版と商用版があり、日本の商用CMSシェアの88%を占めており、東証一部上場企業の35%、国立大学の81%で採用されています。
Perlを使用したWebサービスで有名な例は、宿泊予約サービスを提供するBooking.comです。また、イギリスの公共放送BBCのWebサイトでもPerlが利用されています。
Webブラウザから利用できるオープンソースのバグ管理システム「Bugzilla」は多くのソフトウェア開発プロジェクトで使用されており、Perlで作成されています。バグ管理システムを使えば、開発中のソフトウェアのバグを報告したり、修正に関するディスカッションするなど、チームでのソフトウェア開発・デバッグをWebサイトを通じておこなえます。
Perlは100を超えるプラットフォームで動作するので、追加のソフトウェア無しでLinuxサーバーなどの管理を自動化できます。、そのため、異なるOSのサーバーを扱う場合でも、利用しやすくなっています。テキスト処理が得意なPerlは、サーバーの運用時に発生するログファイルを加工したり、集計するのに便利です。他にも、システム管理で必要となるバックアップの自動化やネットワークの監視などもできます。
-
Perlのメリット
Perlにはスクリプト言語として手軽に利用できるさまざまなメリットがあります。3点ご紹介します。
-
コンパイル不要で実行できる
Perlは、コンパイル不要で、書いたスクリプトをすぐに実行できます。
C言語やJavaなどコンパイラ型の言語は、プログラムを書いたあと、実行する前に「コンパイル」の過程が必要です。例えば、プログラムを書いて、一度コンパイルしてから試しに実行し、その後プログラムを修正して、またコンパイルして再実行する手順となり、試行錯誤をするのには不向きです。念入りに設計し、試行錯誤せずにプログラミングする場合にこそ、実行時の性能が高いコンパイラ型言語のメリットを活かせます。
対してPerlは、日常的な細かい作業を、あまり肩肘張らずにスクリプト化して、バグを発見しても、すぐ修正して対処していくような場合に適しています。コンパイルが不要なため、スクリプトの修正→実行のサイクルを短縮できるからです。
-
テキスト処理が速い
Perlは、もともとテキスト処理を意識して設計されており、テキスト処理を円滑にする仕組みが言語に組み込まれているので、テキストの検索や置換、切り分けなどに向いています。
後発のスクリプト言語RubyやPythonなどと比べてもテキスト処理は高速と言われており、よほど大量の処理が必要でない限りはC言語などのコンパイラ型言語を必要としないほどです。
-
後方互換性が高い
後方互換性とは、昔のバージョン向けに書かれたPerlスクリプトが、新しいバージョンでも使えることです。
Perlの開発者は、後方互換性に注意を払っており、可能な限りバージョンが変わっても互換性が保たれるように対応してきました。
Perl 7は現行のPerl 5のスクリプト(一般的に書かれたもの)と互換性があると、Perlの開発を監督するPSC(Perl Steering Council)から2022年5月に発表がありました。将来的にも後方互換性には配慮されると考えられます。
後方互換性は、スクリプト開発者、特に規模の小さな個人開発者が、将来的にスクリプトを修正する必要性を減らし、長期間使い慣れたスクリプトを使い続けられる安心感を提供します。
-
Perlのデメリット
Perlは長い歴史のなかで多くのライブラリ(プログラミングで再利用できるパーツ)が利用できる反面、後発の新しい言語のほうが優れている点があります。
Perlのデメリットをポイント別に見ていきましょう。
-
実行速度が遅い
Perlなどスクリプト言語の多くはインタープリタ型言語です。インタープリタ型言語はコンパイルが不要なため開発サイクルが短縮できるメリットはありますが、コンパイラ型言語と比べると速度やメモリ使用量など実行時の効率で劣る場合があります。
特に、多数のユーザーが同時接続してくるようなWebサービスを展開する場合などは、性能を上げやすいコンパイラ型言語のほうが適しています。
Perlは速度が要求されない中小規模のサイト・CGI作成、あまり多量のデータを扱わない用途で使用するのに向いており、短時間でスクリプトを作成できます。
-
利用が低下している
CGIが登場した当初こそ、広く利用されていたPerlですが、現在のスクリプト言語が多用されるWeb開発の現場では、Perlを使用する例は少なくなっており、RubyやPythonなど後発の言語の採用が多くなっています。
1995年にリリースされたRubyはオブジェクト指向の言語で、記述しやすくメンテナンスしやすいコードが特徴です。Web開発ではRuby on Rails(RoR)と呼ばれるフレームワーク(プログラミングの下敷きとなるパーツ)が特に有名で、迅速にWebアプリケーションを開発できるため人気となり、多くの開発プロジェクトで現在も使用されています。
1991年にリリースされたPythonは学習しやすく明快で読みやすいコードが特長です。堅牢で拡張性に富んでいるため大規模のWeb開発に対応でき、DjangoやFlaskなどの広く利用されるフレームワークがあり、参考文書も整備されています。近年、データサイエンスや機械学習の分野での採用も多い言語です。
Perlはテキスト処理に適しており、CGI開発に使用されます。PerlにもWeb開発用のフレームワークはありますが、RubyやPythonほどには広く利用されていません。
-
Perlで使えるフレームワーク
フレームワークとは、特定分野のアプリケーションのひな形となるソフトウェアやツールのセットです。
Webアプリケーション開発の場合を例に取ると、多くのWebアプリケーションが備える基本的な機能として、ユーザーログイン機能や、データベース接続、処理結果をWebブラウザに表示する仕組みなどがフレームワークに組み込まれております。プログラマーはフレームワークに少しコードを足すだけで迅速にWebアプリケーションを開発できます。
Perlで利用できるフレームワークは多数ありますが、以下WebサイトやWebアプリケーション開発に使用できるフレームワークをご紹介します。
- 「Catalyst」はイギリスの公共放送BBCのサイトなどでも使用されているWebフレームワークで、データベースへのアクセスや表示テンプレート機能にさまざまな選択肢があり、開発用のサーバー機能、セッション管理やユーザー認証などの仕組みがあらかじめ組み込まれています。Catalystはアプリケーション作成にMVCパターンを採用しており、モデル(M)ビュー(V)コントローラー(C)の3つの部分からアプリケーションを構成します。
- 「Mojolicious」はCatalystの開発チームがCatalystの開発経験を活かして書き起こした、オープンソースで現在人気のあるフレームワークです。Catalystの機能に加え、さらに幅広い機能と通信規約に対応しており、実行時の性能が向上しています。「Mojolicious::Lite」モジュールを使えば、わずか数行のスクリプトでWebアプリケーションを作成できるなど、小規模開発から大規模サイトまで対応できます。
- 「Amon2」は軽量なフレームワークでWebサーバーインタフェースの「Plack」上に構築されています。Amon2はアプリケーションを構築するためのシンプルで直感的な構造を持ち、学習しやすく機能を絞り込んだフレームワークです。高速に動作し拡張性やプラグイン機構を備えています。
- 「Dancer2」はマイクロフレームワークであり、Ruby言語で定評のある「Sinatra」と呼ばれるWebフレームワークを参考にPerl言語で作成されています。マイクロフレームワークはフル機能のフレームワークと比べ提供機能が少ない分、自由度が高く、プログラマーはプロジェクトの目的に合わせて必要なプラグインを組み合わせて利用できます。
- 「Kossy」はRuby言語のSinatraに似たシンプルで明快なフレームワークで、Plackやルーティング、フォームの検証機能を備えておりWebアプリケーションを迅速に構築するための直感的なインタフェースを提供しています。学習しやすく、柔軟に拡張できるよう設計されています。
- 「Kelp」はWebサーバーとPerlを連携させるPlackを使って構築されたフレームワークで、軽量で機能毎に分かれた設計のマイクロフレームワークです。シンプルさと使いやすさに重点が置かれ、柔軟な設定が可能で、利用目的に合わせてフレームワークの設定を変更できます。プログラマーが必要に応じて新しい機能を追加できるプラグインの仕組みを備えています。
- 「Poet」はシンプルさと使いやすさを重視し、簡単に習得できるよう設計されたコンパクトなフレームワークです。Perlで人気のある「Moose」オブジェクトシステムを使用しており拡張性や開発に便利なインタフェースを持っています。
- 「Gantry」は柔軟で拡張性の高い設計のフレームワークで、mod_perlとCGI環境を主なターゲットとしてWebアプリケーションを迅速に構築するライブラリやツールを備えています。高速な動作と拡張性に重点を置いた包括的なフレームワークとして利用できます。
- 「Tripletail」はシンプルな日本語向けのWebアプリケーションフレームワークで、携帯電話への対応やテンプレート機能、フォームの検証やメール送信などの機能を備えています。
-
Perlを使った仕事
Perlはテキスト処理やWebアプリケーションの開発に利用されます。また、サーバーの運用管理を効率化する目的でも利用されています。
Perlを使う業務には以下があります。
- システム開発。Perlで開発された既存システムのメンテナンスや、Webアプリケーションを開発します。
- マーケット分析。市場のデータをPerlで分析するソフトウェアを開発・メンテナンスします。
- システム管理。サーバーやネットワークの構築をする際、Perlスクリプトで設定や管理作業を自動化します。
- データ分析。ビッグデータなどを分析し、データに見られるパターンや傾向を見いだします。分析にはPerlを使用する場合があります。
- ゲノム解析。Perlはバイオインフォマティクス分野のライブラリが充実しており、生物学的データの分析、ゲノムデータの処理をおこなえます。
- 品質保証。品質保証エンジニアは、ソフトウェア開発チームで開発中のソフトをテストし、一定の品質基準に適合しているか確認します。Perlを使ってテスト作業を自動化する場合があります。
長い歴史を持つPerlはさまざまな用途で使用できる膨大なライブラリや参考文献が豊富にあります。数多くのOS環境で動作するため、一度習得すれば、多くの環境でシステム管理やテキスト処理、Webサービスの開発をおこなえます。
また、Perlを採用している既存のシステムは多くあるため、今後Perl自体の新規利用が減少しても、Rubyなど他のプログラミング言語へシステムを置き換える改修作業が必要となる場合があります。システムの改修にはPerlと置き換え先のプログラミング言語を両方理解できる技術者が必要となります。そのため、Perlを理解しておくと既存システムのメンテナンスだけでなく、改修作業にも対応できます。
-
Perlの学習方法
Perlを学習し、Webアプリケーションを開発したりシステム管理に役立てるにはどのように学べばよいのか、3通りの学習方法をご紹介します。
-
プログラミングスクールに通う
プログラミング言語の学習は、壁に突き当たると解消するのが難しい傾向があります。
プログラミングスクールは他の学習方法より高額ですが、対人で指導を受けたり、不明点を質問したりできるため、問題に突きあたっても解決でき、モチベーションが持続する可能性が高い学習方法です。
学習に不安がある方は、スクールの利用を検討してみるとよいでしょう。
-
書籍で学ぶ
独学するなら、書籍の活用もおすすめです。
書籍は、1冊やり通すことで、まんべんなく一通りの知識を習得できるため、何から手をつければよいか分からない場合も安心して学習できます。
おすすめの書籍を挙げておきます。
- かんたんPerl (プログラミングの教科書)は、プログラミング自体が初めての方向けに、Perlのさまざまな機能を初歩から学べる書籍です。
- 初めてのPerl第7版は、ロングセラー書籍の第7版で、基礎から詳しく解説されています。Perlを詳しく学びたい方におすすめです。
- 独習Perl第2版は解説・例題・練習問題の構成でPerlの基礎文法からさまざまな機能まで学習できます。
-
Webを活用する
Perlは、Webサイトで学習できます。
Webサイトで学ぶメリットは、コード例をご自身のパソコンで実行してみるのが簡単な(直接コピーアンドペーストできる)点です。
- Perlゼミ|Perlの基礎をインストールからサンプルで丁寧に解説
- Perl基礎入門| KentWeb
- Perl入門~Perlのインストール方法やプログラミングの方法について解説します~| Let’sプログラミング
学習するには、ご自身のパソコンにPerlの環境をインストールし、実際にPerlスクリプトを書いて実行してみるのが有効です。
- Linux、macOSの場合は標準でインストールされています。端末を開いてperl -vを実行すると導入済みのperlバージョンが表示できます。
- Windowsの場合は、Strawberry Perl for Windowsからダウンロードして、インストールします。「Recommended version」の欄からお使いのパソコンのCPUに合わせて、64bitまたは32bit版インストーラーをダウンロードしてください。
また、簡単なスクリプトの場合は、次のようなオンラインでPerlスクリプトを実行できるサービスで試すこともできます(すべてのスクリプトが実行できる訳ではありません)
-
まとめ
スクリプト言語Perlを詳しく見てきました。
- Perlは30年以上の歴史あるスクリプト言語で、Webアプリケーションの分野では後発のRubyやPythonのシェアが高い結果となっています。
- Perlは後方互換性が高く、テキスト処理が得意で、スクリプトを書いてすぐに実行できるため手軽に利用できますが、大規模な処理では速度が劣る面もあります。
- PerlでWebアプリケーションを開発するフレームワークにはMojoliciousやDancer2などがあります。
PerlはLinuxやmacOSの場合、インストール済みですぐ利用できます。日常的な作業の自動化やテキストの加工など雑多な仕事も、スクリプト言語なので簡便な手順で利用できます。システム管理やWebアプリケーションの開発にも利用できます。
新規案件は少ないですが、内部的にPerlを利用している既存システムは多数あり、他のスクリプト言語よりは重要度は低いものの、習得しておいて損はない言語です。興味のある方は、Perlでスクリプト作成にチャレンジしてみてはいかがでしょうか。