任意の場所からログイン中のユーザを取得する
- 原題: Getting the Logged In User from Anywhere
- 日本語訳トップページ
……
Matt Curry氏が無償公開されている電子書籍『Super Awesome Advanced CakePHP Tips』の翻訳を始めました。既にbobchin氏が全体を翻訳完了されている(と公開直前に知った)のですが、私自身の勉強も兼ねて、なぜそう訳したのかという註釈を含めて拙訳を公開していきます。原文を読まれる際にお役立てください。また間違いや疑問などありましたら教えていただけると嬉しいです。
第一弾は16ページからの『Getting the Logged In User from Anywhere』です。私が興味を持った順に訳していきます。とても時間がかかるので、翻訳完了時期は今のところ未定です。
Getting the Logged In User from Anywhere註
クリックすると該当行をハイライトして表示します。
- from Anywhere
- 日本語で「どこからでも」と言うと譲歩の意味が強過ぎるので、ちょっと堅苦しい表現だが「任意の場所から」とした。
- This is a problem that comes up often.
- This はタイトル「Getting the Logged In User from Anywhere」の内容を指し、それが「よく生じる問題である」、ということで「よく問題となる」といったところか。
- modified user
- 素直に読めば「修正されたユーザ」としか読めないのだが、それでは意味が通らない。文脈からすればこれは次章「Automatically Tracking Created/Modified By」の内容を示していることは明らかなので、modified user ひとまとまりで「修正を行ったユーザ」と理解するのが正しいのだろう。Web検索でも同様の用例が見つかる。
- beforeFilter
- モデルには beforeFilter コールバックは存在しない(次章の内容からすれば実装上正しいのは beforeValidate)。なぜここで beforeFilter と言ったのか。(1)コントローラの beforeFilter を指す。(2)単なる間違い。(3)主処理の前に実行されるコールバックを抽象的に beforeFilter と呼んでいる。多分(3)?
- It would be great if you could …
- 前の文は単なる仮定だが、この文は仮定法。つまり handle 以下は現実には不可能だと認識している。「なぜ不可能なのか」に相当する内容は書いていないが、前段落までビューとコントローラからセッションにアクセスする方法について述べているのだから、ここではモデルからセッションにアクセスする方法が”無い”ことを仮定法によって暗示していると見なせる。
- You can always cheat …
- always が悩ましい。本当に「いつでも」という意味だと理解すると、ビューでもコントローラでも使えばいいじゃないか、という話になって次の文とのつながりが苦しくなる。「必要ならいつでも」くらいに訳すべきか。さらに次の文の註参照。
- Plus, now we are using three …
- この文は翻訳では何か言葉を補わないとうまく繋がらない。まず文頭の Plus が何に対して「加えて」いるのかが問題になる。always の註に書いた通り、前の文に対する付加だとすると意味が通じない。これは冒頭の problem に対する付加と見なすべきだろう。
- つまり作者の問題意識は2つある。一つ目は Model からセッションに直接アクセスする方法がないこと。二つ目はアクセスする方法がバラバラであること。よってこの2つを同時に解決する方法を提示するのがこの章全体の主題となっている。章の冒頭のこの節ではまず前者について述べ始めたのだが、最後になって後者を付け加えた。あるいは書いている途中で自分の2つ目の問題意識に気付いたのかも知れない。
- but for the User::get syntax to work it has to …
- but は単なる接続詞。for は不定詞 to work の主語を示す。語順を変えると「but it has to go in the model for the User::get syntax to work.」
- Deal with it.
- 「うまく対処してくれ」→「なんとか我慢してくれ」くらいの意味になるようだ。参考。直訳だとちょっと様にならないので意訳を採用。
- instance
- これ以後 instance という語が頻繁に使われるのだが、その意味は日本語オブジェクト指向用語の「インスタンス」とは厳密には一致しない(必ずしも何らかのクラスに属するオブジェクトではない)。しかしWikipediaを参照する限り英語オブジェクト指向用語の「instance」も日本語の「インスタンス」とほとんど変わらない意味だから、やはりこの文章における用例とは一致しない。多分、instance が元々持っている「具体事例」というような意味と、オブジェクト指向用語 instance が持つ語感とを混ぜ合わせたような意味で用いられているのだと思う。
- Before you can access … you need to …
- 「…するためには…しなければならない」「…して初めて…することができる」
- get the instance and pull out a specific piece of information from the user array.
- この and を単純な並列にとると意味が通じない(User::get は $path パラメータが必須で、「インスタンス」を取得するためのものではない)。やはり the instance と the user array は同じ物を指していると考え、「インスタンスを取得して、そして一部を取り出す」というように前後関係を表していると見るべきだろう。
- inspired
- 敢えてカタカナで「インスパイア」の方が雰囲気が出ると思う。パクリじゃない、インスパイアだ!
- the syntax isn’t as appealing.
- 後ろに「as that of User::get()」が省略されている。
- Why not just use the same setup for …
- 意味は鮮明だが訳しにくい。「Why not A …, but B …」なぜBを除きAしないのか(すれば良いではないか)。思いっきり分かりやすく言うと、 User::get() を Configure に対する Wrapper にすれば良いじゃないか、ということ。
- Again, certainly an option.
- うまく訳せなかった。 短い文は難しい。 an option は「User::get() を Configure に対する Wrapper にする」という(読者からの想定)提案を指し、Again はその前の「Configure クラスをそのまま使う」という案に対するもの。だと思うのだが、自信がない。
- withing
- within の typo だろう。