back to home
ホームCONITについて業務内容CONIT LABS.採用情報お問い合わせ
  ホーム > CONIT Labs.
■CALENDAR■
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30   
<<前月 2010年09月 次月>>
■NEW ENTRIES■
■CATEGORIES■
■ARCHIVES■
■LINK■
■PROFILE■
■OTHER■
  • RSS 2.0
  • 処理時間 0.267449秒
  • なかのひと

 

弊社ブログは2010年4月26日からURLを変更いたしました。
ブックマークやRSSで登録されている方は、下記URLへ変更願います。
http://www.conit.co.jp/blog/
今後とも宜しくお願い申し上げます。
2010年4月26日 株式会社コニット

Google App Engine Pythonでのエラー
はじめまして、折川です。

4月からCONITでインターンをさせてもらってます。
主にGAE、Python、Flashを勉強しています。早く技術を身につけて開発に協力が出来ればと思っています。

Pythonを触ったことがなかったので、他の言語との仕様が異なるところで戸惑っています。
そこで、本当に初歩的ですが、なかなか気づかなかったエラーについて説明することにします。

それがこれです。現在Linuxで開発を行っていますが、端末での作業中に以下のエラーが出ました。


dev_appserver_main.py:363] Fatal error when loading application configuration:
Invalid object:
Unknown url handler type.
<URLMap
secure=default
static_files=None
auth_fail_action=redirect
require_matching_file=None
static_dir=None
script=None
url=/.*
upload=None
expiration=None
login=optional
mime_type=None
>




そして、エラーがあると指摘されたプログラムが以下です。

application: myapp
version: 1
runtime: python
api_version: 1

handlers:
- url: /.*
 script: appform.py

なにが間違ってるか気づかれた方はおそらくPythonを触ったことのある方に違いありません。




今回のポイントであるPython言語の条件文について軽く整理します。
通常Pythonでは条件文を

for a in range(10):
 print a
 if a>5:
  break

のように書きます。{ }でくくる他の言語と違い、[ : ]で条件文を書きます。

したがって、スペースの位置がずれるとエラーになってしまうのです。
上の例だと

for a in range(10):
 print a
if a>5
 break

このようにするとエラーが発生します。



これを元に再度先ほどのエラーを検証しますと、

application: myapp
version: 1
runtime: python
api_version: 1

handlers:
- url: /.*
  script: appform.py

そうです。一番下の行のスペースが一つ足りなかったのです。
これを直したら正常に起動できました。



これからさらにたくさんのエラーと戦うことになりそうですが、精一杯頑張りたいと思います。


| http://www.conit.co.jp/labs/index.php?e=331 |
| ご挨拶 | 03:25 PM | comments (0) | trackback (0) |
ソーシャルゲームとは何ですか?
はじめまして、コニット新人の三本です。
現在は企画開発をさせていただいていて、GAEとPythonを勉強しています。
よろしくお願いします。

日本で盛り上がりをみせているソーシャルゲームですが、日本人にはまだ馴染みが薄い分野です。
今回は日本のソーシャルゲームシーンを、モバイルで今人気の怪盗ロワイヤルを例にマネタイズの肝をご紹介いたします。

怪盗ロワイヤルはどんなゲームかと簡単に説明しますと、ユーザーは怪盗に扮して友達と協力してミッションをクリアしてボスを倒し、お宝をコンプリートするゲームです。
こういうと簡単ですが、ここに様々なポイントが隠されていて、その一部を説明します。
怪盗ロワイヤルはテキストベースで、ユーザーにはミッション、バトルという基本となる行動が与えられます。
ミッションはシナリオのような部分で、バトルはユーザー同士でお宝を奪い合うものです。
ユーザーは手下を抱えていて、お宝を得るために手下を消費しながらミッションをこなしてゴールを目指します。
1回ミッションをこなす毎に手下5人とか消費したりし、ミッションクリアする前に全手下を消費する事もよくあります。
消費した手下は時間とともに回復します。
しかしユーザーが「あとちょっとでミッションクリアできるのに」と思った時に、手下回復アイテムに課金します。
こういったユーザーの欲求をちょっとしたアイテムで解決させてあげる手段があり、良いタイミングで提供できれば次々と課金していきます。
この欲求解決とタイミングをほぼベストに兼ね備えたのが怪盗ロワイヤルでした。

これ以外にも課金ポイントはたくさんありますが、上記の内容は外すことが出来ない部分です。
怪盗ロワイヤルはユーザー同士のつながりを有機的に構築している優れたゲームの一つだと思います。

習うより慣れろという言葉がありますが、やはりちょっとでも興味がでたら実際に遊んでみるのが一番ですね。

| http://www.conit.co.jp/labs/index.php?e=330 |
| ご挨拶 | 06:53 PM | comments (0) | trackback (0) |
Tools to survive Japanese in the workplace
Hey everyone, David here.

For those of you like me, who happen to be non-native Japanese speakers in a Japanese environment, here are a few tools that I use to help me get through my work day easier. Take what you will.

Google:
My Japanese is quite a handicap for me at the office, and any opportunity to inject English into my everyday tasks dramatically increases my productivity. This may sound simple, but I set my homepage to http://www.google.com/webhp. This insures that I can search all-English pages, just like anyone in the US.

IME
If you're a Mac user in Japan, you probably realized that the default IME is, well, "baka". Fortunately, Google has an awesome IME that knows your mind and the exact kanji you mean to type.
http://www.google.com/intl/ja/ime/index-mac.html
It also remembers long expressions, so after typing "o" in an email, you can hit space, enter to type "お世話になっています。" BAM!

Jim Breen's WWWJDIC
http://www.aa.tufs.ac.jp/~jwb/cgi-bin/wwwjdic.cgi?9T
The EDICT dictionary is a life-saver. When I don't have the willpower to understand a lengthy email, a simply copy/paste into the translate words can get the main points of the mail across in no-time.

| http://www.conit.co.jp/labs/index.php?e=329 |
| 実験 | 10:03 PM | comments (0) | trackback (0) |
スマートフォンでソーシャルアプリ
こんにちは。橋本です。

最近、どっぷりソーシャルアプリ開発に掛かりっきりのコニットですが、
「mixiモバイル、モバゲー、グリゲーアプリはスマートフォンで遊べるようになりますか?」
と良く聞かれます。

私の個人的な感想としては、きっと遊べるようにはなるだろうけど、
どうやって実装していくのかが課題になると思います。


Androidの場合


多分、遊べるようになるでしょう。
Flashは利用できるので、プレイ自体は問題なさそうです。

課題はキャリア課金だと思います。
Docomoでは、Xperiaリリースにあわせ、マーケットをオープンしたので、
割とすんなり行きそうです。
問題は、SoftbankとAUでしょうか。マーケットの準備やキャリア課金の準備を進めていかないと、
スマートフォンを使いたい、モバゲーユーザなどを取りこぼし、Docomoに奪われる事になります。


iPhoneの場合


Androidのように楽ではないでしょう。
Flashも使えず、課金もApple独自PFを利用しなければいけません。
もし、利用出来るようにするためには、レギュレーションを大幅に変更する必要があります。

mixiモバイル・モバゲーの最大の勝因はキャリア課金です
iPhoneのアプリ内課金では、キャリア課金のような爆発力は出ません。

Flashが使えないということは、SAPは専用アプリを独自に開発する必要があり、
開発コストが過大に掛かります。にもかかわらず、キャリア課金は使えないため大きなリターンは望めないでしょう。

良い点は、ガラ系ケータイのようにアプリサーバを用意する必要はなく、処理を全てローカルで行えるので、
これまでのようなとんでもない量のサーバ負荷はかかりません。

ただそうなると、Facebookコネクトのような扱い方になるので、
mixiやモバゲーの良さは出しにくくなるのではないかと懸念されます。

実際、mixiモバイルやモバゲーが遊べなくなるからiPhoneを使わない!という若い方は多いようです。
とはいえ、iPhoneアプリは非常に沢山のコンテンツがあり、思い切ってiPhoneに替えても十分楽しめるのは確かですが。


この辺りの攻防は今後も目が話せませんね。


| http://www.conit.co.jp/labs/index.php?e=328 |
| Social Apps | 10:54 PM | comments (2) | trackback (0) |
UISplitViewController
こんにちは。高浦です。

ついにiPad登場ですね!開発の方もこれからどんどん面白くなりそうです。
今日はiPhoneSDK3.2から追加されたUISplitViewControllerを紹介します。

InterfaceBuilderを開いてTools->Libraryを開いてobjectsを選択すると左上にSplitViewControllerというものがあります。これをxibファイルに追加してみると左側に
TableView、右側に普通のViewが現れます。TableViewで選択した内容をTableViewを隠すことなく右側のViewに映し出すような用途に使われるものだと思います。大画面ならではの画面設計ですね。

UISplitViewController.hをみてみると、公開されているメソッドが3つあり、SplitView内のViewが現れたり隠れたりする際のイベントの制御ができるようになっているみたいです。

それでは、実際にアプリを作るときにどんな使い方をするかというと、、、
 ・左のTableViewにブックマークを表示して右側がWebViewのブラウザアプリ
 ・左のTableViewに国名、地域名を表示して選んで右側にMapView
 ・左のTableViewにチャットのメッセージ、右側にオンライン対戦ゲーム
などでしょうか。

| http://www.conit.co.jp/labs/index.php?e=327 |
| iPhone | 09:11 AM | comments (1) | trackback (0) |
新しいプログラム言語の習得
ども開発TEAMのササポンです。

寝て起きて仕事して寝て起きて仕事してると、
自分を取り囲む環境が進化していってしまうのは不可避なものです。

10年も開発してると、PG言語によって使える使えないってのは
ほぼ無いです。
さしあたり制御構造には、分岐、ループ、ジャンプ(≒例外処理)ってのがあり、
サブルーチン化には、関数方式、クラス方式、
データ構造には、リスト、スタック、KeyValue方式があり、
文字列処理には、連結、分割、マッチ判定、置換、文字コード変換などがあり、
データベース処理には、接続、クローズ、select系、update系、トランザクション系があり、
ファイル制御には、コピー、ムーブ、リネーム、書き込み、読み込みなどがあり、
GUI制御には、window作成、rect描画、circle描画、テキスト描画、画像描画、入力コンポーネント系があり、
ネットワーク制御には、書き込み、読み込みがあり、
HTTP制御には、ヘッダ読み書き、ボディ読み書き、認証方法指定、urlencode的なもの、
OSには起きろ、寝ろ、あれ立ち上げろ、○○用のDIRはどこだ?、みたいな。

プログラムを作るにあたって必要なものは、普通あるだろうと、
基本プログラミング部分は脳内で出来ちゃいます。
それを具現化する為に、ヘルプと呼ばれる辞書を見ながら、
各国語に翻訳して書き出しているだけです。

で、それでとりあえず動くものはできます。

そこからは、より良く(美的に、機能的に、性能的に)する為には
ネイティブスピーカーから学ぶのが一番です。

その言語の強み弱みを、誰が一番理解と思想を持っているかって?
もちろん言語を作っている人達ですよね。
その言語のAPIソースを見るのです。

その人達のソースを見ると、彼らの気持ちが見えてきます。

私もそこまでのレベルに達していないので、全部は分かりませんが
大量データを処理する際のお作法とか、やってはいけない事とか。
そういうのは見えてきます。
またバージョンアップによって内部処理がどう変わったかなんてのもインタレストです。

javaには
java.util.HashMapというクラスがあります。
説明は省略ですが、
ごく普通にあなたが実装すると、どういうソースになりますか?
あなたのソースと、APIのソースはどう違いますか?
それはどうしてですか?
そこには、強み強調と弱み回避のロジックが組み込まれているから、違うのです。

iphone-Object-cには、同じメモリ確保でも、
[NSDictionary alloc]というのと[NSDictionary dictionary]と2種類あります。
違いは、autoreleaseが掛けられているかいないかですが、
そういう時にはこういうお作法で作るんだよと、思想が見えてきます。
(こっちはapiソース見た訳じゃないですが)





| http://www.conit.co.jp/labs/index.php?e=326 |
| 雑談 | 08:06 AM | comments (0) | trackback (0) |
ドコモ、AUのAndroid携帯向けの開発環境
こんにちは、いちかわです。

今日から、Sony Ericsson XPERIA X10が発売されましたね。
そして、先日ついにAUからもSHARP JN-DK01発表されました。

続々と日本の市場にAndroid携帯が投入されてくるのは、アプリを開発する側からすると、期待がふくらむのと共に、開発したアプリケーションがすべてのプラットフォームで動くかが大きな悩みとして出てきます。

しばらくのブログネタとして、新たに発表されたAndroid携帯を開発するための環境作り、既存アプリの動作確認について書いていきたいと思います。

第1回として、シミュレーターのadd-onを追加するところから解説します。

まずは、XPERIA X10 から。
Sony Ericssonのサイトからツールをダウンロードしましょう。
Sony Ericsson Xperia™ X10 add-on for the Android™ SDK

AVDを作成
1.ダウンロードしたツールを解凍して、Android SDKの中にあるadd-onsの中に丸々コピーします。
2.ターミナルを開いて、「android list target」と入力して、ID番号を調べます。
私の環境だとこんな感じ↓

id: 7 or "Sony Ericsson Mobile Communications:X10:4"
Name: X10
Type: Add-On
Vendor: Sony Ericsson Mobile Communications
Revision: 1
Description: XPERIA X10 Device
Based on Android 1.6 (API level 4)
Skins: WVGA854, X10 (default), HVGA, WVGA800, QVGA


3.ID番号を指定してADVを作成します。
 「android create avd -n X10 -t 7」

次は、SHARP JN-DK01。
Sharpのサイトからツールをダウンロードしましょう。
シャープAndroid開発者向けウェブサイト「SH Developers Square」

AVDを作成
1.ダウンロードしたツールを解凍して、Android SDKの中にあるadd-onsの中に丸々コピーします。
2.ターミナルを開いて、「android list target」と入力して、ID番号を調べます。
私の環境だとこんな感じ↓

id: 6 or "SHARP Corporation:JN-DK01 (Beta version):4"
Name: JN-DK01 (Beta version)
Type: Add-On
Vendor: SHARP Corporation
Revision: 1
Description: SHARP JN-DK01 Add-on Beta version 1
Based on Android 1.6 (API level 4)
Skins: WVGA854, HVGA, WVGA800, QVGA, JNDK01 (default)
Adds USB support for devices (Vendor: 0x04DD)


3.ID番号を指定してADVを作成します。
 「android create avd -n JNDK01 -t 6 --sdcard 128M」

正しく追加されると、Android SDK and AVD Managerに表示されます。


では、早速シミュレーターを起動してみましょう!!
XPERIAの方は、AVD ManagerのStartボタンをクリックすると起動します。


JN-DK01は今のところコマンドからの起動にしか対応していないようなので、ターミナルから起動します。
「emulator @JNDK01 -qemu --cpu cortex-a8」と入力して起動。


iPhoneシミュレーターと比べると起動が遅いですが、見た目は製品のような形となっています。

次回は、既存のアプリをそれぞれのシミュレーター上で動かすまでを解説します。

| http://www.conit.co.jp/labs/index.php?e=325 |
| Android | 11:23 AM | comments (1) | trackback (0) |
ニッカンプロ野球!リリース


こんにちは。橋本です。
プロ野球オタクの私ですが、『プロ野球の情報配信をしたい』という長年の夢が叶いました!

こんなモバイルアプリが欲しいという長年の思いを全てぶつけたアプリです。


1. 試合の速報を一度に確認することが出来ます。



2. 各試合の詳細ももちろん確認できます。



3. ニッカンさんの冠が付いているように、ニッカンさんの記事を選んで読むことができます。



4. 順位表はいつでも確認できますし、各チーム毎の盗塁数や本塁打数、防御率なども分かるようになっています。



5. 個人成績だって、全て確認できます。各項目ごとにソートすることも可能なので、現在の盗塁王、ハーラーダービーなど、ファンなら知りたい情報はいつでも確認できます。



6. チームごとの日程表が確認できます。通常、日程表は全チームの情報が載っていますが、このアプリでは、自分が日程を知りたいチームを選べば、そのチームだけの日程が確認できます。そのチームの月間勝敗数も一目で分かります。



7. チームごとのメンバー一覧が確認できます。試合を観戦にいった際、知らない選手が登場することが良くありますね。そんな時は、このアプリで背番号から誰なのか分かります。



これからもどんどんアップデートしますので、ご愛顧、何卒よろしくお願いします。


| http://www.conit.co.jp/labs/index.php?e=324 |
| ネタ | 05:19 PM | comments (0) | trackback (0) |
GAEでのデータアップロード
こんにちは 阿久津です。

第1回 Google App Engineを使ってみよう!!
第2回 GAE Datastoreのデータ取得パフォーマンスを検証!!


今回は、GAEでのデータアップロードについてです。

■データアップロードを使うシーンについて

色々と考えられると思いますが、以下の辺りではないかと・・・
・マスタ的に扱うデータモデルのデータを初期登録する
・他の環境で使用していたデータ(mysql,postgre,oracle,sqlserver,db2等)をGAEに移行する
・バックアップしてあったデータをアップする
・パフォーマンステスト用に大量データを投入する

上記に記載した限りではないですが、色々なシーンで活用できるこの機能は、覚えておいた方が便利だと思います。
GAEでのアップロード機能は、至って簡単なものなので実際試してみることをおすすめします!!

ではでは、以下より実際にデータアップロードするための手順をご紹介します。

■事前準備
・まずは、app.yamlに「remote_api」の設定を行います。
- url: /remote_api
script: $PYTHON_LIB/google/appengine/ext/remote_api/handler.py
login: admin

で、アプリケーションの更新処理を行います。
$ appcfg.py update


■データ準備
今回は、前回から使用しているUserモデルにデータをアップロードすることを考えていますので
awkなどを使って以下の形式のデータを10万行用意してみました。

 サンプル:$awk 'BEGIN{OFS =","; for (i =1; i <= 100000; i++) print("xxx" i,"id" i,"name" i);}' > user.csv

■ローダクラスの作成
以下のようなソースを作成します。(モデルクラスは、インポートするとうまくいかなかったのでこのソースに定義してます。)
from google.appengine.ext import db
from google.appengine.tools import bulkloader

class User(db.Model):
userid=db.StringProperty()
username=db.StringProperty()

class UserLoader(bulkloader.Loader):
def __init__(self):
bulkloader.Loader.__init__(self, 'User',
[('key_name', str),
('userid', str),
('username',str),
])

loaders = [IuserLoader]


■実行
$appcfg.py upload_data --config_file=UserLoader.py --filename=user.csv --kind=User .
(最後のドットは、app.yamlが置いてあるディレクトリを指定してます)

■結果
ちょいと処理はかかるものの無事データアップロードが完了しました。
appcfg.py upload_dataには色々とオプションがあるので、google aap engine documentを参考に設定を変えて試してみるのも
よいと思います。

■次回
 アップロードが出来たので次回は、ダウンロードについてお話したいと思います

| http://www.conit.co.jp/labs/index.php?e=323 |
| Google App Engine | 04:05 PM | comments (0) | trackback (0) |
Importing from AI to Flash
Hi everyone, David here.

I'll be the first to admit that I'm no Flash expert. This is a trick which was taught to me just the other day, a trick so simple I felt stupid for not knowing it!

Anyway, if you want to import AI images into Flash, here's the best way to do it. I did it on a Mac, but it should work for a PC as well.

Step 1:
Drag and drop the AI file onto the stage. This will work even if you don't have AI installed.
Step 2:
A window will appear, asking which AI layers you'd like to import. Pick the layers you'd like to import and click "OK".
Step 3:
The image will be imported in it's native AI state. Left as-is, this will eat up the performance of your Flash. To avoid this, select everything imported from Flash, right-click, and choose "break apart". Repeat this process a few times until everything is "broken apart".



That's it! You now have an image originally created in AI in native Flash.

| http://www.conit.co.jp/labs/index.php?e=322 |
| 実験 | 10:55 AM | comments (0) | trackback (0) |