AFTER★SE7EN このページをアンテナに追加 RSSフィード

2017-01-22 フムース基地、クラストゥルム水道、コースタルマークタワー このエントリーを含むブックマーク このエントリーのブックマークコメント

D

 フムース基地攻略したので、レガリアが空を飛べるようになった。が、初めての離陸 → 巨大マップ飛行で感動するも着陸に失敗し爆発炎上して

ゲームオーバーになってしまったので、”( ^ω^)・・・”という気持ちになり、二度と空は飛ぶまいと決意を改め地上を走ることにした。

 先週末に、レガリアヘッドライト改造パーツを拾ったクラストゥムル水道は、最奥部のボスの討伐クエスト攻略した。

そんで先ほどコースタルマークタワーを探索して、これはまだきついかなと思い一旦引き返してきたという感じ。

トラックバック - http://d.hatena.ne.jp/Kow/20170122

2017-01-21 リファクタリングについて

リファクタリングについて

| 12:21 | リファクタリングについてを含むブックマーク リファクタリングについてのブックマークコメント

 たまにコードレビューなどをしてもらうと、自分ではこれでいいや、これが綺麗な書き方だなんて思っていたもの

全然コーディング規約に反していることが分かったりして”え、そういえば俺はなんでこれでいいと思っていたんだろ”と疑問に思ったりできるものだ。


 例えば自分場合PHPの開始タグの下にはインデントが入るものだと思い込んでいた。

<?php
  $hoge = hogehoge();
  echo $hoge;
?>

 のような感じであるしかし、これは完全にダメである。開始タグの下にインデントはいらないし、PHPの終了タグも、

そのコードPHPオンリーソースであれば、省略するべきだとされているのだ。

 つまりこうである


<?php
$hoge = hogehoge();
echo $hoge;

 終了タグについては、危険性があるという理由があるそうなのだが、インデントについては開始タグスコープとして誤解してしまっていたという

勘違いが原因であった。つまりif()とかfor()につける{}のように勝手に誤解してしまっていたのであった。


 まあそれはそうと、コーディング規約と言えば、変数命名規則重要だとされている。自分場合は、例えば

$hogeHogeHoge = hogeHogeHoge();

 のように、先頭文字を小文字にして単語毎に頭文字大文字でつないでいく書き方をどこかでこういうもんなのかと覚えていたのだが、

これはローワーキャメルケースと呼ばれるらしい。命名規則名前があるという事自体自分はほとんど意識してこなかった。

知っている記法と言えば、ハンガリアン記法かいものがあるらしいということぐらいであった。

ハンガリアン記法というのは、こういう奴だ。


$strText = '';

 型名などの略語が頭につく。C言語世界ではよく見られるらしい。


 PHPはというと、言語リファレンスを見ても、標準の関数がすべてスニークケースと呼ばれる命名規約にしたがって言語自体設計されている。

例えば、

array_change_key_case();

のように、すべて小文字単語をアンダースコアで連結した形である


 が、一方ではPHPを利用したフレームワークであるCakePHP

$this->getDataSource();

 のようにローワーキャメル設計されている(が、公式ドキュメントのサンプルにはスニークケースのサンプルコード散見される)。


 いくつかの命名規約を、例えばビュー側、フレームワーク標準の変数関数、自ら定義した変数関数、などで使い分けて区別しやすくするという

使い分けなどがあるのだろうか。


 ロジックについても、綺麗に書くためには色々なテクニックがあるようだ。

例えば我々はつい、こういうコードを書いて悦に入ってしまう。

<?php
foreach($this->Model->find('all') as $row) {
  // なになに処理
}

 これならまだしもまだ理解できるが、実際にはもっと複雑なものを一行に詰めようとしてしまっているかもしれない。

後々訳が分からなくならないようにするためには、一旦内容を適切に表した変数にいれておいたほうがいい。


<?php
$logData = $this->Model->find('all');
foreach($logData as $row) {
  // なになに処理
}

 行が短くなり、名前がついていることで内容はずっと分かりやすくなる。色々な事を記憶しながら読むことを強いられるコード

ちょっと読むのが大変なのでそうならないようにしたい。


 また、コードを読みにくくしてしまう原因の一つに、巨大で深いスコープがある。

<?php
foreach($result as $row) {
  if($row != 1) {
    if($row != 2) {
      if($row != 3) {
        If($row != 4) {
          // なになに
        } else {
          // hogehoge
        }
      }
    } else {
      if($row === 3) {
        // なんとか
      }
    }
  }
}

 このコード一見意味がわからない。しかし整理すると下のように直すことができる。すると処理内容は同じだが意味が分かりやすくなる。

<?php
foreach ($result as $row) {
  if(! in_array($row, array(2, 3, 4)) {
    // なになに
  } elseif ($row === 4) {
    // hogehoge
  } else if($row === 3) {
    // なんとか
  }
}

 あるいはこういうロジックがあったとする。

<?php
foreach ($users as $id => $user) {
  if($id >= 50000) {
    if ($user['isLogin'] == true) {
      cnt++;
    } else {
      msg = 'test';
    }

    // なにかしら
    // とてもながい処理
  }
}

 これは条件を反転すると下のようになる。このほうがインデントが浅くなってわかりやすい。真になる条件を重ねないで、ループを抜けられるところは抜けてしまうのが良しとされる。

<?php
foreach ($users as $id => $user) {
  if($id < 50000) {
    continue;
  }
  if ($user['isLogin'] == true) {
    cnt++;
  } else {
    msg = 'test';
  }

  // なにかしら
  // とてもながい処理
}
トラックバック - http://d.hatena.ne.jp/Kow/20170121

2017-01-15 今日もFF15 このエントリーを含むブックマーク このエントリーのブックマークコメント

D

 レガリアヘッドライト改造パーツを探しにクラストゥルム水道というところを探索していたのだが

まりにも見つからなかった為、三度目ほど出直して、”攻略法調べたら面白く無くなってしまう”と思いつつもついにここだけ妥協して結局ググってみたら

入り口近くに落ちているとの情報があり、最奥部のボスは今の時点で挑戦する必要はなさそうということでパーツだけゲッツした。

 次はタッカの依頼で、カトブレパスの肉をゲットするという依頼だったのだが

カトブレパスを倒しても肉が得られず、あれ?と思いクロウネストレストランの依頼を全部攻略してみた。

(タッカの依頼の目的地はレストラン店主の手前を指していた)

改めて二度目のカトブレパス退治で討伐後に肉ゲットしたのでそんな動画です。

トラックバック - http://d.hatena.ne.jp/Kow/20170115

2017-01-09 リスボンの絵画 このエントリーを含むブックマーク このエントリーのブックマークコメント

いつもニコニコしている天使のような美少女がいた。

いつも自ら苦労をかって出る、未婚の三十路手前のお姉さんだ。

そんな彼女には裏の顔があった。そう誰もに裏の顔があるのだ。

とある企業の給湯室あたりで、彼女が影の人事部長としてお局様の辣腕を振るっている。


あるとき部長本社に飛ばされることを知った。

それも発端は彼女部長を嫌ったせいだった。

みんな知っていることだった。

知った上で、そんなもんだと納得している。

知らないのはお客様だけだ。

お客様だけはただ健気な、気立てのいい娘さんだと思って彼女心配して見せるのだった。


そういう側面があるから

一人の人間としてバランスが保てるのかもしれない。

人間というのは一人の人間の中に、良さとそして悪さを同時に備えてバランスをとっている。

本音と建前が一致していたとしたら、薄っぺらで深みに欠けたアンバランス存在に思える。


だがそのことを知らない青年ナイーブにおののいてしまうことだろう。


  -- 良い人間には良さしかない

    悪い人間は悪さしかない 

    だってそう思わなければ、社会はあまりに複雑すぎる --


そして、自分の中には良さしかない、そう頑なに信じる。

無邪気な嘘のようにすべてが許される気がした。

やがてそんな青年大人になっていく。

彼もまた成人式を迎えたのだ。

トラックバック - http://d.hatena.ne.jp/Kow/20170109

2017-01-08 哀しき物議 このエントリーを含むブックマーク このエントリーのブックマークコメント

まさに不毛不毛地帯だ。

何がおきているのかというと

あらゆる人々が互いに判で押したように同じことを主張し合っているのだ。

その内実は要約すれば次のようなものである


「おまえの言っていることは違っている。正しいのは私だ」


こういう風に要約するほかない内容を

互いに主張しあっているのだ。

結果として、

その議論がどれだけ時間を費やされたとしても

互いに何の利点も得られず、

お互いがお互いに、次のような帰結に到達する。


自分の言っている事は一つも理解されなかった。相手から学べることが一つもなかった」


なぜなのかは分からない。

この不毛地帯以外では皆、次のような議論をしている。


「その内容で問題があるのはAとBとCであり、私はそれがDとEとFだと思う」

「なるほど確かにDとEとFでもいい。しかしAとBとCにはそれぞれXとYという利点がある」

「DとEとFにはZという利点がある」

「それではAとEとFならばさらによさそうだね」

「確かにその組み合わせならばもっとよさそうだ」

「お互いに気がつかなかったな」


こういう議論であれば議論すればするほど

互いに利点がある。

相手意見の利点と欠点をきめ細かに読解し合う必要がある。


だが、大抵は

相手意見にたった一つの違和感を覚えると

その相違点を掘り下げて比較するという事は面倒くさくなり、

ほかのすべても全部間違っているように思われて

互いの議論から拾い上げられる果実を一切無視して


「おまえの言っていることは違っている。正しいのは私だ」

と主張しあってしまうのだ。


これでは

議論がどれだけ時間をかけても

互いに相手議論を一切読まず

「間違っているのだから俺の話だけを聞け」

と言い合ってしまう。

そうなったらもう

結局互いに自分にとって新しいことを何も学ぶ事もできないし

相手自分意見が読まれることもなく

台所の流し台にむかって独り言でもいっていたほうがマシなのである

いくら時間を費やしても時間無駄に終わるのだ。

トラックバック - http://d.hatena.ne.jp/Kow/20170108