第9章 新しい機能を追加する(その3)

前回はORMの拡張について紹介しました。 web アプリの開発に必要な機能の全てを紹介してゆくととても膨大な 量になっていきますので今回はよくありがちな機能について紹介してゆきたいと思います。

9.3 よくありがちな機能について考察

今回、web アプリ開発に挑戦するにあたり Mojolicious というフレームワークを 活用しました。 考えようによってはこの Mojolicious 自体も web アプリだということもいえます。

9.3.1 Mojolicious を参考にする

Mojolicious がどれだけのモジュールで構成されているのか下記のリンクをみてみてください。

https://metacpan.org/release/Mojolicious

新しく機能を追加したいときはフレームワークがその機能をすでに提供していることが ありますから、上手に活用するようにするとよいです。

9.3.2 よくありがちな機能を紹介

  • util - 補助コマンド
  • log - ロギングの追加
  • command - コマンドラインから実行するスクリプト
    • Mojolicious: https://metacpan.org/pod/Mojolicious::Commands
    • アプリケーションを通じてコマンドラインから実行したい場合 Mojo にはマイグレーションの仕組みはないので、そういったものを拡張するなど
  • server command - 本番用のアプリ起動コマンド
    • Mojolicious: https://metacpan.org/pod/Mojo::Server::Hypnotoad
    • 本番サーバーでの起動は Mojo だけでなく他のアプリにも依存することがある Mojo もふくめたコマンドを自作するとよい おそらくシェルスクリプトで実装が無難
  • server command - 開発用のアプリ起動コマンド
  • plugin - アプリ内で共通で使えるロジック追加の仕組み
    • Mojolicious: https://metacpan.org/pod/Mojolicious::Plugin
    • アプリの構造体を綺麗な継承関係で表現するのは難しいので どこからでも呼び出し可能なアプリケーションロジックを追加できる のりしろを考慮しておくと柔軟に対応ができる

9.3.3 ファビコンの設定について

最後にREADME.mdの課題メモにもあったファビコンの設定について考えてみます

昨今はwebブラウザを起動する手段としてpc以外にもスマホやタブレット端末などもあり それに応じてファビコンも変更すると言う手法がとられることがあります。 参考までに下記のサイトを紹介しておきます。

Favicon Generator - https://realfavicongenerator.net/

こちらのサイトを活用するとファビコン用の画像や埋め込むためのタグを一気につくることができます。上記のサイトからおためしで表示用の画像とそれに該当するタグの書き方を取得して下記のように mojo のフレームワークに反映してみましょう。

(静的なファイルは public 配下におくと自動的に認知してくれる)

% mkdir public

templates/layouts/default.html.ep

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8">
    <title><%= title %></title>
    <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
    <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
    <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
    <link rel="manifest" href="/site.webmanifest">
    <link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5">
    <meta name="msapplication-TileColor" content="#da532c">
    <meta name="theme-color" content="#ffffff">  </head>
  <body><%= content %></body>
</html>

9.3.4 まとめ

9.3.5 最後に

web アプリ開発挑戦の第1回目にも書いていましたが、最近では新規でwebアプリを開発する現場では Perl 言語を選択する場面はすくなくなりました。

インターネット黎明期といまでは取り巻く環境がずいぶん変わりました、環境がかわれば選択されるプログラミング言語やフレームワークも変わるのは仕方のないことですから、無理にPerl言語を選択肢にしなくても良いと思います。

個人的には今回紹介している Mojo のフレームワークは web アプリケーションフレームワークとしては実によく仕上がっていると思います。何か一つの言語でwebアプリ開発の素養のあるかたであれば、他言語のフレームワークを使うのはそんなにハードルは高くはないとおもいますので、今お使いのフレームワークに飽きがきている人など、おためしで Mojo を試してみるのもいいかもしれません。

Perl 言語の特色としてはスクリプト系の言語としては歴史が古く、後方互換性が大事にされていますので、web アプリのなかでもサーバーサイドの webapi のロジックのみに特化して活用するという選択肢であれば非常に良い選択だとおもいます。

web の画面の方であればデザイン的な部分は頻繁に変更がおこなわれるでしょうからJavaScript をベースにした Nuxt.js などを活用するのが良いかと思います。

web アプリ開発は多岐にわたることがおおいので全ての機能を一つの言語とフレームワークでまかなうより、求められる機能ごとに言語やフレームワークを使い分ける方が賢いやり方なのかもしれません。