=encoding utf8 =head1 NAME =begin original Mojolicious - Real-time web framework =end original Mojolicious - リアルタイムWebフレームワーク =head1 SYNOPSIS (使い方) =begin original # Application package MyApp; use Mojo::Base 'Mojolicious'; =end original # アプリケーション package MyApp; use Mojo::Base 'Mojolicious'; =begin original # Route sub startup { my $self = shift; $self->routes->get('/hello')->to('foo#hello'); } =end original # ルート(Route) sub startup { my $self = shift; $self->routes->get('/hello')->to('foo#hello'); } =begin original # Controller package MyApp::Controller::Foo; use Mojo::Base 'Mojolicious::Controller'; =end original # コントローラー package MyApp::Controller::Foo; use Mojo::Base 'Mojolicious::Controller'; =begin original # Action sub hello { my $self = shift; $self->render(text => 'Hello World!'); } =end original # アクション sub hello { my $self = shift; $self->render(text => 'Hello World!'); } =head1 DESCRIPTION (説明) =begin original An amazing real-time web framework built on top of the powerful L web development toolkit. With support for RESTful routes, plugins, commands, Perl-ish templates, content negotiation, session management, form validation, testing framework, static file server, C/C detection, first class Unicode support and much more for you to discover. =end original 強力な L Web上に構築された素晴らしいリアルタイムWebフレームワーク 開発ツールキット。 RESTfulなルート、プラグイン、コマンドをサポート Perl風のテンプレート、コンテンツネゴシエーション、セッション管理、フォーム検証、 テストフレームワーク、静的ファイルサーバ、C/C検出、ファーストクラス のUnicodeサポート。より多くは、新名が発見してください。 =begin original Take a look at our excellent documentation in L! =end original 素晴らしいドキュメントであるLを見てください。 =head1 HOOKS (フック) =begin original L will emit the following hooks in the listed order. =end original Lは並べられた順で次のフックを発行します。 =head2 before_server_start =begin original Emitted right before the application server is started, for web servers that support it, which includes all the built-in ones (except for L). =end original アプリケーションサーバーが起動する直前に発行されます。 Lを除くすべてのビルトインサーバーを含むサポートがあります。 $app->hook(before_server_start => sub { my ($server, $app) = @_; ... }); =begin original Useful for reconfiguring application servers dynamically or collecting server diagnostics information. (Passed the server and application objects) =end original アプリケーションサーバーを動的に再構成したり、サーバー診断情報を収集したりするのに便利です。 (サーバーとアプリケーションオブジェクトを渡します) =head2 after_build_tx =begin original Emitted right after the transaction is built and before the HTTP request gets parsed. =end original トランザクションが構築された直後、かつ HTTP リクエストが解析される前に 発生します。 $app->hook(after_build_tx => sub { my ($tx, $app) = @_; ... }); =begin original This is a very powerful hook and should not be used lightly, it makes some rather advanced features such as upload progress bars possible. Note that this hook will not work for embedded applications, because only the host application gets to build transactions. (Passed the transaction and application objects) =end original これはとても強力なフックで簡単には利用されるべきではないでしょう。より進んだ機能としてアップロードの 進捗バーなどに利用できますが、埋め込まれたアプリケーションでは、 ホストアプリケーションだけが、トランザクションをビルドできるので、 機能しないということに 注意してください。 (トランザクションとアプリケーションのインスタンスが渡されます。) =head2 around_dispatch =begin original Emitted right after a new request has been received and wraps around the whole dispatch process, so you have to manually forward to the next hook if you want to continue the chain. Default exception handling with Lexception"> is the first hook in the chain and a call to L the last, yours will be in between. =end original 新しいリクエストを受信した直後に発行され、ディスパッチプロセス全体をラップします。 ですので、チェーンを継続するためには、次のフックに手動で転送する必要があります。 。Lexception">は、チェーンにおける最初のフックで、 "reply->exception"の呼び出しが最後です。あなたのディスパッチは、この間に入ります。 $app->hook(around_dispatch => sub { my ($next, $c) = @_; ... $next->(); ... }); =begin original This is a very powerful hook and should not be used lightly, it allows you to, for example, customize application-wide exception handling, consider it the sledgehammer in your toolbox. (Passed a callback leading to the next hook and the default controller object) =end original これは非常に強力なフックであり、安易に使用してはいけません。 たとえば、アプリケーション全体の例外処理をカスタマイズします。 あなたのツールボックスの中のハンマーと考えてください。 (次のフックにつながるコールバックと デフォルトのコントローラオブジェクトを渡します) =head2 before_dispatch =begin original Emitted right before the static file server and router start their work. =end original 静的ファイルサーバーとルーターが仕事を開始する直前に発生します。 $app->hook(before_dispatch => sub { my $c = shift; ... }); =begin original Very useful for rewriting incoming requests and other preprocessing tasks. (Passed the default controller object) =end original 入ってくるリクエストや、その他の前処理タスクを書き換えるのにとても有用です。 (デフォルトのコントローラオブジェクトが渡されます) =head2 after_static =begin original Emitted after a static file response has been generated by the static file server. =end original 静的ファイルサーバーが生成した静的ファイルの応答の後に発生します。 $app->hook(after_static => sub { my $c = shift; ... }); =begin original Mostly used for post-processing static file responses. (Passed the default controller object) =end original ほとんどの場合は静的ファイルのレスポンスの後処理のために利用されます。 (デフォルトのコントローラーオブジェクトを渡されます。) =head2 before_routes =begin original Emitted after the static file server determined if a static file should be served and before the router starts its work. =end original 静的ファイルサーバーが静的ファイルをサーブすべきかどうか決定した後、 ルーターが仕事を開始する前に発生します。 $app->hook(before_routes => sub { my $c = shift; ... }); =begin original Mostly used for custom dispatchers and collecting metrics. (Passed the default controller object) =end original ほとんどの場合はカスタムディスパッチャーのためか、 メトリクスを収集するために利用されます。 (デフォルトのコントローラーオブジェクトが渡されます。) =head2 around_action =begin original Emitted right before an action gets executed and wraps around it, so you have to manually forward to the next hook if you want to continue the chain. Default action dispatching is the last hook in the chain, yours will run before it. =end original アクションが実行されたすぐ後にフックが発行され、それをラップします。 チェーンを続けたい場合は、次のフックヘ手動で進めなければなりません。 デフォルトのアクションのディスパッチはチェーンの最後のフックです。 あなたのものは、その前に実行されます。 $app->hook(around_action => sub { my ($next, $c, $action, $last) = @_; ... return $next->(); }); =begin original This is a very powerful hook and should not be used lightly, it allows you for example to pass additional arguments to actions or handle return values differently. Note that this hook can trigger more than once for the same request if there are nested routes. (Passed a callback leading to the next hook, the current controller object, the action callback and a flag indicating if this action is an endpoint) =end original これはとても強力なフックで、軽い気持ちで利用されるべきではありません。 たとえば、追加の引数をアクションに渡したり、 戻り値を違った方法で処理したりすることができます。 (次のフックに導くコールバック、現在のコントローラーオブジェクト、 アクションコールバック、このアクションがエンドポイントである場合の フラグが渡されます。) =head2 before_render =begin original Emitted before content is generated by the renderer. Note that this hook can trigger out of order due to its dynamic nature, and with embedded applications will only work for the application that is rendering. =end original レンダラーによって生成されたコンテンツの前に、フックが発行されます。 このフックは動的な性質のために、順序がばらばらで呼びだれることに 注意してください。 埋め込みのアプリケーションでは、描画しているアプリケーションでだけ 動くでしょう。 $app->hook(before_render => sub { my ($c, $args) = @_; ... }); =begin original Mostly used for pre-processing arguments passed to the renderer. (Passed the current controller object and the render arguments) =end original ほとんどの場合、レンダラーに渡される引数を 事前に処理するために利用されます。 (現在のコントローラーオブジェクトと描画の引数が渡されます。) =head2 after_render =begin original Emitted after content has been generated by the renderer that will be assigned to the response. Note that this hook can trigger out of order due to its dynamic nature, and with embedded applications will only work for the application that is rendering. =end original 部分的ではないコンテンツがレンダラーによって生成された後に発生します。 このフックは動的な性質のために、適切でなく実行される可能性があり、 埋め込みのアプリケーションの場合はレンダリングしているアプリケーションのため だけに働くことに注意してください。 $app->hook(after_render => sub { my ($c, $output, $format) = @_; ... }); =begin original Mostly used for post-processing dynamically generated content. (Passed the current controller object, a reference to the content and the format) =end original ほとんどの場合は、動的に生成されたコンテンツの後処理に利用されます。 (現在のコントローラーオブジェクト、コンテンツへのリファレンス、フォーマットが渡されます。) =head2 after_dispatch =begin original Emitted in reverse order after a response has been generated. Note that this hook can trigger out of order due to its dynamic nature, and with embedded applications will only work for the application that is generating the response. =end original 描画されたコンテンツの後に、逆順で発生します。 このフックは動的な性質のために、適切でなく実行される可能性があり、 埋め込みのアプリケーションの場合はレンダリングしているアプリケーションのため だけに働くことに注意してください。 $app->hook(after_dispatch => sub { my $c = shift; ... }); =begin original Useful for rewriting outgoing responses and other post-processing tasks. (Passed the current controller object) =end original 外にでていくレスポンスを再編集し、タスクを後処理するのに便利です。 (コントローラーオブジェクトが渡されます。) =head1 ATTRIBUTES (属性) =begin original L implements the following attributes. =end original L は以下の属性を実装しています。 =head2 commands my $commands = $app->commands; $app = $app->commands(Mojolicious::Commands->new); =begin original Command line interface for your application, defaults to a L object. =end original アプリケーションのためのコマンドラインインターフェース。 デフォルトはLオブジェクト。 =begin original # Add another namespace to load commands from push @{$app->commands->namespaces}, 'MyApp::Command'; =end original # コマンドをロードするための他の名前空間 push @{$app->commands->namespaces}, 'MyApp::Command'; =head2 controller_class my $class = $app->controller_class; $app = $app->controller_class('Mojolicious::Controller'); =begin original Class to be used for the default controller, defaults to L. Note that this class needs to have already been loaded before the first request arrives. =end original デフォルトのコントローラーとして利用されるクラスで、 デフォルトは L です。 =head2 home my $home = $app->home; $app = $app->home(Mojo::Home->new); =begin original The home directory of your application, defaults to a L object which stringifies to the actual path. =end original アプリケーションのホームディレクトリで、デフォルトではLオブジェクトです。 このオブジェクトは実際のパスに文字列化することができます。 =begin original # Portably generate path relative to home directory my $path = $app->home->child('data', 'important.txt'); =end original # ホームディレクトリを基準にしたポータブルなパスを生成 my $path = $app->home->child('data', 'important.txt'); =head2 log my $log = $app->log; $app = $app->log(Mojo::Log->new); =begin original The logging layer of your application, defaults to a L object. The level will default to either the C environment variable, C if the L is C, or C otherwise. All messages will be written to C, or a C file if a C directory exists. =end original アプリケーションのロギング層です。デフォルトではLオブジェクトです。 レベルはデフォルトでC環境変数か、LがCならC、そうでない場合は、Cになります。 すべてのメッセージは、Cか、Cが存在していた場合は、Cに出力されます。 =begin original # Log debug message $app->log->debug('It works'); =end original # debugメッセージをログに出力 $app->log->debug('It works'); =head2 max_request_size my $max = $app->max_request_size; $app = $app->max_request_size(16777216); =begin original Maximum request size in bytes, defaults to the value of L. Setting the value to C<0> will allow requests of indefinite size. Note that increasing this value can also drastically increase memory usage, should you for example attempt to parse an excessively large request body with the methods L or L. =end original リクエストの最大バイトサイズ。デフォルトはLの値です。値をC<0>に設定すると、 リクエストに無限のサイズを許可します。この値を大きくすると劇的に、メモリ使用が増えることに注意してください。 たとえば、とても大きなリクエストボディをLか Lで解析を試みようとする場合などです。 =head2 mode my $mode = $app->mode; $app = $app->mode('production'); =begin original The operating mode for your application, defaults to a value from the C and C environment variables or C. =end original アプリケーションのオペレーションモード、 デフォルトは、CとCからの値、 あるいはCです。 =head2 moniker my $moniker = $app->moniker; $app = $app->moniker('foo_bar'); =begin original Moniker of this application, often used as default filename for configuration files and the like, defaults to decamelizing the application class with L. =end original このアプリケーションのモニカー。設定ファイルのためのデフォルトの ファイル名としてしばしば利用されます。 Lでアプリケーションクラスを デキャメライズしたものがデフォルトの値です。 =head2 plugins my $plugins = $app->plugins; $app = $app->plugins(Mojolicious::Plugins->new); =begin original The plugin manager, defaults to a L object. See the L method below if you want to load a plugin. =end original プラグインマネージャー。デフォルトは L オブジェクトです。 通常はこれを気にしなくても構いません。 プラグインをロードしたいのであればLメソッドを利用してください。 =begin original # Add another namespace to load plugins from push @{$app->plugins->namespaces}, 'MyApp::Plugin'; =end original # プラグインをロードするための他の名前空間を追加 push @{$app->plugins->namespaces}, 'MyApp::Plugin'; =head2 renderer my $renderer = $app->renderer; $app = $app->renderer(Mojolicious::Renderer->new); =begin original Used to render content, defaults to a L object. For more information about how to generate content see L. =end original アプリケーションで内容を表示するのに使用され、デフォルトは Lオブジェクトです。 コンテンツの生成に関するより多くの情報を得るには、 L を見てください。 =begin original # Enable compression $app->renderer->compress(1); =end original # 圧縮を有効にする $app->renderer->compress(1); =begin original # Add another "templates" directory push @{$app->renderer->paths}, '/home/sri/templates'; =end original # 他の"templates"ディレクトリを追加 push @{$app->renderer->paths}, '/home/sri/templates'; =begin original # Add another "templates" directory with higher precedence unshift @{$app->renderer->paths}, '/home/sri/themes/blue/templates'; =end original # 優先順位の高い他の"templates"ディレクトリを追加 unshift @{$app->renderer->paths}, '/home/sri/themes/blue/templates'; =begin original # Add another class with templates in DATA section push @{$app->renderer->classes}, 'Mojolicious::Plugin::Fun'; =end original # DATAセクションのテンプレートのための他のクラスを追加 push @{$app->renderer->classes}, 'Mojolicious::Plugin::Fun'; =head2 routes my $routes = $app->routes; $app = $app->routes(Mojolicious::Routes->new); =begin original The router, defaults to a L object. You use this in your startup method to define the url endpoints for your application. =end original ルートディスパッチャ。デフォルトは L オブジェクトです。 startup メソッドの中で、アプリケーションに URL のエンドポイントを 定義するために使用します。 =begin original # Add routes my $r = $app->routes; $r->get('/foo/bar')->to('test#foo', title => 'Hello Mojo!'); $r->post('/baz')->to('test#baz'); =end original # ルートの追加 my $r = $app->routes; $r->get('/foo/bar')->to('test#foo', title => 'Hello Mojo!'); $r->post('/baz')->to('test#baz'); =begin original # Add another namespace to load controllers from push @{$app->routes->namespaces}, 'MyApp::MyController'; =end original # コントローラーをロードするために他の名前空間を追加 push @{$app->routes->namespaces}, 'MyApp::MyController'; =head2 secrets my $secrets = $app->secrets; $app = $app->secrets([$bytes]); =begin original Secret passphrases used for signed cookies and the like, defaults to the L of this application, which is not very secure, so you should change it!!! As long as you are using the insecure default there will be debug messages in the log file reminding you to change your passphrase. Only the first passphrase is used to create new signatures, but all of them for verification. So you can increase security without invalidating all your existing signed cookies by rotating passphrases, just add new ones to the front and remove old ones from the back. =end original 署名付きクッキーのための秘密のパスフレーズで、 デフォルトはこのアプリケーションのLの値です。 これはあまりセキュアではありませんので、変更すべきです。 セキュアではないデフォルトを使っている限り、 ログファイルの中に、パスフレーズを変えるように思い起こさせる デバッグメッセージが出力されます。 けれども、それらすべては確認のためです。 パスフレーズを回転させることによって存在しているすべての書名つきクッキーを 無効にすることなしに、セキュリティを向上させることができます。 新しいものは先頭に追加し、後ろから取り除いてください。 =begin original # Rotate passphrases $app->secrets(['new_passw0rd', 'old_passw0rd', 'very_old_passw0rd']); =end original # パスフレーズをローテーションさせる。 $app->secrets(['new_passw0rd', 'old_passw0rd', 'very_old_passw0rd']); =head2 sessions my $sessions = $app->sessions; $app = $app->sessions(Mojolicious::Sessions->new); =begin original Signed cookie based session manager, defaults to a L object. You can usually leave this alone, see L for more information about working with session data. =end original 簡単な署名付きクッキーに基いたセッションで、デフォルトは L オブジェクトです。 通常はこれは無視してください。 セッションのデータを利用するための情報としてはLを見てください。 =begin original # Change name of cookie used for all sessions $app->sessions->cookie_name('mysession'); =end original # すべてのセッションのために利用されるクッキー名を変更する $app->sessions->cookie_name('mysession'); =begin original # Disable SameSite feature $app->sessions->samesite(undef); =end original # 同じサイトの機能を無効にする $app->sessions->samesite(undef); =head2 static my $static = $app->static; $app = $app->static(Mojolicious::Static->new); =begin original For serving static files from your C directories, defaults to a L object. =end original C ディレクトリから静的資源を提供するためのもので、デフォルトは L オブジェクトです。 =begin original # Add another "public" directory push @{$app->static->paths}, '/home/sri/public'; =end original # 他の"public"ディレクトリを追加 push @{$app->static->paths}, '/home/sri/public'; =begin original # Add another "public" directory with higher precedence unshift @{$app->static->paths}, '/home/sri/themes/blue/public'; =end original # 高い優先順位で、他の"public"ディレクトリを追加 unshift @{$app->static->paths}, '/home/sri/themes/blue/public'; =begin original # Add another class with static files in DATA section push @{$app->static->classes}, 'Mojolicious::Plugin::Fun'; =end original # DATAセクションにおける静的ファイルのためのクラスを追加 push @{$app->static->classes}, 'Mojolicious::Plugin::Fun'; =begin original # Remove built-in favicon delete $app->static->extra->{'favicon.ico'}; =end original # ビルトインのファビコンを削除 delete $app->static->extra->{'favicon.ico'}; =head2 types my $types = $app->types; $app = $app->types(Mojolicious::Types->new); =begin original Responsible for connecting file extensions with MIME types, defaults to a L object. =end original MIMEタイプをファイル拡張子に紐づけるための割り当て。デフォルトはLオブジェクト。 =begin original # Add custom MIME type $app->types->type(twt => 'text/tweet'); =end original # カスタムのMIMEタイプを追加 $app->types->type(twt => 'text/tweet'); =head2 ua my $ua = $app->ua; $app = $app->ua(Mojo::UserAgent->new); =begin original A full featured HTTP user agent for use in your applications, defaults to a L object. =end original アプリケーションで利用するための完全な機能を持つHTTP1.1ユーザーエージェント。 デフォルトはLオブジェクトです。 =begin original # Perform blocking request say $app->ua->get('example.com')->result->body; =end original # ブロッキングなリクエストを実行 say $app->ua->get('example.com')->result->body; =head2 validator my $validator = $app->validator; $app = $app->validator(Mojolicious::Validator->new); =begin original Validate values, defaults to a L object. =end original パラメーターを検証する。 デフォルトは、Lオブジェクトです。 =begin original # Add validation check $app->validator->add_check(foo => sub { my ($v, $name, $value) = @_; return $value ne 'foo'; }); =end original # バリデーションのチェックを追加 $app->validator->add_check(foo => sub { my ($v, $name, $value) = @_; return $value ne 'foo'; }); =begin original # Add validation filter $app->validator->add_filter(quotemeta => sub { my ($v, $name, $value) = @_; return quotemeta $value; }); =end original # バリデーションのフィルターを追加 $app->validator->add_filter(quotemeta => sub { my ($v, $name, $value) = @_; return quotemeta $value; }); =head1 METHODS (メソッド) =begin original L inherits all methods from L and implements the following new ones. =end original L は L から全てのメソッドを継承しており、以下の新しい メソッドを実装しています。 =head2 build_controller my $c = $app->build_controller; my $c = $app->build_controller(Mojo::Transaction::HTTP->new); my $c = $app->build_controller(Mojolicious::Controller->new); =begin original Build default controller object with L. =end original デフォルトコントローラーオブジェクトをLで構築する。 =begin original # Render template from application my $foo = $app->build_controller->render_to_string(template => 'foo'); =end original # アプリケーションからテンプレートを描画 my $foo = $app->build_controller->render_to_string(template => 'foo'); =head2 build_tx my $tx = $app->build_tx; =begin original Build L object and emit L hook. =end original Lオブジェクトを構築し、Lフックを発生させます。 =head2 config my $hash = $app->config; my $foo = $app->config('foo'); $app = $app->config({foo => 'bar', baz => 23}); $app = $app->config(foo => 'bar', baz => 23); =begin original Application configuration. =end original アプリケーションの設定。 =begin original # Remove value my $foo = delete $app->config->{foo}; =end original # 値の削除 my $foo = delete $app->config->{foo}; =begin original # Assign multiple values at once $app->config(foo => 'test', bar => 23); =end original # 複数の値を一度に代入する $app->config(foo => 'test', bar => 23); =head2 defaults my $hash = $app->defaults; my $foo = $app->defaults('foo'); $app = $app->defaults({foo => 'bar', baz => 23}); $app = $app->defaults(foo => 'bar', baz => 23); =begin original Default values for L, assigned for every new request. =end original Lのための デフォルト値です。新しいリクエストのたびに設定されます。 =begin original # Remove value my $foo = delete $app->defaults->{foo}; =end original # 値を取り除く my $foo = delete $app->defaults->{foo}; =begin original # Assign multiple values at once $app->defaults(foo => 'test', bar => 23); =end original # 複数の値を一度に代入 $app->defaults(foo => 'test', bar => 23); =head2 dispatch $app->dispatch(Mojolicious::Controller->new); =begin original The heart of every L application, calls the L and L dispatchers for every request and passes them a L object. =end original Lアプリケーションの心臓部で、リクエストごとに L と L ディスパッチャを呼び出し、それらに L オブジェクトを渡します。 =head2 handler $app->handler(Mojo::Transaction::HTTP->new); $app->handler(Mojolicious::Controller->new); =begin original Sets up the default controller and emits the L hook for every request. =end original デフォルトコントローラを準備し、リクエストごとにLフックを発行します。 =head2 helper $app->helper(foo => sub {...}); =begin original Add or replace a helper that will be available as a method of the controller object and the application object, as well as a function in C templates. For a full list of helpers that are available by default see L and L. =end original コントローラオブジェクトとアプリケーションオブジェクトのメソッドとして、 また、 C テンプレートの関数として利用できる新しいヘルパーを追加します。 デフォルトで利用可能な、すべてのヘルパーのリストはLとLを見てください。 =begin original # Helper $app->helper(cache => sub { state $cache = {} }); =end original # ヘルパー $app->helper(cache => sub { state $cache = {} }); =begin original # Application $app->cache->{foo} = 'bar'; my $result = $app->cache->{foo}; =end original # アプリケーション $app->cache->{foo} = 'bar'; my $result = $app->cache->{foo}; =begin original # Controller $c->cache->{foo} = 'bar'; my $result = $c->cache->{foo}; =end original # コントローラー $c->cache->{foo} = 'bar'; my $result = $c->cache->{foo}; =begin original # Template % cache->{foo} = 'bar'; %= cache->{foo} =end original # テンプレート % cache->{foo} = 'bar'; %= cache->{foo} =head2 hook $app->hook(after_dispatch => sub {...}); =begin original Extend L with hooks, which allow code to be shared with all requests indiscriminately, for a full list of available hooks see L. =end original フックでLを拡張します。 すべてのリクエストで無差別にコードを共有することを可能にします。 利用できるフックのすべてのリストはLを見てください。 =begin original # Dispatchers will not run if there's already a response code defined $app->hook(before_dispatch => sub { my $c = shift; $c->render(text => 'Skipped static file server and router!') if $c->req->url->path->to_route =~ /do_not_dispatch/; }); =end original # すでに定義されているレスポンスコードがあれば、ディスパッチャーは実行されません $app->hook(before_dispatch => sub { my $c = shift; $c->render(text => 'Skipped static file server and router!') if $c->req->url->path->to_route =~ /do_not_dispatch/; }); =head2 new my $app = Mojolicious->new; my $app = Mojolicious->new(moniker => 'foo_bar'); my $app = Mojolicious->new({moniker => 'foo_bar'}); =begin original Construct a new L application and call L. Will automatically detect your home directory. Also sets up the renderer, static file server, a default set of plugins and an L hook with the default exception handling. =end original 新しい L アプリケーションを構築し、Lを呼び出します。 ホームディレクトリを自動的に検知し、現在の実行モードに基いてロギングを 準備します。 レンダラ、静的ディスパッチャ、プラグインのデフォルトセット、 デフォルトの例外を処理するLフックを発生準備します。 =head2 plugin $app->plugin('some_thing'); $app->plugin('some_thing', foo => 23); $app->plugin('some_thing', {foo => 23}); $app->plugin('SomeThing'); $app->plugin('SomeThing', foo => 23); $app->plugin('SomeThing', {foo => 23}); $app->plugin('MyApp::Plugin::SomeThing'); $app->plugin('MyApp::Plugin::SomeThing', foo => 23); $app->plugin('MyApp::Plugin::SomeThing', {foo => 23}); =begin original Load a plugin, for a full list of example plugins included in the L distribution see L. =end original プラグインをロードします。 Lに含まれているすべてのサンプルプラグインのリストは Lで見ることができます。 =head2 server $app->server(Mojo::Server->new); =begin original Emits the L hook. =end original L フックを実行します。 =head2 start $app->start; $app->start(@ARGV); =begin original Start the command line interface for your application. For a full list of commands that are available by default see L. Note that the options C<-h>/C<--help>, C<--home> and C<-m>/C<--mode>, which are shared by all commands, will be parsed from C<@ARGV> during compile time. =end original アプリケーションのためにコマンドライン インターフェースを開始します。 デフォルトで利用可能なコマンドの完全な一覧については、L を参照してください。 C<-h>/C<--help>, C<--home>とC<-m>/C<--mode>のオプションは、 すべてのコマンドで共有され、コンパイルタイムの間に、 C<@ARGV>から解析されることに注意してください。 =begin original # Always start daemon $app->start('daemon', '-l', 'http://*:8080'); =end original # いつもデーモンを開始 $app->start('daemon', '-l', 'http://*:8080'); =head2 startup $app->startup; =begin original This is your main hook into the application, it will be called at application startup. Meant to be overloaded in a subclass. =end original これはアプリケーションにおけるあなたの主要フックです。アプリケーション開始時に 呼び出されます。サブクラスでオーバーロードされます。 =begin original sub startup { my $self = shift; ... } =end original sub startup { my $self = shift; } =head1 HELPERS (ヘルパー) =begin original In addition to the L and L above you can also call helpers on L objects. This includes all helpers from L and L. Note that application helpers are always called with a new default controller object, so they can't depend on or change controller state, which includes request, response and stash. =end original 上記の L と L に加えて、Lのインスタンスにおいてヘルパーを呼び出すことができます。 これはLとLからすべての ヘルパーを含んでいます。 アプリケーションのヘルパーはいつでも新しいデフォルトコントローラーオブジェクトから呼び出されることに 注意してください。ですのでそれらは、リクエストやレスポンスやスタッシュを含むコントローラーの状態に依存したり、 コントローラの状態を変更することはできません。 =begin original # Call helper say $app->dumper({foo => 'bar'}); =end original # ヘルパーを呼ぶ say $app->dumper({foo => 'bar'}); =begin original # Longer version say $app->build_controller->helpers->dumper({foo => 'bar'}); =end original # 長いバージョン say $app->build_controller->helpers->dumper({foo => 'bar'}); =head1 BUNDLED FILES (同梱ファイル) =begin original The L distribution includes a few files with different licenses that have been bundled for internal use. =end original L 配布には、内部利用のために同梱されている、 異なるライセンスを持つファイルをいくつか含んでいます。 =head2 Mojolicious Artwork Copyright (C) 2010-2019, Sebastian Riedel. Licensed under the CC-SA License, Version 4.0 L. =head2 jQuery Copyright (C) jQuery Foundation. Licensed under the MIT License, L. =head2 prettify.js Copyright (C) 2006, 2013 Google Inc.. Licensed under the Apache License, Version 2.0 L. =head1 CODE NAMES (コード名) =begin original Every major release of L has a code name, these are the ones that have been used in the past. =end original L のそれぞれのメジャーリリースにはコード名があります; 次のものは過去に使われていたものです。 8.0, C (U+1F9B9) 7.0, C (U+1F369) 6.0, C (U+1F37B) 5.0, C (U+1F42F) 4.0, C (U+1F3A9) 3.0, C (U+1F308) 2.0, C (U+1F343) 1.0, C (U+2744) =head1 SPONSORS =over 2 =item =begin original L sponsored the creation of the Mojolicious logo (designed by Nicolai Graesdal) and transferred its copyright to Sebastian Riedel. =end original L は (Nicolai Graesdal による) Mojolicious ロゴの 作成をスポンサーし、著作権を Sebastian Riedel に移譲しました。 =item =begin original Some of the work on this distribution has been sponsored by L. =end original この配布の成果の一部は L によって スポンサーされました。 =back =head1 PROJECT FOUNDER Sebastian Riedel, C =head1 CORE DEVELOPERS =begin original Current members of the core team in alphabetical order: =end original 現在のコアチームメンバー(アルファベット順): =over 2 Jan Henning Thorsen, C Joel Berger, C Marcus Ramberg, C =back =begin original The following members of the core team are currently on hiatus: =end original 次のコアチームメンバーは現在休止中です: =over 2 Abhijit Menon-Sen, C Glen Hinkle, C =back =head1 CREDITS =begin original In alphabetical order: =end original アルファベット順に: =over 2 Adam Kennedy Adriano Ferreira Al Newkirk Alex Efros Alex Salimon Alexander Karelas Alexey Likhatskiy Anatoly Sharifulin Andre Parker Andre Vieth Andreas Guldstrand Andreas Jaekel Andreas Koenig Andrew Fresh Andrew Nugged Andrey Khozov Andrey Kuzmin Andy Grundman Aristotle Pagaltzis Ashley Dev Ask Bjoern Hansen Audrey Tang Ben Tyler Ben van Staveren Benjamin Erhart Bernhard Graf Breno G. de Oliveira Brian Duggan Brian Medley Burak Gursoy Ch Lamprecht Charlie Brady Chas. J. Owens IV Chase Whitener Christian Hansen chromatic Curt Tilmes Dan Book Daniel Kimsey Daniel Mantovani Danijel Tasov Danny Thomas David Davis David Webb Diego Kuperman Dmitriy Shalashov Dmitry Konstantinov Dominik Jarmulowicz Dominique Dumont Dotan Dimet Douglas Christopher Wilson Ettore Di Giacinto Eugen Konkov Eugene Toropov Flavio Poletti Gisle Aas Graham Barr Graham Knop Henry Tang Hideki Yamamura Hiroki Toyokawa Ian Goodacre Ilya Chesnokov Ilya Rassadin James Duncan Jan Jona Javorsek Jan Schmidt Jaroslav Muhin Jesse Vincent Johannes Plunien John Kingsley Jonathan Yu Josh Leder Kazuhiro Shibuya Kevin Old Kitamura Akatsuki Klaus S. Madsen Knut Arne Bjorndal Lars Balker Rasmussen Lee Johnson Leon Brocard Magnus Holm Maik Fischer Mark Fowler Mark Grimes Mark Stosberg Marty Tennison Matt S Trout Matthew Lineen Maksym Komar Maxim Vuets Michael Gregorowicz Michael Harris Mike Magowan Mirko Westermeier Mons Anderson Moritz Lenz Neil Watkiss Nic Sandfield Nils Diewald Oleg Zhelo Olivier Mengue Pascal Gaudette Paul Evans Paul Robins Paul Tomlin Pavel Shaydo Pedro Melo Peter Edwards Pierre-Yves Ritschard Piotr Roszatycki Quentin Carbonneaux Rafal Pocztarski Randal Schwartz Richard Elberger Rick Delaney Robert Hicks Robin Lee Roland Lammel Roy Storey Ryan Jendoubi Salvador Fandino Santiago Zarate Sascha Kiefer Scott Wiersdorf Sergey Zasenko Simon Bertrang Simone Tampieri Shu Cho Skye Shaw Stanis Trendelenburg Stefan Adams Steffen Ullrich Stephan Kulow Stephane Este-Gracias Stevan Little Steve Atkins Tatsuhiko Miyagawa Terrence Brannon Tianon Gravi Tomas Znamenacek Tudor Constantin Ulrich Habel Ulrich Kautz Uwe Voelker Viacheslav Tykhanovskyi Victor Engmark Viliam Pucik Wes Cravens William Lindley Yaroslav Korshak Yuki Kimoto Zak B. Elep Zoffix Znet =back =head1 COPYRIGHT AND LICENSE Copyright (C) 2008-2019, Sebastian Riedel and others. This program is free software, you can redistribute it and/or modify it under the terms of the Artistic License version 2.0. =head1 SEE ALSO L, L, L. =begin meta Translate: 木本裕紀 Translate: 前山将人 Update: SHIRAKATA Kentaro (8.12) Status: in progress =end meta =cut