![]() |
|
|
| |
|
弊社ブログは2010年4月26日からURLを変更いたしました。
ブックマークやRSSで登録されている方は、下記URLへ変更願います。 http://www.conit.co.jp/blog/ 今後とも宜しくお願い申し上げます。 2010年4月26日 株式会社コニット |
|
|
2010,04,15, Thursday
はじめまして、折川です。
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 そうです。一番下の行のスペースが一つ足りなかったのです。 これを直したら正常に起動できました。 これからさらにたくさんのエラーと戦うことになりそうですが、精一杯頑張りたいと思います。 |
|
2010,04,12, Monday
はじめまして、コニット新人の三本です。
現在は企画開発をさせていただいていて、GAEとPythonを勉強しています。 よろしくお願いします。 日本で盛り上がりをみせているソーシャルゲームですが、日本人にはまだ馴染みが薄い分野です。 今回は日本のソーシャルゲームシーンを、モバイルで今人気の怪盗ロワイヤルを例にマネタイズの肝をご紹介いたします。 怪盗ロワイヤルはどんなゲームかと簡単に説明しますと、ユーザーは怪盗に扮して友達と協力してミッションをクリアしてボスを倒し、お宝をコンプリートするゲームです。 こういうと簡単ですが、ここに様々なポイントが隠されていて、その一部を説明します。 怪盗ロワイヤルはテキストベースで、ユーザーにはミッション、バトルという基本となる行動が与えられます。 ミッションはシナリオのような部分で、バトルはユーザー同士でお宝を奪い合うものです。 ユーザーは手下を抱えていて、お宝を得るために手下を消費しながらミッションをこなしてゴールを目指します。 1回ミッションをこなす毎に手下5人とか消費したりし、ミッションクリアする前に全手下を消費する事もよくあります。 消費した手下は時間とともに回復します。 しかしユーザーが「あとちょっとでミッションクリアできるのに」と思った時に、手下回復アイテムに課金します。 こういったユーザーの欲求をちょっとしたアイテムで解決させてあげる手段があり、良いタイミングで提供できれば次々と課金していきます。 この欲求解決とタイミングをほぼベストに兼ね備えたのが怪盗ロワイヤルでした。 これ以外にも課金ポイントはたくさんありますが、上記の内容は外すことが出来ない部分です。 怪盗ロワイヤルはユーザー同士のつながりを有機的に構築している優れたゲームの一つだと思います。 習うより慣れろという言葉がありますが、やはりちょっとでも興味がでたら実際に遊んでみるのが一番ですね。 |
|
2010,04,09, Friday
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. |
|
2010,04,08, Thursday
こんにちは。橋本です。
最近、どっぷりソーシャルアプリ開発に掛かりっきりのコニットですが、 「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) | |
|
2010,04,07, Wednesday
こんにちは。高浦です。
ついに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) | |
|
2010,04,02, Friday
ども開発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ソース見た訳じゃないですが) |
|
2010,04,01, Thursday
こんにちは、いちかわです。
今日から、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番号を調べます。 私の環境だとこんな感じ↓
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番号を調べます。 私の環境だとこんな感じ↓
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) | |
|
2010,03,31, Wednesday
こんにちは 阿久津です。
第1回 Google App Engineを使ってみよう!! 第2回 GAE Datastoreのデータ取得パフォーマンスを検証!! 今回は、GAEでのデータアップロードについてです。 ■データアップロードを使うシーンについて 色々と考えられると思いますが、以下の辺りではないかと・・・ ・マスタ的に扱うデータモデルのデータを初期登録する ・他の環境で使用していたデータ(mysql,postgre,oracle,sqlserver,db2等)をGAEに移行する ・バックアップしてあったデータをアップする ・パフォーマンステスト用に大量データを投入する 上記に記載した限りではないですが、色々なシーンで活用できるこの機能は、覚えておいた方が便利だと思います。 GAEでのアップロード機能は、至って簡単なものなので実際試してみることをおすすめします!! ではでは、以下より実際にデータアップロードするための手順をご紹介します。 ■事前準備 ・まずは、app.yamlに「remote_api」の設定を行います。 - url: /remote_api で、アプリケーションの更新処理を行います。 $ 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 ■実行 $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) | |

















