はてなキーワード: エディタとは
Webサービスやアプリをつくって公開するのが好き。またブログもよく書く。その為、非プログラマーの人達にもよく知られているので”スーパープログラマー”のような評価で持ち上げられがちだが、プログラマーたちの評価はそれほど高くなくそのギャップに悩んでいる。よく起業する。
自分が使っているプログラミング言語(やエディタ)のライブラリを作って公開するのが好き。プログラミング活動が自己実現に直結したエコシステムも持っている。勉強会やオフ会によく行くので友達も多く、望んだ職場に出会えることが多い。延々とtwitter をやっている
大企業の製品の開発現場に生息する。業務の為に必要なプログラミングを学習したので目的に特化したスキルをもっている。その反面、自主的な学習意欲は少く体系的な知識がないので潰しがきかない。プログラミング以外が好き
todesking
レジストリを起動する
レジストリの内容を参照/編集するには[スタート]ボタンをクリックして検索ボックスに「regedit」と入力
HKEY_CLASSES_ROOT\Applications\********.exeまでいく (applicationという似た名前があるので混同に注意)
(規定)を右クリック
その後再起動する
パーティション分割してファイルをDドライブに移動させたりすると関連付けできなくなる。
http://menushowdelay.blog13.fc2.com/blog-entry-302.html
関連付けを設定できません
以前は問題なく動作していたアプリケーションなのですが、ファイルを右クリックから、このアプリケーションで開くことだけができなくなりました。
アプリケーションを開いた後で、ファイルをウインドウ内にドラッグ&ドロップすることならできます。
ファイルを右クリック→プロパティ→全般→プログラム:変更→ファイルを開くプログラムの選択→参照→プログラムから開く
で実行ファイルを選択することで、普通は「ファイルを開くプログラムの選択」ダイアログに戻って一覧に選んだプログラムが表示されるはずなのですが、このプログラムだけが表示されなくて困ってます。
ひょっとして、導入後にフォルダごと移動したりしませんでしたか?
レジストリを一切いじらずにインストールが可能なアプリケーションでも、実はこの「プログラムから開く」の「プログラムの選択」で参照してしまった場合、Windows2000/XPでは
HKEY_USERS\(ユーザー識別子)\Software\Classes\Applications
以下に登録されます。別の見方をすると、こうして登録された後で「レジストリを一切いじらないアプリだから」 という理由でフォルダごとどこかに移動したり、フォルダ名をリネームしてしまうと、先のレジストリの記述に不整合が発生し、以降はその不整合を直接編集によって書き換えたり値のデータを削除したりしない限り、永遠にそのプログラムで開くことができなくなるという不具合を生みます。「ファイルを開くプログラムの選択」ダイアログの「参照」ボタンをたどって移動先やリネーム後のアプリケーションを指定しても、エントリは正常に書き換えられることはありません。直接編集以外に道はないのです。
「スタート」ボタン→「ファイル名を指定して実行」→ regedit と半角で入力してEnterキーを押下します。
HKEY_USERS\(ユーザー識別子)\Software\Classes\Applications
以下に該当アプリケーション名のキーが存在したら、とりあえずバックアップをとってからキーを丸ごと削除します。
バックアップとその書き戻しについてですが、今回の事象の場合はreg saveコマンドを利用する必要はなく、該当キーを選択した状態で、右クリック→エクスポートを選択し、名前は適当に「aaa.reg」とでもつけて、デスクトップあたりにでも保存すればよろしいかと思われます。
該当キーを削除しても、OSが起動しなくなったり、デスクトップ画面までたどり着かないようなことは一切ありません。
HKEY_CLASSES_ROOT\Applications\********.exe
だったという例あり。併せて確認されたし。
Google Readerをリスト表示で使っており、タイトルの先頭にPRとかADとか入ってるエントリを見えなくしたい人。
次のGreasemonkeyを使用する。まずはグリモン本体と右記をインストール。Google Reader Remove Ads for Greasemonkey
このままではエラーが出て動かないのでスクリプトを修正する。修正するにはFirefoxの右上にある猿(Greasemonkey)のアイコンの右にある下矢印をクリック→「ユーザスクリプトの管理」をクリック→「Google Reader Remove Ads」の「設定」をクリック→「このユーザスクリプトを編集します」をクリックするとエディタで「Google Reader Remove Ads」のスクリプトが表示されるのでそれを編集する。
以下に修正点を示す。個々の修正点のタイトルはその行が何行目にあるかを示している。
なおこの修正では、Google Reader Remove Adsの機能の内切り捨てているものもある。そのことをご了承の上、お使いいただきたい。
var title_anc = div.getElementsByClassName('entry-title-link')[0];
to
var title_anc = div.getElementsByClassName('entry-title')[0];
if (title_anc.text.search(title_prefixes[i]) == 0) {
to
if (title_anc.textContent.search(title_prefixes[i]) == 0) {
var msg = 'Hide "' + title_anc.text + '(' + title_anc.href + ')"';
to
var msg = 'Hide "' + title_anc.textContent;// + '(' + title_anc.href + ')"';
check_body(divs.snapshotItem(i));
to
//check_body(divs.snapshotItem(i));
以下を全てGoogle Reader上で行いたい。
タイトルをクリックしたら自動的に全文を取得して表示して欲しい。以下の設定を行うと出来る。
ブコメが表示されないので、これを直したい。
id:northappleさんが「googleリーダー内ではてなブックマークのコメントを参照したいで.. - 人力検索はてな」という質問の回答及びコメント欄でこれを直す方法を教えてくれている。よって、その通りに変更すると直る。2ヶ所置換が必要。
以下、Google Reader plus Hatenaの変更点です。変更するには、Firefoxの右上にある猿(Greasemonkey)のアイコンの右にある下矢印をクリック→「ユーザスクリプトの管理」をクリック→「Google Reader plus Hatena」の「設定」をクリック→「このユーザスクリプトを編集します」をクリックするとエディタで「Google Reader plus Hatena」のスクリプトが表示されるのでそれを編集する。
62行目
mySpan.innerHTML = '<a href="http://b.hatena.ne.jp/entry/'+url+'" onClick="window.open(this.href,\'\',\'status=yes,scrollbars=yes,directories=yes,menubar=yes,resizable=yes,toolbar=yes\'); return false;" ><img src="'+ BookmarkImageURL +'" /></a>';
を、
mySpan.innerHTML = '<a href="http://b.hatena.ne.jp/my/add.confirm?url='+url+'"><img src="'+ BookmarkImageURL +'" /></a>';
に変更。これで「○○ users」をクリックすると、目的のウィンドウが開くようになる。
147行目
var t = bookmark.timestamp.split(" ")[0].split("/");
を、
var t = bookmark.timestamp;
に変更。
156行目、
html += "<li><span class=\"__hatena_bookmark_anywhere_timestamp\">"+escapeHTML(t[0])+"年"+escapeHTML(t[1])+"月"+escapeHTML(t[2])+"日</span><img src=\"http://www.hatena.ne.jp/users/"+escapeHTML(bookmark.user.substring(0,2))+"/"+bookmark.user+"/profile_s.gif\" width=\"16\" height=\"16\"><a href=\"http://b.hatena.ne.jp/"+escapeHTML(bookmark.user)+"/"+escapeHTML(t.join(""))+"\" class=\"hatena_bookmark_anywhere_user\">"+escapeHTML(bookmark.user)+"</a><span class=\"hatena_bookmark_anywhere_tags\">"+tags.join(", ")+"</span>"+escapeHTML(bookmark.comment)+"</li>";
を、
html += "<li><span class=\"__hatena_bookmark_anywhere_timestamp\">"+escapeHTML(t.slice(2,-3))+"</span><img src=\"http://www.hatena.ne.jp/users/"+escapeHTML(bookmark.user.substring(0,2))+"/"+bookmark.user+"/profile_s.gif\" width=\"16\" height=\"16\"><a href=\"http://b.hatena.ne.jp/"+escapeHTML(bookmark.user)+"/"+escapeHTML(t.split(" ")[0].split("/").join(""))+"#bookmark-"+escapeHTML(json.eid)+"\" class=\"hatena_bookmark_anywhere_user\">"+escapeHTML(bookmark.user)+"</a><span class=\"hatena_bookmark_anywhere_tags\">"+tags.join(", ")+"</span>"+escapeHTML(bookmark.comment)+"</li>";
に変更。
# ブコメのはてなスターを取得しやすいように、ブコメのリンクもブコメのパーマリンクへ変更してあります。
を、
var evt = document.createEvent( "MouseEvents" ); evt.initEvent( "click", false, true ); createSpan.dispatchEvent( evt );
に変更。(「 JavaScriptの動かないコード (中級編) clickイベントを強制的に発生させたい (fireEvent/createEventの使い方) - 主に言語とシステム開発に関して」を参考にさせて頂きました。)
出来た。けど、めちゃくちゃソースが汚いので、差分として公開するのが難しい。ごめんなさい。
これを見て思ったんだが、そろそろviのなんとかモードという考え方を止めた方がいいのではないか。
vi系エディタの初学者がつまづく最大のポイントは、起動してそのままでは文字列が入力できない、という所だろう。そこで教える方は「最初は通常モードだから字が出てこないんだよー。挿入モードにすれば打てるようになるよー」とやるわけだけど、「aを押すと文字が入力できるようになる。打ち終わったらエスケープキー押しなさい」とでも言っておいたほうがいいのではないか。
というのは、このいわゆる挿入モードは、たとえば書いた文字を消すことができない。通常モードが非常に強力なのに対して、挿入モードの機能はは貧弱そのものであるのは、vi系エディタユーザー諸兄諸姉のあまねく知るところであろう。これだけ差のあるものをモードという二項対立を前提とする概念を用いて理解する必要が本当にあるのか。
おれは昔電算の授業でviの使い方を教えたことがあるが「えーと打ち間違ったからエスケープキー押して通常モードにしてxで一文字消してi押して挿入モードに戻して」なんて説明されてすんなり理解できるのはかなりの超人だぞ。だいたい教える方だってこのての編集作業は体が勝手にやってるだけで頭で考えてるわけじゃないしさ。
…とここまで書いて思ったが、そもそもviの学習をプログラミングと絡めて行うのがよくなかったのかもしれない。環境設定ファイルの編集から始めたほうが敷居が低い気がする。行ジャンプとか文字列の検索置換とかコピペのやり方をやって、最後に文字入力の方法を教えるの。これができれば免許皆伝です、とか言って。
よこから失礼。
As3なら無料のFlashDevelopで十分だよ。純正品より使える。FlexSDKも無料だから、実質無料でコンパイル環境は整う。
Adobeのやつも買ったがFlashDevelopのほうがいい。
あと、HTML5 vs Flash とかいってるけどさ、ちょっとWEBにも動きがほしいよねレベルのFlashはどうせ消えるでしょ。HTMLコーダーが食えてた時代が終わったみたいなもの。だいたい情報系の言語スキルなんて5年も持たないって。
ばかでもつかえるエディターが出ればすぐ終わるよそんなもの。HTML5もそう。
生半可な人がそこに活路をもとめて漕ぎ出したところでエディターが出るまでの寸暇のアドバンテージもない。
そんな範囲のことが飯の種になるわけないじゃなぃぃ?
誰かがつくったものを真似して、誰でもできるようなことになっちゃったら制作単価下って食い合いになって終わりさ。
Airアプリでも書けって。だいたいHTML5と比較するのにFlash語るのにAir含めないってどうかしてるよ。
ただFlexで書くならフルスクラッチでゴリゴリ書けるひとじゃないと何もできないから、組み合わせるだけのプログラミングしかできない人はまだお呼びでないだけ。しかもScriptなのにコンパイルだからネット上でナレッジシェアされないしね。
FlexはActiveXやAppletと比較するべきで、プラットホームのHTMLと比較すんのはどうなのかなと思うよ。
あと、おまえらSilverLight馬鹿にしてるけど、日本にはこれが使えるエンジニアほとんどいから結構需要あるんだぜ?
MS以外の某大手もプッシュしている。
つまり、何がいいたいかっていうと、どんな言語、ツール使おうが、その上位10%にでも食い込んでりゃ食えるよ。
というかプログラミングの上位で食ってる人が特定の言語が使えないなんてことはないよね。
もしそう思ってるんだったら、後から来たのに悠々と追いぬかれるよ。
環境のせいにしてちゃ伸びないんだぜ。
いまいるところでまず嚢中の錐になってくだせぇ。
| 日記途中だけど緊急事態><、一番下まで呼んで誰か助けてください>< | |
|---|---|
今日から夏休みが始まったのでプログラミングを勉強しようと思う。
3日坊主にならないようにがんばる。
去年の二の舞にならないようにモチベを維持するために日記を書く。
プログラミングができたらかっこいい!
サークルも友達もいなくさびしい夏休みを有意義にしようとするため
都内の大学に通う2年生。
前述のとおりサークルもやってない、友達もいない、典型的なインドアオタク。
でも顔はイケメン。
プログラミングは3年前にJavascriptとHTMLをネトゲでの戦いを整形するために覚えた程度。ほとんど忘れてる。
C言語を大学で習ったが「苦しんで覚えるC言語」というサイトにのっている範囲しかやってない。
一応プログラミングの知識は少しはある。
やっぱり、目標はあったほうがいい。
うーん、やっぱり完全に一致みたいな情報網羅サイトを作ってみようと思う。
色々な技術が手に入りそうだし。
色々な言語も学べそう
| どんなサイトにするか? | 大規模情報サイト |
|---|---|
| 学ぶ言語 | HTML,PHP,Ruby,Javascript,CSS |
とりあえずプログラミングにはエディタとアップロードするやつが必要なので色々いれてみた。
| エディタ | |
|---|---|
| Netbeans | 重い、すごく重い |
| phpエディタ | phpしか編集できない |
| terapad | 色分けが出来ない |
| K2Editor | これが一番最強。でもphpに対応してない |
| HIDEMARU4000YEN | win7じゃ使えなかった。 |
| アップするやつ | |
| FileZilla | 使いづらい、糞 |
| ALFTP | これが一番しっくりきた |
というわけで色々悩んだ結果、基本K2Editor、php編集はNetbeans,アップロードはALFTPにした。
phpとhtmlとrubyやjavascript対応してて色分けも出来るwin7で動くエディタないのが残念
実は1ヶ月前にプログラミングを勉強しようと思ってサーバーは借りてた。
ググったり、2chに質問したりして悩んで悩んでロリポップのチカッパプランを借りる事にした。
http://lolipop.jp/service/plan-chicappa/
| 初期費用 | ¥1,575 |
| 料金(6ヶ月) | ¥3,150 |
| (1ヶ月あたり) | ¥525 |
| 合計金額 | ¥4,725 |
しかしながら無料のレンタルさばより色々といじれて、なにより「お金はもう払った、使わないともったいない」という意識を持つ事でだらけないで出来ると思う。
まず師匠の日記をみてみる。HTMLとCSSからはじめたと書いてあるが、多分これからはじめると飽きる。
なのでWebの情報を自動で集めてくれる(これをスクレイピングという)BOTを作ろうと思う。
日記を読むとMechaniseというのを使ってるらしい。
そうするとRuby jamというもので動いているものらしく、Ruby jamはRubyで動いている。
Rubyは鯖にはいっているがどうやらjamのほうははいっていないらしくMechaniseもはいっていない。ということで
ロリポップの解説ページをみてPuTTyていうのをいれてSSH操作ってやつをしてた。
http://d.hatna.ne.jp/taramonera/20100601/1275388515
このページをみながらやってたら
% vi ~/.cshrc
これを実行して
setenv RUBYLIB /home/アカウント名/lib
setenv GEM_HOME /home/アカウント名/lib/rubygems
:wqで保存終了らしいんだけど、入力したところで終われない><
教えて得ろい人><
http://anond.hatelabo.jp/20110707195830
初音ミクLAライブ、外国人の感想その5。これまで紹介した感想は「ヴァーチャル・アイドルとしての初音ミク」を論じていたが、今回はミクの本来の姿、即ち「歌声合成ソフトとしての初音ミク」に注目しているのが特徴だ。また外国における歌声合成ソフトの将来性についてかなり厳しい見方をしているが、その指摘には耳を傾けるべきところも多い。初音ミクの海外進出に関する先行きを占ううえでも目を通しておく価値はあるだろう。
urlは以下の通り。
http://lelangiric.wordpress.com/2011/07/07/i-didnt-go-to-ax-but-yeah-anyway/
ミクのイベント後にはいつもヴァーチャルスターの構成要素は何かって議論が巻き起こる。クラウドソースな人格か? touhou[東方]っぽさ? オリジナルのないdoujin[同人]? それともインターネットとDTMの力に関するフリードマン風の熱狂か?
確かに日本じゃ大うけだが、アメリカではこれからどう成長するんだ? オレは英語のVocaloid3が発売されるのを待っている。いいものであってほしい。アメリカでのボーカロイドの発展には英語Vocaloid3の性能が極めて重要なんだ。けどな、アニメ産業とボーカロイドとの結びつきについては、オレは戸惑っている。つまりAXがミクノポリス会場になったことにな。今後も長期にわたって、アメリカではボカロオンリーのイベントはないだろう。アメリカに拠点を置く企業製のボーカロイドすら未だにない。オレが知っている[英語ボカロの]2つの会社はPower FX(スウェーデン)とZero-G(英国)だ。
でもな、そこでオレは考えてみたんだ。
ボーカロイドはvst[ヴァーチャル・スタジオ・テクノロジー](とかその他のapi[アプリケーションプログラミングインタフェース])といくつかの重要で理論的な方法は似ているんだが、極めて重要な具体的手法は根本的に違っている、とオレは理解している。基本的に(ある人間の)音声ソースを取ってきてあらゆる音素と音程を録音し、ボイスバンクを作った後で、ヤマハのVocaloid2プログラムがボイスバンクを「読む」ことができるようアプリケーションをコードする必要がある。オレはヤマハがこの部分で相当用心していると思っている。なぜなら公式のボーカロイドは(もしオレが間違っているなら訂正してほしいが)全部ヤマハのVocaloid2エディターと一緒に販売されているからだ。この意味でvstとは根本的な差異が存在する。(1)vstは通常daw[デジタル・オーディオ・ワークステーション]と一緒に流通することはない(2)vstの開発者であるスタインバーグは、vstプラグインを規格として作成しており、従って誰もがvstプラグインを作り出せる。
http://en.wikipedia.org/wiki/Virtual_Studio_Technology
http://en.wikipedia.org/wiki/Digital_Audio_Workstation
http://en.wikipedia.org/wiki/Steinberg
つまり、誰もがボイスバンクを作れるってことだ。UTAU現象がそれを示している。UTAUは違うソフトで動くボーカロイドの単なる「代替手段」(本当の意味でではないがオレは耐えられる)のフリーウエアに過ぎない。自家製ボーカロイドが登場するには(『ファンの作ったボーカロイド』はあるが、本物の商業ベースのボーカロイドとは違う)2つの条件を満たさなければならない。ある団体が充分な資本を集めて(1)高品質のボイスバンクを作成し(2)ヤマハからそのVocaloidエディターを頒布する許諾を得ることが必要なんだ。既に言った通り、紛らわしいのはボイスバンクをプログラムに「読ませる」ためのアプリをヤマハとサードパーティのどっちがコードしているのかってこと。思うに、もしおれがAXの会場にいてこの質問をしていたら、特にヤマハからVocaloid2の許諾を得るのにいくらかかるかを聞いていたら、オレは殺されていただろうな。日本のdoujin歌手を使えば高品質なボーカルを作るのはそんなに難しくないだろう。必要なのはインターフェイスと集音マイク。ダチを作ってそいつらに作業をさせる。そしてUTAUのファンダム全体を見れば分かるが、自分自身を体現したボイスバンクを作ろうとするモチベーションの持ち主は山ほどいるぜ。
http://utau.wikia.com/wiki/UTAU_wiki
オレが何を言おうとしているか分かるだろう。つまり、アメリカ製のインディー・ボーカロイド・スタジオの実現性ってのはどのくらいあるんだ?
少なくとももっと注意深く考え抜く必要がある4つの条件があると思う。
1. アメリカのアニメ業界とボーカロイドの関係。オレが思うに、ブランドイメージと、それからボーカロイドとアニメを結び付けているメーンストリームの連中のことを考えれば、こいつは最も重要な問題だ。「アニメ」はアメリカでその「あるべきもの」(つまりdirty japanese hentai shit)より遥かに大きな概念/カテゴリーになるべきだ。でもまあオレが見てきた限り、日本のボーカロイドにも同じ混同の問題があるようだけどな。とにかく、メーンストリームが一般的にアニメをどう見ているかがボーカロイド関連商品の売れ行きに影響するってことなんだが、この問題はオレには重過ぎる。omoやalexが考えてくれんじゃねーの、多分。
http://twitter.com/#!/alexleavitt
2. 誰か英語ボーカロイド使ってるヤツいる? 西洋ボーカロイドファンダム総体の認識として、1人だけすげえアメリカ野郎がいて、そいつがボーカロイドランキング(ニコニコのやつで毎週ボーカロイドの歌/動画をコメント/再生数/マイリストに従ってランク付けしている)に[英語ボカロを]ぶち込んだことがあった。でもそいつは突然自分の動画を全削除しちまった。この一度こっきりの出来事を除けば、ボーカロイドは完全に日本のものだ。他にも英語が母国語の作り手はいるんだが、皮肉なことに英語話者のボーカロイド製作者が基礎を置く発生核となりそうな連中の大部分は、日本語ボーカロイドにengrishをしゃべらせようとしている有様だ(大笑い)。
この問題にはさらに深い根がある。
3. そんな真面目な議論じゃないんだが、ある文化の労働的な基底はどうして特定の製品に同調し他の製品には抵抗するのかについて話がなされている。歴史的かつ社会経済的な問いだ。どうしてチリは銅を掘っているのか? なぜならそれがくそったれなほど沢山あるからだ。結果として採鉱は(おそらく)経済的な基盤が上部構造へと波及していくのと同じように(違うか?)文化的な行為となる。なぜアメリカは基底からやって来る沢山のボーカロイド曲を持っていないのか? その理由はもう挙げているな……(1)なぜならdirty anime hentaiだから(2)アメリカにいるデスクトップミュージック人種はテレビゲームと映像作品に集中してやがるから。
http://www.imdb.com/title/tt0132477/
http://en.wikipedia.org/wiki/Base_and_superstructure
4. 2番目に上げたデスクトップミュージックの問題は重要だぜ。もしお前が独立した作曲家としてメシを食っていきたいのなら、お前の時間と貴重な音楽的アイデアをボーカロイドのように不安で子供じみた音に賭けてみようなんて考えは二度と起こさないだろう。そいつは正直、新しすぎる。西洋諸国は上出来なデスクトップミュージックを作っている。問題は、ボーカロイドは今も、そしておそらくは長期にわたって、もしかしたら決して、独立したアーティストにとって頼れる収入源にはならないってこと。たとえそれで生計を立てる気がないとしてもだ。アメリカでボーカロイドは、他のデジタル関連のインディー業界のように花開くことはできるのか? アメリカのボーカロイドが日本のdoujin業界のようになるにはどうしたらいいんだ?
http://anond.hatelabo.jp/20110707195830
初音ミクLAライブ、外国人感想その2「再生の約束」フリーダム訳
http://anond.hatelabo.jp/20110708223459
初音ミクLAライブ、外国人感想その3「ミクノポリスのボカレタリアートたちよ、団結せよ!」
http://anond.hatelabo.jp/20110709211718
初音ミクLAライブ、外国人感想その4「仮想の歌姫:初音ミクの人気と未来の音色」
http://anond.hatelabo.jp/20110710234300
初音ミクLAライブ、外国人感想その6「ミクノポリス:7月のクリスマスと世界征服」
http://anond.hatelabo.jp/20110712205546
初音ミクLAライブ、外国人感想その7「AX11:ミクノポリスの印象」
http://anond.hatelabo.jp/20110713211501
初音ミクLAライブ、外国人感想その8「ミクノポリス:コンサート・リポート」
http://anond.hatelabo.jp/20110714210122
初音ミクLAライブ、外国人感想その9「アニメ・エキスポ:初音ミク」
http://anond.hatelabo.jp/20110715222900
初音ミクLAライブ、外国人感想その10「アニメ・エキスポ2011(抄訳)」
http://anond.hatelabo.jp/20110716194029
初音ミクLAライブ、外国人感想その11「世界は彼女のもの:初音ミクはいかにして全てを変えたのか」
http://anond.hatelabo.jp/20110717201147
初音ミクLAライブ、外国人感想その12「アニメ・エキスポ2011でのボーカロイド体験」
http://anond.hatelabo.jp/20110719031316
初音ミクLAライブ、外国人感想その13「ミク:日本のヴァーチャル・アイドルとメディア・プラットフォーム」
http://1-byte.jp/2011/03/20/20_tips_you_need_to_learn_to_become_a_better_php_programmer/
良いPHPerだって?そんなものは丸めてゴミ箱にでも捨ててしまった方が資源の再利用になる分いくらかマシだ。
つまり俺たちがしなくちゃならないことは「より良いPHPerにならないため」に何ができるかってことなのさ。
それじゃ、始めよう。
?>なんて使っちゃいけない。そう俺たちはBAD PHPer。
無駄なホワイトスペースの出力に悩まされるくらいなら対称性なんて丸めてゴミ箱にでも捨てた方がまだマシだ。非対称性こそが賛美。
require_once("config.php");
未だにこんなことやってるやつがいるのかいベイベー。絶対にダメだ。この一行を見たら俺は悶絶する。
ダメだ、早く何とかしないと。
大抵このconfig.phpの中身はこうなっている。見て絶望だ。
$hoge_path = ''; if (!LOCAL) { define('FOO_FLAG', 1); if (HONBAN) { define('HOGE_FLAG', 1); } else if (TEST) { define('HOGE_FLAG', 2); } } else { $hoge_path = '/local'; define('FOO_FLAG', 2); define('HOGE_FLAG', 3); } define('HOGE_URL', $hoge_path.'/hoge/');
こういうのが延々と続くわけだ。もういやだ。もう見たくない。
本番環境とテスト環境でどういう値の違いがあるのか、ローカル環境だとどうなるのか、まったく把握できる気がしない。
なまじPHPな設定ファイルのせいで、処理をついつい書いてしまう。そしてどんどん複雑になってしまう。
やはり設定データは基本的にYAML等のデータしか定義できない形式のもので用意すべきだ。そして環境ごとに設定ファイルを分けるべきである。
そうすることで何にどういう違いがあるのかすぐにわかるし、diffすれば一度にすべて把握することができる。
# 本番環境設定ファイル foo_flag: 1 hoge_flag: 1 hoge_url: '/hoge/'
# テスト環境設定ファイル foo_flag: 1 hoge_flag: 2 hoge_url: '/hoge/'
# ローカル環境設定ファイル foo_flag: 2 hoge_flag: 3 hoge_url: '/local/hoge/'
// ここで後の処理のためにhogeメソッドを呼び出しておく $q->foo(); // $a['foo']はここに来る時点で真のはず // 2010-03-10 判定がおかしいので修正 // 2010-06-21 やっぱり値が入ってる方が正しい if ( !isset($hoge[0]) ) { }
コメントは保守されない。そう、それは真実。こんなコメントを発見したら即効削除しよう。コメントは基本信じるな。
俺たちにちょっとしたヒントと大きな損害を与えてくれる、それがコメントの役割なのだ。
わかる。いいたい事はとてもわかる。俺たちはしばしばインデントにスペースを使うはずだ。一方でIDEのしっかりした言語ではタブも使うことがある。しかし悪いことに、両者を混同しているプログラマも一定数いるのだ。
タブを画面上で認識しにくいエディタが世の中には存在する(何とは言わないが)
そして画面上で認識しにくいことを理由にタブを気にしないプログラマがいる。
この二つの条件が重なると、タブとスペースの交じり合ったインデントが完成する。もうぐちゃぐちゃだ。これは永遠に続く戦いだ。
私たちが勝利を掴むためにできることなどせいぜい、常にスペースしか使わない。タブを見つけたらその都度スペースに変換する。そういった地道な活動が明日へとつながるのだ。
われわれがプログラムをするとき、何に一番時間がかかってるか。実は変数の命名なのである。ここで拘り過ぎて時間をかけ過ぎては何も進まない。
御託はイイからさっさと書け、だ。しかしとはいっても変数名は重要。日頃からどういうときにどんな名前を使うかを決めておくといい。
そして変数名に型はまったく必要ない。型宣言のないPHPにおいて、型の変数名をつけること自体ナンセンスだ。
$iNumber = 'aaa';
になんの意味もない。コメントを信じるなでも言ったが、これはプログラマを混乱させるだけの害悪なものだ。
変数を使う前に初期化するのは、警告を出さないという意味でも良い癖だ。しかし具体的にどこでやるかが問題だ。
$foo = null; $foo = $q->foo();
こんな初期化に意味はない。よくあるのはやはり、if文で値を振り分けるケースだろう
$foo = null; if ( $hoge ) { $foo = 1; } else if ( $bar ) { $foo = 2; }
このときの初期化はとても有効だ。もしnullの初期化を忘れたまま$fooを使うと警告が出るが、ちゃんと初期化してるので出ない。基本中の基本だ。
function getStatus() { $bReturn = false; if ($i == 2) $bReturn = true; return $bReturn; }(中略)
もし、何かしらの理由で、あなたの書いたif文が間違っていたら?
この書き方をしていれば、間違った値に対して、常にfalseが返る。
私たちが、PHPでsensitiveなデータを取り扱うなら、正しいデータが入力されるまでは、動かないコードを書くべきだ。
trueとfalseの条件がいまいち明確ではないが、本当に動かないコードを書けというのであれば以下のようにすべきだ
function getStatus() { $bReturn = false; if ($i == 2) $bReturn = true; else if ($i == 1) $bReturn = false; else throw new Exception("bad status! $i"); return $bReturn; }
中途半端にfalseを返して生存させる必要性はまったくない。今すぐ死ね!
連想配列のキーを指定する場合だけ定数と間違わないようにクオートで囲まなければならない。そして逆に定数を使いたい場合はクオートで囲ってはいけない。
更に後世のプログラマが処理を見たときに、定数が使いたかったのか、文字列が使いたかったのかを明確にしたい場合はconstantを使うと良い。
// 定数のFOOを使うよということが明確になる print $a[constant('FOO')];
もし、文字列を変数の値と一緒に出力するとき、PHPではコンマの代わりにprintfを使うことが使える。
printf( “Hello, my name is %s“, $sName);
以下の代わりに上記のコードを使う。
echo “Hello, my name is “, $sName;
出力すべき変数が増えれば増えるほど、有効になっていく。とにかく迷ったならば、printfを使え、だ。
三項演算子はとても有効だ。しかし優先順位に難があるせいで、三項演算子をネストしようとすると以下のようなコードになってしまう
$n = (($i == 1) ? 2 : (($i == 2) ? 3 :$i));
括弧だらけで読みにくいったらありゃしない。三項演算子を使うなら一回まで。約束守れないやつは丸めてゴミ箱にでも捨てちまえ。
if ( $flag ) { }
仕様をちゃんと把握しているなら真偽値のチェックなどこれで十分。
もし事前にbool型だというのが確定してるのなら「$flag === true」を使えばいい。
インクリメント、デクリメント演算子は前に付くか後ろに付くかで意味が変わるので慣れるまでは非常にややこしい。
わけがわからなくなるくらいなら初めから使わないほうが良い。見極められないなら使うな。それがPHPerなのだ。
文句なしだ。これは文句がない。
他にも色々あるので覚えておこう
$a %= 1; $a &= 1; $a |= 1; $a ^= 1; $a <<= 1; $a >>= 1;
てっとり早く画面に表示する際にpreはよく使うが、デザインの関係上画面の文字が見えないときがある。
なのでdivを使って以下のようにしとくと便利だろう。
function p($var) {
echo "<div align='left' style='background-color:white;color:black;'><pre>";
print_r($var);
echo "</pre></div>";
}
君らが通常作るアプリケーションなんぞに、定数なんぞ必要ない。いいか、もう一度言う、お前ら程度のもんが、定数使おう何ぞ、おこがましいわ!
大丈夫。なんでもかんでも定数にする必要はない。結局設定ファイルに定数をずらずら作りまくってわけがわからなくなってるパターンが多い。
貴様みたいなもんに、定数は制御できん。いいか設定ファイルはYAML等のデータで持つようにし、その連想配列のデータ構造を一つ持ってるだけで定数の変わりになる。
このメリットに比べれば、定数だと書き換えられなくて良いという利点などこの歯のカスほどのものだ。そんなものは丸めてゴミ箱へ捨ててしまうといい。
認識を改めろ。俺たちはより良いPHPerにならないために努力している。
class Request { private $parameters; private $method; function __construct () { $this->method = $_SERVER['REQUEST_METHOD']; if ( strtoupper($this->method) === 'POST' ) { $this->parameters = $_POST; } else { $this->parameters = $_GET; } } function param ($key) { return isset($this->parameters[$key]) ? $this->parameters[$key] : null; } }
これだけでもいい。たったこれだけでもとても便利だ。ここから拡張してGETやPOSTを明示的に取るメソッドとかも作ってみるといい。自分の手を動かすのだ!
例が良くない。こんなのは引数が20個ある関数から、setを20回呼ぶオブジェクトに変わっただけではないか。
そもそもこの20個の引数とはなんなのか。何かのデータ構造なんであれば連想配列にして引数一つとして渡すべきだし、それぞれまったく異なる用途の変数なのであればWindowsプログラミングじゃあるまいし、20個も引数取る時点で設計が間違えている。
何がいいたいか。別に関数でもオブジェクトでもどっちでもいいということだ。
そんなことで悩んでる暇があったら設計を見直せ。
スキあらば自分自身を返せ。スキあらばオブジェクトを返せ。配列はArrayObjectのARRAY_AS_PROPSで返せ。
ひたすらメソッドチェイン。来る日も来る日もメソッドチェイン。とにかくメソッドチェインを使い続けろ。そこに未来はある。
どんなコードも繰り返すな。もし、少しでも同じコードを書いていたなら、それは関数に置き換えてしまえ。
・・・と、いうのはやめなさい。
一見同じように見えた処理でも前後の流れでまったく違うものということが往々にしてある。
まとめ方にも問題があるケースもある。何でもかんでも関数化すると、関数が膨大に増えていく。君は見たことがあるだろうか。common.phpやfunction.phpの恐ろしさを。
確かに細かく関数化はされているが、適切に関数化していないのである。結合度が非常に高い。なんでもかんでも盲目的にまとめれば良いという話ではないのだ!
あまりに極度に意識しすぎると、プログラムそのものができなくなる。そういう状態に陥る。
気を抜いて。そう気を抜いて。所詮あなたのコードなんてすぐに消えてなくなるよ。きっともっと偉い人が作り直すよ。だからまずは思うが侭にやるといい。
結合度を減らすというのは非常に難しい。何度も何度も失敗し続けて、ようやくここは分けた方が良かったんだなと気付く。次に活かそうと心に決める。そしてまた同じ過ちを繰り返していくわけだ。
まずは実装することだ。これが一番の早道だ。まずはがっつり結合した関数をあえて作るといい。何も考えずに作ろう。
そしてその後に、一部分使いまわしたいとおもうことがあるはずだ。その時に関数に切り出そう。それを繰り返すといい。そのうち初めから分けた方が良いと気付く。
何事も経験が必要である!経験を積まないプログラマは丸めてゴミ箱に捨ててしまえ。
さて、先の例で言うならば、私ならadd_result_outputという関数を作ってしまうだろう。だって、addとresultを連続して呼ぶのはめんどくさいんだもん。一連の流れをいつも使うのなら、その流れをやってくれる関数を作ればいいじゃないか。
function add_result_output ($iVar, $iVar2) { $r = add($iVar, $iVar2); echo result($r); }
もっと言えばクラス化してしまってもいいかもしれない。どんな感じになるかは君の手を動かして確認しよう!
このTipsはとてもわかりにくく、ニッチ過ぎる部分も多いかもしれない。
あくまでも「より良いPHPerにならないための20Tips」なのだ。
君はこの記事を鵜呑みにしてはならない。PHPをPHPと見抜けないPHPerはPHPを使うのは難しい。
もし、あなたがPHPプログラマなら、公式のPHPドキュメントはあなたのケツの穴を拭くための紙になるだろう。
私は、それぞれのセクションを眺めて、各関数でどんなことが出来るかなんぞ、歯クソのゴミ程に役に立たないとおもっている。動けばいい。はは。
あなたは、PHPで用意された既製関数で多くのことが実現できることに、(俺の仕事を減らすなと)驚くはずだ。
この記事があなたの役に立たない事を。
ふざけんな!
この記事に書かれている内容は、丸めてゴミ箱に捨てた方が良いレベルです。
2010年の年末から年始にかけて10連休ほどあったので、新しいサイトを作ろうと思い立った。
月に1万円だと、毎日コーヒーを飲んでるだけでなくなってしまうので、コーヒー代くらい稼げたらうれしいなあ。じゃあどうする。何を作る?
ということで、まずTwitterを使ったものを作ることにした。
ひとつのジャンルにしぼってツイートをかき集めれば、面白い流れになるんじゃないか。人が来るんじゃないか。そう思った。togetterみたいな。で、ジャンルは、個人的に興味がある子育て。ていうか毎日帰宅してから朝まで子どもの寝かしつけや夜泣きの対応でサイトを更新する暇も、俺が寝る暇もあんまりない。ので、手がかからないことが大前提。なんだったら自動更新でもいい。
自動更新かー。と思って「ブログ 自動更新」でググったら、wordpressにRSSから更新するプラグインがあるらしいことを知った。はい決定。その瞬間、「TwitterのAPIからRSSを引っ張ってwordpressに投稿するサイト」に決まった。
さくらインターネットのスタンダードを申し込んだ。14日お試しがあるらしいけど、仮申し込みの時点で住所も入れてコンビニ請求にしたら、数日後に請求書が送られてきてビビった。(同時にドメインも申請しちゃった)
まあ、webで申し込んで、すぐにサーバコントロールパネルという画面に入れるようになった。「クイックインストール」というリンクがあったので見てみたらMovableTypeとWordPressを自動でインストールしてくれるらしかったので、ボタンを押した。インストールできましたというので発行されたURLをクリックしたけど404だった。1時間くらい404で、その日はもう寝た。
次の日の夜。これはもう、10連休を利用して毎晩1時間ずつ捻出するしかない、さくらのお試し14日あるから約14時間で作りきるしかねえ、と思った。
サイトにアクセスしたらwordpressが入ったページが出てきた。おお、サイトができてる!
まずTwitterを調べるか、と思って、「Twitter API」で検索したけどOauth?とかいう面倒なことをしないといけないらしかったのでやめた。じゃあ普通に検索は?と思って「Twitter 検索」で検索したら、search.twitter.comの結果はjsonかatomで取得できるし、APIコール制限もないらしいのでこれに決定。検索だけで1時間たった。
夜も更けて、続けて作業した。「wordpress xml 投稿」で検索していくつか探したらFeedWordpressというプラグインがあったので入れた。あ、事前知識としてMovableTypeでのブログはやったことがあったので、プラグインを入れるみたいな話はスムーズに進められた。
で、twitterの検索結果をatomで返した結果を入れてみた。ら、本当に投稿されてた。よっしゃできた、と思った。1ツイートが1エントリになってたし、投稿者もツイートした人になってた。よかった。でも、満足できなかった。
次の日。同じことを自力でやる方法を探した。「wordpress xml 投稿」で検索して、XMLをパースできるようになればいいんじゃないかと思い、simplepieというPHPライブラリにたどり着いた。が、PHPなんてまったく知らないし、憶える気もなかった。actionscriptで書かせてよ、とずっと思ってた。
次の日。「wordpress xml 投稿」でまた検索。どうやらwordpressの投稿って、xmlrpcというやり方を使ってるらしかった。ので、「wordpress xmlrpc 自動投稿」で検索したら、なんかサンプルコードが載ってたのでそのまんまコピペ(結局PHPだった)。したらちゃんと投稿されていた。ふむ。ここで何を思いついたのか、「wordpress xml パース」と昨日みたいなことを検索した。simpleXML?というライブラリがあるらしかったので、それを試してみることにした。(たぶんPHPが動いたので気をよくしてたんだと思う)
こういう流れでいけると思った。考え方はactionscriptをエディタに書いて、ノリであてにいった。変数に宣言するのはできた。$var1とかで宣言したことになるらしい。URLRequestに相当するコードを探したら「file_get_contents」らしいことが分かった。(「PHP 外部ファイル」で検索)
で、ゲットしたのはXMLなんだけど、上記検索したなかにたまたま書いてあった「simplexml_load_string」というのを使うとXMLをパースできそうな気がしたので、ノリで書いたactionscriptでは
var req:String = "http://search.twitter.com/?q.atom=mogemoge";
var r:URLRequest = new URLRequest(req);
var kekka:XML = r.send() as XML; ←いまここ
なので、XMLにキャストしたんだろうなみたいな感じだった。E4Xを使えればいいのにPHPって馬鹿ねと思いながら寝た。
年があけて、3が日が終わりそうだった。年末にやってたこと(上記までのこと)を思い出しながら、XMLの必要な部分だけ抜き出す方法を模索した。atomっていってもentryがたくさん入ってたから配列にするんだろうけど、ってんで「php foreach」を検索。なんとなくサンプルコードをまねしながら、記事タイトル、記事本文だけ取得した。あとはxmlrpcのサンプルにあわせて投稿するようにした。できた。寝た。
次の日の朝、ブログを見た。昨日更新したものしかあがってない。自動じゃねーじゃん。
で、「自動 投稿」で検索したら、クローン(cron)という仕組みを使わないといけないのだった。クローンはサーバの仕組みらしく、そういえば俺はPHPをはじめDB、サーバという単語を極力さけて仕事してきたので、もう気持ちが悪くなってきた。「さくらインターネット cron php」で検索して、なんとかやり方を見つけて、cronを登録した。(1時間に1回にした。設定は * * * 0)
仕事から帰ってきて、サイトを見ると、投稿が大量にたまっていた。やった!で、調子に乗ってツイッターアカウントを作った。なんだったらツイッターも自動化したかったので「twitter bot」で検索した。Easybotterというサンプルボットがあったので使わせてもらった。自動で一行ずつつぶやくようにした。
ツイートを集めることは成功したけど(毎時間100件のツイートを1エントリとして投稿してる)、それを眺めて面白いんだろうか? ボットを動かしてるけど人がくるんだろうか?
そんなとき「trivist」がはてブに載ってた。なんかにたものを感じた。やっぱツイートを引っ張ってきて投稿するサイトはアリなのか?アリなはずだ!
サイトの体裁を整えた
trivistをまねて、記事を評価(はてなスターとかいいねボタンとかに近いもの)する仕組みが欲しくなった。「wordpress 評価 プラグイン」で「wp-postratings」というプラグインを発見して、入れてみた。どうやら1エントリーに1評価しかできないらしい。俺のサイトは1エントリーに100ツイートあるから、どのツイートを評価するのかが分からない。
いったん、wordpressの全投稿を削除した。で、cron に登録されてるPHPを、1記事に1エントリーにした。
エントリーを投稿するついでに、Yahoo日本語解析APIをつかってツイートを分析して、名詞と動詞だけを取り出そうと思った。それをタグにすれば、タグクラウドが作れると思った。はてブはずっとずっと昔からやってるから、Yahoo日本語解析っていうのが2006年くらいに流行ったことをなぜか憶えてたので、やってみた。できた。
なんか俺、PHP書くのが早くなってね?
アクセス解析を入れてみた。サイトに来てる人は、俺だけだった。
どうにかして人を増やしたい。サイトの広告募集はする気がないし、ベタベタとバナーを貼りたくなかった。みんなが気軽に見に来て、軽い気持ちで評価してくれて、更新を楽しみにしてくれるサイトにしたかった。コミュニティサイトじゃないけど、やっぱりサイトはコミュニケーション設計をしないと意味がないんじゃないか、見てくれるユーザはどうやったら楽しいんだろう、ということを考え続けて10日ほど経った。Twitter経由で来てくれた人が3人ほどいるようだけど、何がダメなのか分からないので増田にお願い。
ここまで書いて教えてくんじゃねーか、と思われるかもしれないが、ググレカス的な検索は上記で書いたみたいにいろいろやってきた。でも、サイトを作ってみてはじめて、ユーザに向けたサイトってどう作ればいいのかが分からないということに気づいた。
小遣い稼ぎもしたいんだけど、面白いサイトを作るヒントがほしいと思った。
kanzen21やtrivistみたいに、俺も過程を全部さらしたから、辛辣な意見を求む。そしてはてブされるのを待ってます。
最近は、24インチ 30インチディスプレイなんて安いんだから、横80ではなく横120ぐらいは平気で使える。
classname::enumname という毎回指定でも エディタがインテリジェントに保管してくれるから問題ない。
基本的に 外部ツールがチェックしてくれるんだから
enum{
{
};
で問題ないと思われ
言い方を変えれば、class内部以外でenumを定義することなんて最近はあるのか?グローバルなenumなんて余り無いと思うが・・・
クラス内部では、省略できるし、外部から、クラス内部の値を呼ぶときは、どのクラスのこのenumって外部だよって意味で毎回書いたほうが安全だろ?
using namespace std
ですら、書かないほうが安全 毎回std::って書かないと、うっかり、stringクラスを定義する人がいないとは限らんからね・・・
一斉に変更したい? エディタに正規表現で置換すればよろしい・・・
原則、外部のツールで解決できる問題は、外部のツールで解決すればいい。
言語仕様を拡張されると、初心者に、その理屈を説明するという問題が出てきて、そういうのは初心者には無理。
他方、ツールを使えない初心者でも、毎回コピペや手で置換は出来る。
WiiでもDSでもPS3でもネットはできる。チャットもできる。写真も見れる。音楽も聴ける。メールもネット上で使える。
でも、一番やりたいコピーペーストで情報を編集することができない。
ゲーム機メーカーはその部分をあえて口に出さないが、「自粛」しているように見える。
これほどまでに綺麗に足並みをそろえているのを見たら、業界同士の何かを感じてしまうよ。
そういう意味では携帯はパソコン側だ。ただ携帯画面の大きさが一定以上にならないのを見ると、やはりそこにも
なにか口裏合わせがあるのでないかを考えてしまう。
携帯をBluetoothキーボードとヘッドフォン、外付けディスプレイで拡張できたら楽なのだが、ここでも
情報送信でスパイウェア警告、ドングル導入検討、2chで訴訟をほのめかす
体験版の30分制限
どうしてこうなった・・・
正式版のダウンロードを購入者のみに制限、体験版での登録ができなくなる
不正使用対策のため、シリアルキーが新しく変更される(要再登録)
新しいシリアルキーに、ダウンロード時に登録したメアドが含まれるようになる
Ver.9の購入者がVer.8を使えないことに苦情が寄せられる
エディタの起動時に情報を送信していることが確認される(スパイウェア疑惑)
キージェネとクラック情報の存在が確認され、緊急バージョンアップが行われる
「ドングル導入を検討していた」という噂が流れる(作者本人は否定)
ベクターで新規購入するとユーザー情報が「ベクターのお客様」になることが判明
不正使用対策で自己改変チェックが行われるようになり、起動がもっさりになる
法人限定でシリアルの内容がメアドから会社名に変更可能になる(要申請)
苦情を受けて、新規ユーザーにもVer.8のシリアルを発行開始(要申請)
自分のスパイウェア疑惑を棚に上げ、クラックやキージェネの危険性を警告
Ver.9.07で自己改変チェック機能が外される
ライセンスとセキュリティポリシーの問題で公式サイトがまた荒れる
後付けの規約変更連発で事態の収拾を図ろうとする
作者の意に沿わない発言をする者に対し、公式フォーラムからの退会を勧告
作者から一方的に議論打ち切り宣言が出される(掲示板の一部がロックされる)
作者が2ちゃんねるに降臨。「テンプレを削除しないと訴えるぞ」と恫喝
公式サイトとトリップが一致し、本人の書き込みであることが確認される
しかし、まったく効果がなく、わずか1日で2ちゃんねるから撤退
Ver.9(の続き)
Ver.9.09で登録情報の送信回数が減らされ、同時にキージェネ対策が行われる
返金を申し入れたユーザーのメールがスパムフォルダに振り分けられていたことが発覚
公式サイトのリニューアルで、ロックされていた掲示板が削除される
Norton Anti VirusがVer.9.11をスパイウェアの可能性があると警告
公式で報告された不具合をユーザーの環境のせいにして済まそうとする
このスレの指摘で上記の問題がソフト本体のバグであったことが確認される
確認ダイアログの表示前に、通信をしている可能性が指摘される(9.14で修正?)
Ver.10で再度シリアルキーが変更される
体験版の使用制限が強化され、30分ごとにソフトが強制終了するようになる
体験版の制限が30分ごとの強制終了から30分ごとの警告ポップアップに変更
「印刷時のフォント計算バグは次のメジャーアップデートまで直しません」発言
Ver.11 有料アップグレード(予定)
作家になったんだけどね。
一応、専業でメシを食えるだけのインカムがあるからこう名乗ることは出来る。
とりあえず、今年と来年までは筆でメシを食えるんだけども。
まぁ、なんというか「作家」というのは個人ではないよね。
ぼくが書きたいものが、出版社の売りたいものとマッチした。あるいは出版社が考える売れそうなものと
ある程度似通った。受賞、あるいはデビューの切欠なんていうのは早い話そういうところで、
それを言えば、とりあえず一番デビューの簡単そうな業界、それでいて収入につながりそうな業界を狙い撃ちして
どんな作品が市場に求められているかだけを考えて作品を作ったぼくも悪かったから
つまるところ、文章力やストーリーメイキングなんていうのは傾向と対策、それに現状売れている作品のアレンジで
99パーセントどうにかなってしまう。ぼくは作家として幾つか本を出して以来、自分がクリエイターだと思えたことが一度もない。
エディターなんだろうと思う。サンプリングとアレンジが全てだ。
もちろん、このサジ加減に関しては職人技が必要で一歩間違えると大変悲惨なことになる。
出版社サイドは大変悲惨なことになったところで、作家(それも多くの場合は新人)を一人切れば済むので、
その辺りのアクセルを盛大に踏み込む。事故を避けるインセンティブがないから。二匹目どころかダースで泥鰌を狙う。
作家にとって一番大事な作業は、そこで踏み込みすぎないこと。なんとか折り合いをつけることだ。
これに関してはとことん神経が磨り減る。「こういう風に書け」と言われて渡された参考資料(笑)に
近づき過ぎず、遠ざかり過ぎずオリジナリティー(笑)を付与する。ちなみに、オリジナリティーっていうのは
『想定された読者層のおそらく知らないであろうネタ元から失敬する』という意味だ。
まぁ、仕方ない。それがプロというものなんだろうと思う。
日々色んな本を読み、これとこれは使える、使えない。物語の形式はこの形でここの部分をちょっとひねって・・・
みたいに考える。これはクリエイティビティーとは何の関係もない職人技だ。うんざりする、やりたくなくなる。
しかし、メシを食わないことにはやっていけない。はてなに愚痴を書くにも身バレしないように気を使い、適宜嘘を織り交ぜる。
そういうことを繰り返してるうちにいずれ売れなくなって、俺は死ぬんだろーなぁと思う。
それがやりたいなら、ボタン1個で勝手にネストしてくれる開発環境のエディタ使ってくれ。
viしかつかえない?いや、今時、windows側でnfsなりsmbなりで、マウントしてwindowsのツールでエディットせいや。もしくは、マクロぐらいくめや。
いや、うん。プログラマ自体はさ、たかだか数Kか、十数Kしかみないから、それでいいんだろうけど。
それを組み合わせて、数百Kとかのソースコードをメンテナンスする身になってくれ。
世の中には、アプリ全部を端から端まで、みているアーキテクトという人間もいるんだよ。
え?アーキテクトはコードは見ない?いやいや、ご冗談を。メインリポジトリ配下は全部見なきゃアーキテクトなんてやってられないよ。
もちろんマクロにではあるけど。何かあったらミクロに見ることもあるわけで、そんときに検索していてif 0とかだと、イラッと来る。しかも広域。