WEB

PHP使わない人がcakePHPを勉強して引っかかった部分

参考として、メモを残しておきます。

たぶん、皆引っかかるところは同じだと思います。

 

ちなみにここを見て勉強していた時に思ったことです。

https://www.tuyano.com/index2?id=4536003

 

■まず、PHPという言語がおかしい

perlもだいぶ変で、ちょっと複雑になると非常に使いにくかったので、五十歩百歩といえばそのとおり。
変態なところ
・TRUE==”0.0″だったりする件。勝手に型変換するので、意図しないものが一致と判断されてしまう。型変換無しで比較するには「===」が必要
・配列と連想配列がごっちゃ。混ぜて使うこともできるという、非常に気持ち悪い仕様。
・配列を代入すると、要素まで全部コピーされる。他の言語では配列って参照渡しなのに。

・オブジェクトを作った後に、クラス内のメソッドhogeをコールする時に「hoge()」とするのがだめ。わざわざ「$this->hoge()」と書かないといけない。なにそれ!?

 

■そもそもフレームワークというものに馴染みがない
プログラミング言語で一からガリガリ書いていくスタイルに馴染んでいるので、フレームワークという概念そのものがなかなか受け入れがたい。
ライブラリを使う場合でも、ライブラリは部品として使っているだけでアプリケーション全体は自分で組んでいた。
しかし、フレームワークとなると、アプリケーション全体がお仕着せになって、その中の一部分だけを書くという行為になる。
発想の転換がだいぶ必要。

 

■composerってなに?
PHPをインストールしてcakephpをインストールするのかと思ったら、PHPをインストールした後はcomposerというパッケージ管理ソフトもどきを入れて、composerからcakephpのプロジェクトを作る形にするらしい。
composerはプロジェクトを作成する時にそのプロジェクトに必要なライブラリ群を勝手に集めてプロジェクトの雛形を作ってくれるソフトウェア。
プロジェクトごとにライブラリをかき集めてくるだけなので、環境を汚さないのはすばらしい。

 

■cakePHPは2系統と3系統がある
言語もバージョンで挙動が変わるように、フレームワークもバージョンで挙動が違う。
特に、2系と3系でだいぶ違うらしい。
フォルダ構成なども変わっているようで、勉強する時にどちらで勉強するべきか悩む。

 

■プロジェクトを作ると勝手にファイルがたくさんできる
自分でファイルを一つ作って、その中にプログラムを書いていく……というオールドスタイルに慣れているため、最初からファイルがたくさんできるので焦る。
実用上、全てのファイルのことを完全に理解する必要はないらしい。
しかし、本能的に「プロジェクトの中にあるファイルは理解しないといけない」と思ってしまうので、最初の時点で気が重くなる。
こういう完璧主義がフレームワーク嫌いの原点かもしれない。

 

■MVCモデルについて
データベースへのアクセスを司るModelクラス
データを制御するControllクラス
画面の表示を司るViewクラス

この3つを組み合わせて一つの画面を作る。
そこまではわかる。
しかし、画面の表示用にデータを集計する処理はどこに書くんだろうか。
Controllに書いても良い気がするし、Viewに書いても良い気がするし、データベースから取ってきたところで処理をするということでModelに書いても良い気がする。
そのへんは作成者が自由に選んで良いのか、それともそういったところまで作法があるのか。
そのへんがよくわからない。

 

追記→
Viewはデフォルトのクラスを使うので、プログラムを書くのはModelかControll。
そしてModelはデータベースの定義的なことしか書かないので、実質的に処理は全てコントロールに書く。
整理できた。

 

■mySQLの設定ではまったこと
Windows環境でMySQLをインストールしてる環境。
そこで、App.phpにDBのhostとして「localhost」という名前を登録してもうまく動かなかった。
「127.0.0.1」と書いて初めてアクセスできた。
なぜ、localhostが通らなかったのか……

 

■autoRenderってなに
自分のコントロールクラスを作って、その中からHTMLコードを吐き出すサンプルプログラムの中で、
「$this->autoRender = false」
という設定をしていた。
なにかと思ったら、これをすると自動描画が無効になるらしい。
これを無効にしないと、ViewやModelを使おうとしてエラーになるらしい。
(このサンプルはコントロールクラスだけしか作っていないので)

 

■URL名(アクション名)が滅茶苦茶気持ち悪い
「HelloController.php」というControllクラスのファイルを置くと、特に設定ファイルの編集など必要なく、
http://127.0.0.1:8765/Hello」
というアドレスでそのコントローラが呼ばれるようになる。
「Hello」というファイルを置いているわけではなく、「HelloController」というファイルを置いているのに、「Hello」というアドレスでアクセスできる気持ち悪さ。
中身の処理的には「リクエストで「/Hello」と来たら後ろに「Controller」を連結してHelloControllerを呼ぼう」とやっているだけで不思議なことはなにもない。
しかし、なにか気持ち悪い。
Controllerクラスの名前が「Hello.php」とかだったらこんな気持ち悪くなかった。

 

■不思議なURL形状
Controllerクラスの中に複数のアクションを定義できる。
例えば、「HelloController」とクラスの中に、「index」アクションと「hoge」アクションと「moge」アクションを作ったとする。
すると、
http://127.0.0.1:8765/Hello/hoge」
http://127.0.0.1:8765/Hello/moge」
http://127.0.0.1:8765/Hello/index」
※↑「http://127.0.0.1:8765/Hello」と同じ
の3つのURLでアクセスできるようになる。
ここまではいい。
クラスの中にアクションという階層構造になっているので、それをディレクトリ構造にマッピングするのも理解できる。

しかし、パラメータのとり方が不思議すぎる。
CGI時代の考え方だと、例えばメールアドレスをパラメータに入れようとすると、
http://127.0.0.1:8765/Hello/moge?mail=hoge@hoge.jp」
とかになりそうなものだ。
しかし、実際は
http://127.0.0.1:8765/Hello/moge/hoge@hoge.jp」
という不思議なとり方をする。
アクション名の後に、ディレクトリの表記でパラメータを書いていく。
複数のパラメータがあるときは
http://127.0.0.1:8765/Hello/moge/パラメータ1/パラメータ2/」
と更に深いディレクトリの表示になる。
URLの表記上綺麗なのはわかるけど、すごく不思議な感覚を覚える。
※なお、URL最後に「/」を入れても入れなくても同じ挙動をする模様。そこらへんはありがたい。

 

■Viewクラスの意味がわかりにくい件
HelloControllerというのを作ったら、ビューとして「HelloView」というクラスを作らないといけないかと思ったのだが、いらないらしい。
コントロールクラスで「index」とか「moge」とかいうアクションを作ったように、ビュークラスでも「index」や「moge」というアクションを作って、その中で表示に必要なコードを書く必要があるような気がする。
しかし、実際にはそんな必要はないようだ。
ビュークラスはデフォルトのビュークラスをそのまま使うだけでよく、継承してカスタマイズをする必要がないらしい。

そして、コントロールから変数を渡してビューの表示内容を変えたい場合でも、
テンプレートファイルの中に変数名を表示するコードを書いておけばいい。
この辺りはデフォルトのビュークラスがやってくれるので、自前のビュークラスを作る必要がない。

「ビュークラスは自前で作る必要がない」というところがポイント。

 

■データベースとの連携
データベースにテーブルを作るときに、複数形の名前にする必要がある。
なんかこれがすごく気持ち悪いんだけど。
例えば「person」というテーブルを作ってはいけなくて、「persons」というテーブルを作る必要がある。
また、テーブルの中の「id」と「name」という項目は特別扱いされている模様。
※「id」プライマリーキーとして認識される。
※「name」レコードのタイトルとして認識される。

その後に、cakephp側では
「cake bake model persons」
と打つと対応するモデルのクラスファイルを生成してくれる。
データベースの情報を読み取って、勝手に「これはテキスト」「これはNULLは駄目」とかバリデーション用のプログラムを勝手に生成する。すごい。

「Person.php」テーブルのレコードに対応するクラス
「PersonsTable.php」テーブルに対応するクラス

 

■フォーム関係
フォーム系は自分で書くのではなく、勝手にフォームのHTMLコードを吐いてくれるメソッドを使う。
何も指定しないとフォームをSUBMITすると現在のURLに再度飛ぶかたちになるし、指定すれば別のURLに飛ぶことも可能。
なお、ページに「直接アクセスした場合」と「フォーム経由でアクセスした場合」の判断は「GET」か「POST」で区別する。
また、ただ単にフォームを作ると、(当たり前だが)各項目が空白である。
フォームを作る際にデータベースから読んだ連想配列を指定すると、各項目にその値が入っているフォームを作れる。
その場合、「_method」というフィールドに「PUT」という文字が代入される。
これにより、Controller側で初期値が空白のフォームから飛んできたか初期値が入ったフォームから飛んできたか判断できる。

 

■データベース関係
personsというテーブルがあるとすると、そのコントロールクラスから
「$a = $this->Persons->find()」
で検索できる。
さらに、条件を数珠つなぎで指定できる。
「$ra = $this->Persons->find()->where([“name like “=>’%hoge%’])->limit(3)」
この形を見ると、find()がデータベースを全部取得して連想配列を返し、その後にフィルターで絞り込んでいるように見えるけど、そうではないらしい。
じつはこの$aの状態ではまだクエリーを作っているだけ。

だから、こんな指定の仕方ができる。

この$raに対して、foreachしたりすると、初めてSQLが発行されてデータベースにアクセスされる模様。

隠蔽されていて優雅と言えば優雅かもしれないが、なんというか非常にわかりにくい。

明示的にSQLアクセスしていないので、理解していないと嵌りそう。

なお、データベースの項目に合わせてメソッドが勝手に作られるといういたれりつくせりな仕様。
例えば、「mail」というフィールドがあると、「findByMail」というメソッドが作られて、それでその項目を文字列一致で検索できる。
ここはすごいよな~

 

■最終的にbake最強
bakeというコマンドがあって、上の方でモデルを生成させているが、実はもっとすごい。
まず、データベースでテーブルを定義しておいて、
「cake bake all テーブル名」
と打つだけで、そのテーブルのCRUD操作(作成・表示・更新・削除)ができる用に
・Controller
・テンプレートファイル(.ctp)
・Model
を作ってくれる。
データベースの設計さえしておけば、そのデータベースを読み書きするためのものが全部出来てしまう。
ここからレイアウトとかいじっていけばいいということなので、物凄く楽。
これはすごいわー。

 

■結論

cakePHPは理解すればなかなか効率がいいフレームワークっぽい。

とくにbake最強すぎる。

データベースの設計さえしてしまえばとりあえず動く物が作れるというのはいい。

ただ、PHPという言語そのものは微妙だよね、という点は変わらず。

 

■メモ

リンクを張った勉強サイトには書いてなかった(or読み飛ばした)けど大事なことについて。

◯データベース

・主キーは「id」である必要がある

・他のテーブルから参照するキーは「~_id」である必要がある。

 

◯名前の対応

※めっちゃややこしい。

・Controller

UserNamesController

・Model

Table:UserNamesTable

Entity:UserName

・データベースのテーブル名

user_names

小説家になろうへのクローリングについて

えー、小説家になろうからいろんな人の小説を集めてきて形態素解析して遊ぼうと計画しています。

しかしそのためにはデータを集めてこないといけなくて、その際にWEBサーバに負担をかけたらいろいろまずいわけです。

・道義的な問題

・訴えられる可能性

・アクセス遮断される

 

運営が不可能というほどのあきらかに攻撃的なアクセスを浴びせないかぎり訴訟はないでしょうが、遮断されるおそれがあります。

それに、なろうのサーバーに負担をかけるのも本意ではありません。

かといって、あまりにのんびりすると巨大なサイトゆえ一生かかってもデータが収集できません。

どの程度のアクセスなら負担にならないかを考えてみよう。

 

http://doda.jp/DodaFront/View/JobSearchDetail/j_jid__3001209434/-tab__jd/

 

ほら、ここでなろうで求人してるじゃろ?

ここに月間14億PVって書いてあるじゃろ。

ってか、全然関係ないけど平均年齢若いな…すげ~本当にベンチャーって感じ。

運営者が若いだろうと思っていたけど、まさかこんなに若いとは。

楽しそうだな~

 

っと、本題に戻ろう。

 

単純に平均してみよう。

月間14億PV。

一日あたり約4666万PV。

一時間あたり約194万PV。

1秒辺り約540PV。

 

なろうのサーバーは秒間540PVに耐えているということになる。

ピークではもっと来るだろうから、たぶん1000PV以上いけるんだろう。

とりあえず安全サイドでみて、540PV/secとする。

ここから考えよう。

 

秒間540アクセスしたらもちろんアウト。

かといって、絶対に大丈夫であろう秒間0.01アクセス(100秒に一回アクセス)なんて絶対終わらない。

どのくらいならいいだろうか・・・

こういうのは明らかな基準がないから困る。

実際サーバー管理者も酷いクローラーで苦労しているところはあるようだ。

 

一旦、自分がサーバー管理者になったと仮定してどれくらいの負荷に目くじらを立てるか考えてみよう。

100%:ログを見た瞬間ブチ切れて怒声を上げるレベル

50%:「マジでふざけんな」とやっぱり切れるレベル

20%:「なんか邪魔だな、こいつ・・・」と切れないけど気になるレベル

10%:「気になるなぁ」

5%:「あ、なんかアクセス頻度高い人がいる。なんだろう」

1%:(埋もれて気がつかない)

 

1%なら大丈夫かな・・・

秒間5アクセスぐらいなら負担にもならないだろうか・・・

なにか弊害があったらやめるけど。

noteでカンパの実験

noteというテキストや画像を有料で公開できるサービスが有ります。

ためしに、カンパ用ページをつくってみました。

中身無いけど、買ってもらえるとカンパが入るというページ。

https://note.mu/nanai/n/n7a3600f4e8d1

 

本当に中身が無いので、試しに作ってみただけ!

昔からいろんな投げ銭サービスあったけど、こういうカンパのやり方もありかなーと。

Amazon Audible(オーディブル) その後

前回の記事では「おもしろいけどイマイチかな~」な印象でしたが、しばらく使ってみて評価が変わりました。

書籍を音声で聞くというのは馴染みがないので最初は正直「色物」と感じましたが、慣れてくるとだんだん「あり」になってきます。

とくにビジネス系とか流しておくといい感じです。

なんとなくさーっと流しておいて、アンテナが立ったところだけ注意深く聞けばいい感じなので、案外と楽です。

 

トータルの労力で行ったら実は本とあまりかわらないかもしれません。

なにしろ、本なら音声より早いし、読む速度も自由です。

そんなわけで、本のメリットは当然有ります。

 

しかし、とにかく「手につけやすい」というのがあります。

本を読もうと思った時に気力がないと読み進める気がしませんが、音声ならとりあえずスタートボタン押すだけです。

注意力散漫で聞いていても、興味がある部分があると気力が湧いてきてそれなりに頭に入ってきます。

 

理想の形は「音声」+「実書籍」かもしれません。

とりあえず音声でさーっとどんな感じか聴いておく。

そして気になった章だけ本でしっかり読む。

やっぱり何度か読み返さないと「腑に落ちない」部分はあるので、音声だとそれがきついです。

「え? なに? どういうこと?」と思っても通り過ぎちゃうので。

 

ということで、Amazon、本を買ったらMP3も無料で配信してくれ!!

それを期待するぜ!!

まぁ、Audibleが月額480円とかならそれでもいいんだけどさ。

Amazon Audible(オーディブル) 感想

クレジットカード問題が解決し、早速オーディブルでなんか聞いてみることにしました。

バーっと流し見してみて、古典として有名な「時をかける少女」を見つけたのでそれを聞いてみることにしました。

今まで原作を読んだこともなければ映像作品を見たこともないので、これはちょうどいい機会。

 

対象:時をかける少女(1)~(4) ナレーター:乙葉しおり

 

・音質

全く問題なし

非常にクリアで聴きやすい

 

・声

セリフ部分を控えめに演技している程度で基本的に朗読という感じで落ち着いて聞いていられる。

大きな音がして驚かされたり、せわしなかったり、といったことは一切ない。

人物ごとに声色は変えているけど、ドラマみたいな演技ではない。

なんといえばいいのだろうか……

あえて表現すると、

ドラマ:「な、なんだってぇーーーーーーーー!?」

朗読:「な、なんだって?」

位な感じ。

声の調子を極端に変えたり、叫んだり、ということはなく、焦っている様子を表現しつつも控えめに語っている。

 

・再生速度

嬉しいことに再生速度を変えられる。

x0.5

x1

x1.25

x1.5

x2

x3

が選べる。

基本的に朗読は少しゆっくり目ぐらいなので速度上げても十分聞き取れる。

(落語とかがっつり演技している系の物では間が崩れるのでやめたほうがいいと思うけど。)

ただ、手元のF-06Eではx2ぐらいまでは普通に上ったけど、x3にしてもx2とほとんど変化なし。

ソフトの問題か端末のCPUの限界かは不明。

 

・総評

とまぁ、こんな感じで、特に不満なく計4時間近い朗読を聴き終えました。

「なるほどーこういう話だったのかー」という小説を読んだ時のようないつもの満足感がありました。

小説を「読む」のと「聞く」では感覚がもっと違うものかと思いましたが、自分に限っては意外と「近い感覚」でした。

これなら読む代わりに聞いてもいいかなと思いました。

 

あと、ながら作業ができるのが魅力です。

当然ですが小説読みながら別のこととかできません。

でも、「聞く」であればお皿洗ったりゴミ片付けたりとか、頭を使わない作業が普通にできます。

これはすごい利点だと思いました。

 

ということで、案外実用的だなと思います。

ただ月額1500円は正直高い。

たぶんそこまでヘビーユースしない。

 

・今後に向けて

やっぱり、品揃えかなー。

小説やビジネス書を”聴ける” Amazon Audible(オーディブル)を試そうとした

そしたら、「ご登録いただいたクレジットカードの認証に失敗しました。カード情報をご確認ください。もしくは別のクレジットカードを支払カードとしてご選択ください。」と言われました。

 

え……

 

あ、あぁ、そうか。

アマゾンに登録されているクレジットカードが古かったんだ。

(普段amatenでギフトカードを買って買い物しているので、登録しているクレジットカードを使用していない)

 

ということで、アマゾンにログインしてクレジットカード(au wallet)を登録。

しかし、 オーディブルに入ると未だにエラーメッセージが出ている。

 

もしかして、au walletカードが駄目なのか?

プリペイド式のカードだからたまに使えないサービスあるんだよなぁ。

しかたない、ライフカードも登録しよう。

 

しかし、オーディブルに入るとまだエラーが出てくる。

 

うーん……

 

「audible クレジットカード エラー」で検索してみると、「Audibleをもうちょっと、まじめにダウンロードしてみます

」という記事を発見。

「数時間でエラー消えるよ」みたいなことが書いてあった。

 

そうか待ってみるか。

……あれ、変化がない。

 

ここまで来て、改めてaudibleのサイトのメニューに気がついた。

「アカウントサービス」

 

え、なんでここにアカウントサービスなんて項目があるの?

Amazonのアカウントサービスと管理が別なの!?

 

開いてみると、amazonアカウントで追加登録したクレジットカードが表示され、選択できるようになっていました。

せめて、エラーメッセージをクリックしたらここに飛ぶようになっていればわかったのになぁ……

 

だいぶ遠回りしましたが、これでようやく認識され……

 

……あれ?

 

アカウントサービスでau walletカードを選択してリロードしても、再ログインしてもエラーが消えない。

ためしにライフカードにしてもやっぱりエラーが消えない。

 

えーと、どうしろと……?

 

とりあえず、一晩放っておくことにします。

すぐに認識してよ……

 

◇追記

十分ぐらい待ったら認識されました。

カード登録を変更した時に「30分以内に認識されます」とか一言メッセージを表示してくれればこんなにストレスたまらなかったんだけど。

「利用者に必要な情報を与える」ことがどれだけ大事かということを認識しました。

個人でオンライン販売するときの最低価格について

個人で電子ファイル(画像・文章)を売りたいなぁと思った時、「大作を売りたい」という人と「ちょっとしたものを売りたい」という人がいると思う。
あるいは「手間がかかったものとちょっとしたものの両方売りたい」という人もいると思う。

電子ファイルを販売できるサービスはたくさんあって、どこも手数料は1割+数十円ととても安い。
(リアルでクレジットカード決済サービスなんて頼んだらどれだけするか)
なので、それなりに手にかかったものを数百円~数千円で売るなら全く困ることはないと思う。

問題はちょっとしたものを売りたいとき。
「儲からないのは分かっているが、ためしに50円で売ってみたい!とにかく売りたい!」とか。
しかし、実はそういう小額決済は難しい模様。

Gumroadでは最低価格99円。
Dlmarketでは最低価格200円。(コインで買うとか選べばもっと低額も選べるけど、使い切らないかもしれないプリペイドポイント買うのはみんな嫌がると思う)

まぁ、数十円しかお金取れないものを売るのが間違いなのかもしれない。
特に、クレジットカード番号を入れる手間とか考えると、ネットで50円の物を買うのはリアルで50円の物を買うよりも面倒くさい。

うーん、やっぱり百円以上で売るしか無いのかな。

Google AdwordsとTwitterアカウント凍結の続報

○Twitter
申請したけど、未だ回答なし。
直るかなぁ……特に悪いことした覚えないんだけど。

○Google Adwords
そうとう昔にちょっとだけ使ったことあるAdwords。
重大な違反が~という大げさな状況になっています。
なんで?と質問メールを出してみたところ、こんな回答が。

 

*** このメールはシステムによって生成されました。ご返信いただいてもお答えできませんのでご了承ください。***

お客様のアカウントを審査しましたところ、当アカウントまたは関連アカウントで AdWords 広告掲載のポリシー違反が見つかったため、残念ながらお客様のアカウントは強制停止されました。今後、Google に広告を掲載していただくことはできません。

AdWords アカウントのご利用に関する条件については、次の URL に掲載されている AdWords 利用規約をご覧ください。
https://adwords.google.co.jp/select/tsandcsfinder

なお、アカウントに前払い残高が残っている場合は、いつでも払い戻しを請求していただけます。手順については次の URL をご覧ください。
http://support.google.com/adwords/bin/answer.py?hl=ja&answer=1703646

Google の利用規約をすべて満たしているという確信があり、申し立てをご希望の場合は、次のフォームをご利用ください。
https://support.google.com/adwords/contact/pf_suspended

Google の利用規約にご同意いただけない場合は、お客様のリクエストを処理できませんのでご了承ください。

何卒ご理解とご協力をお願い申し上げます。

今後ともよろしくお願い申し上げます。
Google AdWords チーム

あの……中身言ってくれないとわからないんですけど。
なにこの応対! プンスカ
そもそも最近広告なんてだしてないので、すごく納得いきません。
考えられるのは昔登録した広告(今は止めてある)のURLが消えたWEBサイトを指していることぐらい。
後はクレカの期限切れ。
今のところ使う予定はないんですが、気持ち悪いので何とかしたいと思います。
Googleの他のサービスにもなにか悪影響出ると嫌だし。

さらに続報

○Twitter

ご連絡ありがとうございます。

以下の行為はTwitterルールに違反します。

ユースケースを重複し、連続して複数のアカウントを作成する
ツイートやリンクを複数のアカウントに投稿する
特に自動化されたアプリやツールで過剰にフォローする

このような理由からお客様のアカウントは、今後も凍結されます。

Twitterルール (https://support.twitter.com/articles/253501-twitter)、自動化に関するルールと留意点 (http://support.twitter.com/entries/76915) 、フォローに関するルールと留意点 (https://support.twitter.com/articles/251786-) をご覧ください。

よろしくお願いいたします。

Twitter サポートチーム
http://support.twitter.com
@TwitterHelpJP

なんでやん……
連続して複数のアカウントなんてつくってないし。
昔作ったアカウントはあるけど、小説とは全然関係ないからユースケース違うし。
それから、複数のアカウントに投稿してないし。
アプリやツールでフォローとかしてないし。

違反している要素がないんですが……

なんかもう非常に面倒くさくなってきた。
ええい、ツイッターなんぞやめてしまおうか……

○さらにさらに続報(Twitter)
Twitterに「そんなことやってない」とメール出したんですが、同じメールが返ってきました。
あーあ……
きっと、山ほど凍結していて個別に細かな対応できないのでしょう。
ルールにひっかかったアカウントを自動ツールでどんどん凍結することは出来ても、個別に人間が対応する余裕が無いのでしょう。
もう……だめだこりゃ。残念。
らちがあかないので諦めます。
このTwitterアカウントに紐付けたGumroadも退会する必要があります。
後でやらなきゃ……面倒くさい。

○さらにさらに続報(google adwords)
こちらはよいニュース。
「そんな不正してないよ」と事情を説明する連絡をしたら停止が解除されました。
よかった……

なぜかTwitterアカウントが凍結された! なんでや!

Twitterアカウント、別にスパムを打った覚えもないし、他人のなりすましをやった覚えもない。
しかしなぜか凍結されている。
表示したらいきなり「凍結」とか表示されて心臓に悪かった……
身に覚えがないのに唐突に警告を受けるのって結構びくっとくる。

とりあえず可能性として考えられるのは、記事のURL連投だろうか……
最近、あんまりツイートせずにブログばかり書いていた。
そしてブログの記事書くと「記事を書いた」と自動でツイートされる設定になっている。
結果として、ここ最近は記事のURLばかりがツイートされる状態だった。
それがスパムとして誤認されたのかもしれない。

なんというか……ツイッターも随分とうるさくなったなぁ……
昔違うアカウントでやっていたときは、ツイッターってもっとなんでもありなゆるやかな空間だった気がするんだけど。

【いまさら】ファイル販売できる小額決済サービス「Gumroad」を使ってみた

一時期ネットで話題になったGumroadをなんとなく使いたくなった。
しかし、売るものがない!
とりあえず登録すればいいや、ということで手元のちょっと気に入っている写真を置いてみた。

ツイッターのアカウントで登録し、画像をアップしてタイトルを入れて値段を決めるだけ。
今、自分が製本した本を売っている「DLmarket」だと200円以上でないとクレジットカードを使えない。
それ以下だとプリペイドのポイントを買わないといけなくなるので、実質最低価格は200円になる。
Gumroadだとクレジットカードを使いながらも最低価格は99円から可能。
その点でGumroadの方が上!
(DLMarketみたいなショップ形式じゃないので、ちょっと買いにくい雰囲気はあるかも)

そして、最低価格の99円を入れて「Publish」ボタンを押すだけ。
とっても簡単。
実際には売り上げを受け取るには、そのための設定とかは必要なんだけど、売り始めるだけなら恐ろしく簡単。

後はGumroadの中からURLをツイートしたり、ウィジェットのURLを取得できる。
ちなみに、ウィジェットを配置するとこんな感じです。

「I want this」をクリックすると、いきなり「クレジットカード番号入れて下さい」画面に飛ぶ。
この唐突さは「さすが海外」という感じ。
日本サイトだともうちょっと説明とかあるよね。

中身は、一眼レフで撮った近所で撮った電柱と青空の写真。
空と地上のものって明るさの差が激しいので、意外と上手く取れない。
大概「空は綺麗だがそれ以外は真っ暗」または「地上のものはまぁまぁとれているが、空が真っ白」になりがち。
一眼レフのほうが普通のデジカメより撮影できる明暗差が大きいので多少はマシなんだけど、それでも「イマイチ」が多い。
これはなぜか割りとマシに撮れた写真。
JPG撮って出し(無編集状態)でも電柱が真っ黒にならずきちんと細部まで見える。
ナイス!

……こういう写真が好きな人は自分くらいな気がするけど。
一生の間に一枚ぐらいは売れるかなぁ……