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

2016-07-24 Cake3でTCPDFを使い、表形式のPDFを生成する

Cake3でTCPDFを使い、表形式のPDFを生成する

| 10:58 | Cake3でTCPDFを使い、表形式のPDFを生成するを含むブックマーク Cake3でTCPDFを使い、表形式のPDFを生成するのブックマークコメント

TCPDFをCakePHP3に導入し、HTML形式ではなくPDFを動的に生成して表示することができるわけだが、

そのPDFデータを表形式で表示するには、下のサイトが参考になった。

https://www.ibm.com/developerworks/jp/opensource/library/os-tcpdf/



    foreach( $this->invoiceData['items'] as $item ) {
        $this->Cell( $indent );
        $this->Cell( $wideCol, $line, $item[0], 1, 0, 'L' );
        $this->Cell( $col, $line, $item[1], 1, 0, 'R' );
        $this->Cell( $col, $line, $item[2], 1, 0, 'R' );
        $this->Cell( $col, $line, $item[3], 1, 0, 'R' );
        $this->Ln();
    }

の部分だけど、Controllerで表示したいデータ普通にArrayに詰めて渡し、

ループで中身をCell()に突っ込んでいくだけだ。

上で$thisとなっている対象はnewされたTCPDFオブジェクト

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

2016-07-16 RPGツクールがあってもゲームを作れない人が多かった理由

RPGツクールがあってもゲームを作れない人が多かった理由

| 22:32 | RPGツクールがあってもゲームを作れない人が多かった理由を含むブックマーク RPGツクールがあってもゲームを作れない人が多かった理由のブックマークコメント


RPGツクールは中々優れたツールで、今で言うところのゲームエンジン+素材みたいなツールであった。

だが、それを与えられても、ゲームを完成させられる人は結構限定されてしまっていた。

素材もあり、プログラミングしなくてもいいのだが、それでも作れない理由は、

レベルデザインという要素が実は見落とされていたせいだろう。ゲームゲーム性とは、見た目やユーザビリティシステムルール)以上に

難易度のバランスが重要なのだが、そのデザインの方法論は、全然議論されてきたことがない。


レベルデザインというのは、難易度設計のことである

序盤はサクサク進んだほうがいいし、中盤は歯ごたえがあり、後半はギリギリ勝負になるべきである

だが、それをどうやって作りこめばいいのかは、ひたすら作っては壊し作っては壊しの連続しかないと思われていた。


だが実際は、ゴールとか正解の攻略法の設定からスタートするものなのだと思った。

そのイベントは、何レベルのプレイヤーが、直前で手に入る何々を装備したパラメーターで、何分かけてどんな戦法で戦った時に勝てるイベントなのかというところを決め、

それ以外の攻略法が困難になるようなモンスターなりダンジョンなりを段階的なレベルデザインによって配置することによって

難易度をコントロールしていくものなのだと(正解攻略法の決定からスタートする)。

そもそもそのイベントは最短ルートで何レベルで到達できる場所で起こるイベントなのかをマップデザインで調整し、

平均何歩ごとにエンカウントがあるかそのエリアの平均経験値はいくらなのか、などの設定でそこへの到達レベルをコントロールし、直前の街や宝箱で入手できる装備でパラメータをコントロールし

一番いい条件では勝てる、もしくはギリギリになるようなそれぞれのパラメーターを計算設計する。


序盤であれば力押しが通用するように緩めに作るが、後半はあらかじめ設定した正解の攻略法を激しく複雑化しつつ、その複雑な方法以外の方法では

攻略不能である可能性が高まるようなパラメータ設計を徐々に後半に向かえば向かうほど難しく組んでいくわけだ。

それはまるで、詰め将棋に似てくる。


無駄をなくせば攻略できることが明らかなほど、ギリギリで負ける。

あとほんの一工夫するだけで、勝てるかもしれないが今は負けてしまう。そういうバランスを後半で作りこむ。

そういう事がゲームのデザインなのだが、大抵は見落とされて、魅力的なキャラクターや、シナリオや、BGMや、それっぽいシステムだけで満足してしまう。

簡単すぎでは飽きてしまい、難しすぎては萎える。

工夫したときだけクリアできる難易度を、少しずつ難易度をきびしくしながらも曲線的に設計することのむずかしさみたいなもの

実はゲーム制作心臓部分なのだと思う。


完膚なきまでに叩きのめされ続けたり、あるいは逆に簡単すぎて退屈したりしないような、ギリギリの緊張感になるようなバランスを計算設計していく事が

重要だという事、それをどうやって計算し構築していったらいいかということ。

これが実は、RPGツクールであれなんであれ、ゲームを完成させるために必要でありつつも忘れられがちが核の部分だと思う。

要するに、システムや、シナリオや、絵や、サウンド、映像などの素材が全部そろっただけでは、ゲームにはならないのだ。難易度設計が、その世界意味を活かしも殺しもするのだ。

勝てもしない戦いには挑戦しても無意味なのだし、楽すぎる挑戦は、退屈すぎてつまらない。

歯ごたえのあるチャレンジの連続になるようなレベルデザインは、プレイヤーキャラクターの成長曲線を精密に予測設計した上で表計算的に設計され作りこまれている。

ゲームとはそうやって作りこまれているという事は、実は案外、気づかれていない気がする。

そしてそういうもの必要だということが理解されていないために、RPGツクールがあろうが素材が全部あろうが、ゲームは完成しない事が多いんだろうと思う。

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

2016-07-10 CakePHP3でTCPDFを使う

CakePHP3でTCPDFを使う

| 20:50 | CakePHP3でTCPDFを使うを含むブックマーク CakePHP3でTCPDFを使うのブックマークコメント

TCPDFは、PDFを生成するためのPHPライブラリだ。

CakePHP3でこれを呼ぶためには、composer.json

    "require": {
        "tecnickcom/tcpdf": "*"
    }

を追加して、

composer updateをかけるだけである


実際にうまく入ったかどうかは、

TCPDFの簡単サンプルコードを使って確認してみればいい。

HTMLページの代わりに、PDFデータを表示できる。

pChartも、実際は画像を動的に生成しているだけなので、pChartで生成したグラフを表示したりも

普通にできる(TCPDFの画像表示用の作法に従うだけで)。


テキストを渡すこともできるが、html形式の表示を渡してPDFとして表示させることもできる。

サクラエディタのGrep置換

| 21:02 | サクラエディタのGrep置換を含むブックマーク サクラエディタのGrep置換のブックマークコメント

私はもうだいぶ長い間、テキストエディタEmEditorを使っている。理由は保存時の文字コード選択ができるからだ。

が、サクラエディタにある、Grep置換というものを知って少し揺らいでいる。気持ちが。


通常の置換で、ファイル内の文字を一斉に置き換えるということはよくやることである

しかし、それでは大量のファイルに対して同じ操作をやりたいとなったとき

ファイルの数だけ置換を繰り返すなどという、バカげた単純作業が発生してしまいそうに思える。いろいろなバカげたことが起きると、そういう作業も発生する可能性はある。

Linuxハッカーであればパパッと数秒で終わらせる作業なのだろうが、

普通人間には一日がかりの作業になってしまうような類の作業である

天才ハッカーでない我々は、枕を涙で濡らしながら単純作業を人力で行うしかないのだろうか?

そこで登場するのがサクラエディタGrep置換だ。

置換の処理を、選択フォルダ内のすべてのファイルに対して適用するのがサクラエディタGrep置換だ。

作業用のフォルダを作り、そこに置換の必要ファイルをまとめてつっこんで、

Grep置換を1回やるだけで、全ファイル対象文字列が、置換される。オーマイガ、1000件なり10万件なりのファイルが!一気に置換済みになったぞ!

ハレルヤ!(妄想

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

2016-07-03 CakePHP3でpChartを使う

CakePHP3でpChartを使う

| 17:47 | CakePHP3でpChartを使うを含むブックマーク CakePHP3でpChartを使うのブックマークコメント


CakePHPは3系になって2系までよりもはるかコーディングルールが厳しくなってきているようだ。

pChartを使おうとVendorに入れ、普通に呼ぼうとしてもうまくいかなかった。


呼ばれる先のライブラリにまでCake3系の規約適用しようとしているかのようなエラーがでる。

仕方がないので、無茶なやり方を試みたところ、動作したのでメモしておく(たぶん正しいやり方ではない)。


 1.pChartのフォルダの中身の.classを、.phpリネーム

 2.リネームした.phpvendorに配置。

 3.app::import()ではなく、require_onceで読み込む。

 4.newしようとするとまたControllerに紐づけようとしてエラーになるが、クラス名の前にバックスラッシュをつけると通る。

 5.Fontはフォルダごとwebrootに入れて呼ぶ。


これでひとまず動作した。

正規のやり方はたぶんcomposerかなにかを使うんだろうと思う。

後ほど別のライブラリのためにcomposerをいじる必要があるので、追々整えていくつもり。

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

2016-06-23 アーキテクチャの生態系|読書感想文 このエントリーを含むブックマーク このエントリーのブックマークコメント

アーキテクチャ生態系浜野智史氏による、情報社会である

アーキテクチャという言葉は、元々は建築用語であるが、情報技術の分野においても設計意味で用いられている(システムアーキテクト、などという設計技術職能もある)。


だが、情報社会論においてはアーキテクチャはただの設計思想のことに留まらないさらに広範な意味を与えられている。

アーキテクチャ環境を決定し、ある種の権力として機能しつつあるからである

かつて社会秩序は法と規範によってコントロールされてきた。だが、今日においてそれよりも洗練された形で権力を浸透させつつあるのはアーキテクチャである

法による秩序とは、罰則を設けることによって秩序をコントロールすることであり、規範による秩序とは、教育によって規律内面化させることで秩序をコントロールすることであった(モラル教育)。

それらはいずれも規律訓練的な学習なり訓練によって道徳心理解内面化によって維持されなければ破綻してしまう(規律訓練型権力)。

従って、それは抵抗しようと思えば抵抗することも可能であった。

ところがアーキテクチャによる権力(これが環境管理型権力と呼ばれている)は、自分たち支配されている事をまったく意識させないままに秩序を作り上げる権力である


例として引き合いに出されているのが、ファストフード店が客の回転率を上げるために使う仕組みだ。

ファストフード店は、椅子の固さとBGMの音量によって客の回転率を自在にコントロールしているという。

長居しやすさ/しずらさを意図的に調整し意識させないレベルで無意識下に働きかける。

すると客はなんとなく居心地が悪いので店を出たり、居心地がいいために店に残ったりする。

このコントロールは、潜在意識には意識されないレベルのため、誰もそのことに気づかず抵抗できない。


あるいはまた、交通事故を防止するために飲酒運転罰則をどれだけ引き上げても、飲酒運転はなくならないという状況があったとする。

これに対する環境管理型権力の例は、車内にアルコール検知器を組み込み酒気帯び状態ではエンジンがかからないようにするというアプローチだという。

法律を知らない者、規範内面化しない者であっても、飲酒運転はしなくなる(できなくなる)。

こうした制約は、大抵の場合、何か新しい事を可能にするサービスに付随して浸透していくことがある。

例えば、コンビニで何々が可能になります、などの利便性にくっついて、オフにできないなんらかの規制が追加されたりというようなことである


本書は、そうした環境管理型権力議論に対して

徹底抗戦を呼びかける、あるいは全面肯定するというような類の書物ではない。一例をあげると、


 ・WEB2.0以降のネット界隈で生まれた様々なサービスについて、それらがどのようなアーキテクチャとして(意図的であるにせよないにせよ)機能しているか

 ・あるいはまた、ブログと2ちゃんねる、facebookmixiなど、日本アメリカでは異なるアーキテクチャが受け入れられていく様相

 ・なぜセカンドライフ凋落ニコニコ動画が支持されたのか、電車男のようなPC小説恋空のようなケータイ小説はどのようなリテラシーで読解されているのか。


などなど、ゼロ年代(つまり今となっては少し前の時代)のネット社会を、アーキテクチャ比較によって分析した書である


まだmixiが全盛でfacebook日本には浸透しないのではと言われていた時代の話なので内容的にやや古い部分はあるし、

書内で対立すると言われ比較されているものの中には、その後双方中間地点にそれぞれ着地して今では大差なくなっているものもある。

だが、セカンドライフニコニコ動画比較する視点から出てきている分析はかなり興味深く思える。というのは、その分析2010年代に入ってソーシャルゲームがなぜ受け入れられていったのかの

説明としても改めて追従できる極めて説得力ある答えになっているように思えるからだ。

(セカンドライフは、仮想世界上での場所時間現実そのままに再現した為に、盛り上がる為には仮想空間上を移動してその時間にその場所にいる必要があった。

 ニコニコ動画はそのレイヤーがなく、場所時間関係なくコメをつけられるために時空間を超えて始まりも終わりもない祭りが常に参加できる(視聴してコメをいれられる)状態で延々と続く。

 少なくともその後のソシャゲも同様に場所関係なく祭りに参加している感覚を非同期的に作り出していた。MMORPGも、街からいきなりダンジョンに飛べるなど

 仮想空間上の場所概念の持つ意味が次第に小さくなるような展開に向かってきたように思える。とは言えもちろんSkyrim以降の超広大なマップを持つオープンワールド系のRPGも支持されているが......)。


また、当時のローレンス・レッシグ議論Winnyなどについても分析されている(DRMクリエイティヴコモンズなど)。

これは当時レッシグのCODEが流行ったので、今となっては古びてきた内容の繰り返しに思える一方、

日本で浸透するサービスの多くがなぜ匿名性を持っているのかということについての分析は、興味深いものがあった。