西日本ぶらり旅計画(2)

大体の行き先は決まったのだけど、あまりにも行き当たりばったりだと不安なので、簡単に計画を立ててみようと思います。
計画を立てる際に留意しておく点としては、
・1日に移動する距離は200~400kmぐらい(3~5時間ぐらい)
・途中で仕事をしなくてはいけないかもしれないので余裕をもっておく
ぐらいかな。

<1日目>
 東京〜名古屋(350km)
 名古屋の街を散策
<2日目>
 名古屋〜大阪(170km)
 ・大阪観光・食い倒れる
<3日目>
 大阪〜姫路〜岡山近辺(250km)
 ・姫路城に行く
<4日目>
 岡山〜瀬戸大橋を渡って香川〜愛媛あたり(140km)
<5日目>
 愛媛〜しまなみ街道を渡って広島(150km)
 ・フェリーで宮島へ
 ・厳島神社
<6日目>
 広島〜出雲(190km)
 ・出雲大社
<7日目>
 出雲〜鳥取〜天橋立(380km)
 ・鳥取砂丘
 ・天橋立
<8日目>
 天橋立〜金沢(260km)
 ・兼六園
 ・金沢散策
 ・加賀屋に泊まる
<9日目>
 金沢〜白川郷(76km)
 ・白川郷でのんびり過ごす
<10日目>
 白川郷〜立山黒部(110km)
 ・ケーブルカーで山の中腹へ
 ・山の中のホテルに泊まる
<11,12日目>
 立山黒部〜どこかで1泊〜東京(430km)
 ・登山

こんな感じになりました。
もし仕事することになったり、途中で行きたい所が増えたら旅程を伸ばしたりして対応。
あとは各目的地ですることや食べたいもの、泊まるところを決めていって肉付けすればいい感じの予定表になりそう。
出発は9/3にしようと思ってます。
仕事は調整中・・・。

時間に余裕があったら旅の途中でもブログを書きたいなー。

西日本ぶらり旅計画(1)

というわけで西日本の行きたい所をリストにしてみます。
・白川郷
・金沢
・厳島神社
・大阪
・出雲大社
・瀬戸大橋
・立山黒部
・しまなみ海道
・鳥取砂丘
・姫路城
今思いつくのはこれくらいかな。
後で追記するかも。
名古屋と京都奈良は行ったことあるし、
九州は行ってる時間が無さそうなのでまた今度。
そしてGoogleMapでポイントしてみた。

より大きな地図で 西日本ぶらり旅 を表示

楽しみになってきた!

旅にでようかと思います

あ、どうも僕です。
このブログ休眠してたんですよね。
会社を作ったので、ブログはそっちの社内ブログで書けばいいかなと思ってから早1年ちょい、プライベートなこととかをうだうだと書く場所が欲しかったので、復活させました。

せっかくなので気分を新たにする為に、いじくりまわしてオリジナルテンプレートを作ってみました。最近は反射や光沢があるゴテゴテしたデザインが少なくなってきたこともあり、シンプル&手書き風。
久しぶりにCSSとか触って楽しかったです。
続きを読む

会社を作って3ヶ月経ったので現状と今考えていることをまとめた

特にこのブログでは触れていなかったのですが2010/5/10に株式会社トライセイルを設立しました。

フリーランスとして独立してから1年半ぐらいしてからのことですが、法人化した理由は以下のような点です。

マンネリ化した
同じ環境にいると半年、1年、3年後の自分はこんなふうになるだろうなということが分かってきます。
自分の限界が見えてくるんですよね。
僕の場合はそれが今とそこまで変わらなかった。
それって僕の中ではこわいことなんです。
それなりに技術を身につけてそれなりに仕事ができてる未来。
だけど大きな変化は無い。

僕はベンチャーとそれなりに大きな企業で働いたことがあります。
もちろんどちらにも長所短所がありましたし、人によって向き不向きもあるので、
どちらが良いとは一概にはいえないのですが、
環境によって自分の成長速度や仕事に対するやる気・考え方が変わることを実感しています。

そういう意味で法人設立は、フリーランスとして働くことに慣れ、
甘えが出てきた自分に対するハードルみたいなものです。
環境を変え、やらなくてはいけないことを課すことで自分に成長してもらおうと思ってます。

1人でやることの限界
最近というかずっとですが、この業界の移り変わりは早い。
新しい技術・新しいプラットフォーム・新しいデバイス。
デザインのトレンドも変われば、ソフトウェアも進化する。
数年前にはお金になったシステムが今では無償で提供されていることなんてザラです。

新しいことを学ぶのは好きですし、ワクワクできますが、
日々の業務に追われていると、とりあえず目の前の仕事を片づけるので精一杯だったりします。

特に僕は基本的に外注はしたくないので、自分で全てやってしまいます。
そんなふうに仕事をしていて、仲間が欲しいと思うようになりました。
それぞれの得意分野で分業をすることで、
新しいことにチャレンジできる時間を作りたいと思います。

1人で大きなことをやるのは大変です。
モチベーション的にもリソース的にも。
2人ならアイデアも2倍でますしね。

あとは仕事の成果を分かち合える仲間が作りたいなと。
もちろん人と人なので、意見が対立することもあるだろうし関係性がストレスになることもあるかもしれない。
ですが、それも成長できる機会の1つとして捉えたいなと思っています。

タイミング的なところ
僕は今年28になります。特に扶養しなければならない家族もいません。
これが3年後、5年後になるとわかりません。
色々なことを考えてリスクを取られなくなるかもしれない。
フリーランスをする中でそのうち法人化することは頭にありました。
上の2つの理由も合わせてそのタイミングは今なのかなと思いました。

 
 

さてそのようなことを考えて法人化し3ヶ月たったわけですが、色々変わりました。

意識が変わった
その為に法人化したということもありますが、やはり変わりました。
将来への計画を立て、それの為に必要な仕事をしていく。
実際の業務はそこまで変わらないのですが、だらけてしまいそうになったとき、
「どうして会社にしたのか」
と自問自答して気合いを入れ直して取り組んでいます。

周囲の見方が変わった
「フリーランスで仕事をしている人」として見られることと
「会社をやっている人」として見られるのは大きく違います。
今まで仕事をしていた人とはあまり変わらないのですが、
新しく会う人の対応は違います。
実際はそこまで変わってないんですけどね。

人との出会いが増えた
上とのつながりなのですが、人と会う機会が増えました。
会社をやっていると言うと、知り合った人がお客さんになりそうな人や
話がしたいという人を紹介してくれます。
そういう人は自分で会社をやっている人だったりもするので、
色々アドバイスを頂いたりしながら将来のことを考えています。

そんな中でiPhoneアプリの勉強をしてリリースしたらちょっとしたヒットになり、
そこから新しい出会いもあったりして変化のある日々になってきました。

今は一緒に働く仲間を探しています。
これが組織を作る上でのキモですね。
いい人と出会えるといいなと思いつつ、
成長し続けられるよう努力していきたいと考えています。

もしちょっとでも興味がございましたらtwitterでもこちらでもいいのでご連絡ください。

datetime型のカラムから日付データを引っ張ってくる際の高速化

ちょっとMySQLのチューニングをしたらすごく早くなったので、メモメモ。

datetime型のカラムから日付のみをwhere訳にデータを引っ張ってくることはよくあります。
で、レコードが数万行になってくるとけっこう遅くなったりする。
そしてカラムにインデックスを張っても全然速度があがらなかったりします。
これはクエリーがインデックスを使用していないからなんですね。
苦しまぎれにdate型のカラムを作って日付だけを入れるという手法もありますが、ちょっとスマートじゃないです。
datetime型を維持したままで高速化できます。

例えばこういうクエリー

SQL

select * from item where 'datetime' like '2010-06-23%';

あとはこんなクエリー

SQL

select * from item where 'datetime' >= '2010-06-23 00:00:00' and 'datetime' <= '2010-06-23 23:59:59';

後者の方がちょっとマシですが、どちらもインデックスを見ていないので、レコード数が増えるにつれてだんだんと重くなってきます。
このクエリーをこうしてあげましょう。

SQL

select * from item where 'datetime' between '2010-06-23 00:00:00' and '2010-06-23 23:59:59';

between datetime型 and datetime型の文体にすることでインデックスが使用され、高速化するんですね。
こんな書き方もできます。

SQL

select * from item where 'datetime' between '2010-06-23' and '2010-06-23' + interval 1 day;

かなり早くなるのでお試しください!
いままでのクエリーも書き直さないと・・・・。

ファミ通.comの「みんなのクロスレビュー」のブログパーツを作りました

ブログパーツを作らせていただきました。
ファミ通.comさんの「みんなのクロスレビュー」のブログパーツです。
みんなのクロスレビューというのは、様々なゲームの評点を集約してまとめたサービスです。
作らせていただいたブログパーツは、指定したゲームの点数やニュースを表示するというものです。
例えば、こんな感じです。


作る際に考えたのは「どうすれば使ってもらえるか?」ということでした。
ブログパーツというのは自分のブログに貼るものですから、まずブログの執筆者に気に入ってもらわなくてはいけない。
ブログの執筆者が気に入る理由というのは色々あると思いますが、「訪問者が面白がってくれそう」ならば貼ってもらえると考えました。
そこで、今回ブログパーツを作る際に気を使ったのはユーザーインターフェースと動きの部分です。
ブログパーツ上でボタンを押したりマウスを動かすことで、気持ちいい動きをするようなUIを目指しました。
その上で情報を分かりやすいように配置しています。
このブログパーツの制作中にiPhoneを買ったのですが、ちょっと影響を受けたかもしれません(笑)

「みんなのクロスレビュー」というプロジェクトについてですが、こちらは非常にユニークな試みです。
今までゲームの評価というものは、各メディア毎にバラバラにおこなわれていました。
amazonや楽天のレビューがそうですし、専門サイトとしてはmk24gamerといったものがあります。
もちろんファミ通も、編集者や、自社メディアでの一般ユーザーによる評点でゲームに評価をつけてきました。
「みんなのクロスレビュー」は、そういった様々のメディアのデータを集約し、集合知としての点数を付けようという試みです。
ちなみに海外ではmetacriticというサイトが取り組んでおり、ここで付けられた点数はユーザーにとって信頼度の高いものとなっています。
「みんなのクロスレビュー」で現在利用されているものは4メディアのデータですが、今後増えていくことになる予定らしいので、業界標準になれたら面白いな思ってます。

というわけで、技術的にも内容的にも充実したお仕事でした。

TweenerでTextFieldの文字の色やサイズ・マージン等を変化させる

Tweenerではオプション的に普段アクセス出来ない特殊なプロパティを扱う方法がある。
表題の件は、以下のような宣言をすることで使えるようになる。

AS3

import caurina.transitions.Tweener;
import caurina.transitions.properties.TextShortcuts;

TextShortcutsのリストをインポートしたら初期化

AS3

TextShortcuts.init();

これで、以下のようにTextFiledの値を変化させることができる。

AS3

Tweener.addTween(my_textFiled, { _text_color:0x00ffcc,_text_size:16,_text_leftMargin:50, time:1, transition:"linear" });

参考:http://www.tonpoo.com/tweener/properties/TextShortcuts.html

Loaderで外部ドメインのデータを読み込む場合のcrossdomain.xmlの認識

久しぶりに使ったら忘れていてハマったのでメモ
crossdomain.xmlの中身

XML

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
    <site-control permitted-cross-domain-policies="all" />
    <allow-access-from domain="*" />
</cross-domain-policy>

crossdomain.xmlを設置するだけじゃなくて、ポリシーファイルを使うって宣言しないといけない。

AS3

var myLoader= new Loader();
var myContext:LoaderContext = new LoaderContext(true);
myLoader.load(myUrl,myContext);

これでOK。

MovieClipのbuttonModeがうまく動作しない場合の対処方法

MovieClipに色々とaddChildしたものをボタンにした時、buttonMode=trueにしても子要素の上にマウスカーソルを合わせた時にカーソルが変わらない時がある。
こんなときはmouseChildren=falseを追加すればOK。

AS3

mc.buttonMode = true;
mc.mouseChildren = false;