タグ

ブックマーク / akisute.com (25)

  • セキュリティを一切考慮しないMMORPGを開発するとどうなるか

    どうもご無沙汰しております。Blogが私の年1回の生存報告、兼、アドベントカレンダー用と相成って久しいですが、今年も一発恒例行事として筆を取らせていただきたいと思います。 今年、私が話題に取り上げますのは、とあるゲームです。Amazon Game Studiosという会社が開発・リリースしました、New WorldというMMORPGについてご紹介させていただきたいのです。ゲームの話題には一切興味がない読者諸君も、どうか少し我慢して、私に騙されたと思って最後まで話を聞いていただけませんでしょうか。そもそも、あのAmazonが開発したMMORPGというのですから、どれほどゲームに興味がなくても、技術に興味のある方でしたら、少しは興味深く感じられるのではないでしょうか? けして後悔はさせませんよ。悪い方向にね。 さて、ゲームに何ら興味知識のない方にもわかるように少し解説を入れさせていただきます

    セキュリティを一切考慮しないMMORPGを開発するとどうなるか
  • マネージメントに必要なことは全てゲームから学んだ

    この投稿は毎年恒例、pyspa Advent Calendar 2020の1日目の投稿になります。 どうもご無沙汰しております、akisuteです。すっかり年に1回アドベントカレンダーのときにだけ顔を見せる人になっておりますが、おかげさまで無事平穏に過ごしております。 さて突然ですが私はプログラマーを引退しました。 なぜなら今年で36歳だからです。プログラマーは35歳になったら定年ですね。 実際のところ、このぐらいの年になると、よほど何らかの意志が働かない限り、技術に対する情熱みたいなものが失われてくると思います。もちろん当に技術とプログラミングが好きな人は間違いなく35歳なんかで情熱を失ったりはしないと断言しますが、残念ながら私はそうではなく、もはやiPhoneには大した興味が湧いておりませんし、最近はJavaだのGoだのTypescriptだのVue.jsだのといったものを必要に応じ

    yuiseki
    yuiseki 2020/12/01
  • Android で 画面の回転や状態の復元まで考えた Fragment の使い方のガイドライン(自分用メモ)

    Fragment を使った画面を作る際に、どのように作ればうまい具合に画面の回転や状態の復元を扱えるかという自分用のメモです。 基方針として可能な限りすべての管理を当該ActivityのFragmentManagerに任せると楽 ActivityのフィールドとしてFragmentを保持するのはバッドノウハウな気がする onCreateとonDestroyが呼び出されたからといってインスタンスが生成破棄されているとは限らない、これらはFragmentManagerのタイミング次第

    yuiseki
    yuiseki 2015/11/27
  • A-Liaison BLOG: AppBank GAMESを退職していました

    表題の件、私akisuteは2013年10月末日を持ちましてAppBank GAMES株式会社を退職したことをご報告いたします。短い間ではございましたが関係者皆様大変ありがとうございました。今後の予定につきましてはとりあえずのところ問題なくやっていけそうで助かっております。 ところで、せっかくの退職エントリですので感慨深いものですし、ここはひとつ昔話などをしたいと思います。 まずはAppBank GAMESの軌跡を年表にして振り返ってみました。 2012年2月 AppBank GAMESがスタートしました。2012年4月 最初の退職者が現れました。2012年夏 第一次反乱が発生しました。2012年7月 G君という大変優秀なレベルデザイナーがジョインしました。2012年10月 Dungeons and Golfの追い込み時期にとある出来事が発生しました。2012年12月3日 Dungeons

    A-Liaison BLOG: AppBank GAMESを退職していました
    yuiseki
    yuiseki 2015/10/19
  • Swift を使ってみてがっかりした点まとめ

    数日間iOS8/Xcode6/Swiftな環境で色々試してみて、Swiftを使っていて思ったよりがっかりした点が多かったのでちょっとまとめてみようと思います。 動的な処理がSwiftだけでは一切できない [NSObject performSelector:]の類と、NSInvocationがSwiftからは一切呼び出せません。使おうとすると怒られます。objc/runtime.hは試していませんが、同様に直接Swift経由では呼び出せず間にObjective-Cをかます必要があるのではないかと思われます。 @optionalなprotocolが限定的にしか使用できない 具体的には@objc属性を付けないと使えません。しかしながらこのような後方互換性のためだけに存在する属性をいつまでもAppleがサポートするかは疑問が残るというのと、もう一つ以下の様な問題があります。 @objc属性のついた

    yuiseki
    yuiseki 2014/06/06
  • ユビレジを支える技術

    年末にユビレジさんのところでちょっと仕事のお手伝いをさせていただいたので、その時の内容をご紹介させていただきます。 ■ユビレジって何? iPadをキャッシュレジスタに変えてしまうサービスです。会計からレシートの印刷までやってくれます。最近飲店などでレジがなくiPadだけが置いてあるお店などを散見するかと思いますが、アレがそうです。一般的なキャッシュレジスタ+店舗システムよりもはるかに安価で導入でき、しかも使いやすいというのがウリです。 開発者的に言うと、Scalaモヒカンの@kmizuさんやiOSモヒカンの@k_katsumiさんなどが在籍されていまして、エンジニアのレベルが高いです。 ■開発スタイル 少人数のため、厳密なウォーターフォール管理やアジャイル/スクラムなどは無く、チケット/Issueベースの開発になっています。githubをフル活用します。すべてPull Request(以

    ユビレジを支える技術
    yuiseki
    yuiseki 2014/01/20
  • 「モバイルアプリのバックエンド(Web API)に特化したサービスのまとめ」のその後(2013年版)

    1年ほど前にモバイルアプリのバックエンド(Web API)に特化したサービスのまとめというBaaSサービスについて非常に丁寧にまとめた記事が公開されていたのをつい最近知ったのですが、公開から1年が経ちBaaSサービス周りも統合再編が起きているようなので誠に勝手ながら2013年版を引き継いて書いてみようかと思います。 まずBaaSについて基的なところはlaisoさんの元記事が素晴らしく良くまとめてくださっていますのでそちらを参照してください。 2013/05/16追記: こちらのSlideshareにも2013年現在のBaaSサービスを取り巻く状況が非常に丁寧にまとめられていますので、オススメです。 2013年のトレンド まずは元記事で上がっていたBaaSサービスの名前を片っ端からGoogleトレンドに突っ込んでみて人気度を評価してみました。その他、2013年になって登場してきたサービスが

    「モバイルアプリのバックエンド(Web API)に特化したサービスのまとめ」のその後(2013年版)
    yuiseki
    yuiseki 2013/11/13
  • LLDB を使って CUI で動作させているテストケースをデバッグする

    GHUnit のテストケースを Jenkins で自動的に走らせるために CUI のテストを作っているのですが、 GUI を使ったテストでは問題なく通るのに CUI を使ったテストのときだけテストが落ちるという問題が発生してしまいました。 Xcode 経由の実行であれば Instruments だろうが内臓のデバッガだろうが使い放題なのですが、 CUI となるとそうもいきません。そこで LLDB を直接使って CUI で動作させているテストケースを直接テストしてみることにしました。 参考にしたのはこちら。 http://lldb.llvm.org/tutorial.html さっそくやってみましょう。lldbコマンドで LLDB の対話環境を起動した後、 process attach --name MyApp --waitfor でMyApp.appという名前のプロセスが立ち上がるのを監視

    LLDB を使って CUI で動作させているテストケースをデバッグする
    yuiseki
    yuiseki 2012/11/20
  • UIWebView のスクロールを制御するためのプロパティを書いてみた

    UIWebView にどうして scrollEnabled プロパティがついてねえんだ Apple のチンパンジー野郎!とお嘆きの全国1000万の iOS 開発者の皆様、こんばんわ。もちろん私もその一人であります。 嘆いていてもしょうがないので何とかスクロールを制御する方法を・・・と思って探していたら、すでに2009年の地点で @nakamura001 さんがこんなブログを書いてらっしゃいました。 http://d.hatena.ne.jp/nakamura001/20090520/1242837408 が、遷移先で詳解されている http://praveenmatanam.wordpress.com/2009/04/03/how-to-disable-uiwebview-from-user-scrolling/ のコードが正直いまいちなのです。何がいまいちって、せっかくのCocoa環境で

    yuiseki
    yuiseki 2012/02/17
  • ゲーム作り始めました

    というわけで BP辞めちゃった わけなんですが、じゃあお前今なにやってんのよというのがこちらです。 http://www.gamecast-blog.com/archives/65644888.html http://d.hatena.ne.jp/hotmiyacchi/20120204/1328376479 はい。ゲーム作り始めました。 なんでやねん!!! これにはまぁ深いワケがあるのですが、話は去年の11月ぐらいまでさかのぼります。この新会社の社長さんの 宮川さん という方と以前から個人的に交流があったのですが、ある日ちょっと話したいことがあるから来てくれと飲みに誘われまして。その席で、 「君のコードを見させてもらった。大変素晴らしい。実はこうこうこういう仕事をやることになって、君の力が必要だ!是非来てくれ!!」 (会話内容はだいぶ事実と異なります) とラブコールをいただきまして。 で

    ゲーム作り始めました
    yuiseki
    yuiseki 2012/02/17
  • 時間を入力するために、カスタムUIPickerViewを作ってみた

    時間を入力するためのUIが欲しかったので、こんな感じのカスタムUIPickerViewを作ってみました。ソースコードはこちら。 http://github.com/akisute/YourTurn/blob/8119bf028acf4908edb602d277544bc2cf6a5848/Classes/YTTimePickerView.h http://github.com/akisute/YourTurn/blob/8119bf028acf4908edb602d277544bc2cf6a5848/Classes/YTTimePickerView.m 使い方はソースを見ていただければきっとご理解いただけると信じておりますので、UIPickerViewを使っていて気づいた点などをいくつか晒してみたいと思います。 ■参考にした記事 id:paellaさんのダイアリーを参考にさせていただきまし

    時間を入力するために、カスタムUIPickerViewを作ってみた
    yuiseki
    yuiseki 2012/02/16
  • ビープラウドを退職しました

    やや旧聞になりますが、1月末付で 株式会社ビープラウド を退職いたしました。知ってた人はすでに知ってたと思うんですが、なんかすっごい唐突で色々とすみません>< 退職理由や次の仕事の話などは次の投稿に詳しく書く予定ですのでそちらに任せるとして、今回はこの場をお借りしましてビープラウドがどういう会社だったか、ちょっと過去の振り返りなどをしてみたいと思います。 ■BPはどんな会社か (良い意味で)頭おかしい連中ばっかりが集まって、気で学び気でコード書いている集団だと思います。 具体的には 右隣の奴 が常時こんな状態で仕事してます。 こんなことを書くと当に変人しかいないんじゃないのか、お前ら大丈夫か、などと思われてしまうのですが、そうじゃないんです。ビープラウドはみんなが自分のすべてをぶつけて、さらけ出して仕事できる素晴らしい会社なんです。私は新卒で入社したSIerの会社をやめてBPに入社し

    yuiseki
    yuiseki 2012/02/09
  • 自分流 View Controllerの作り方 その2

    図を適当に補足 ViewWrapperは既存のすでにあるどうしようもない設計のViewを何とか救いたいときに非常に便利、Wraper / Decoratorパターンを適用してボタンのタップを奪い取ってViewHelperに流すみたいな役目をする ViewHelperは簡単に言うならUITableViewControllerのdelegate, datasourceだけを担うオブジェクトみたいな感じ。要するにView専用のドメインロジックを書くオブジェクト Viewの表示を制御するドメインロジックが途方もなく大きくてViewControllerに納めるのが不可能になってしまったときに超便利 Serviceは準ドメインロジックだと思っている、たいていの場合セミシングルトンみたいにする(通信が絡むので複数画面をまたいで使うことがほとんど) Androidの場合はここ、普通にServiceクラスで

    自分流 View Controllerの作り方 その2
    yuiseki
    yuiseki 2012/02/06
  • 自分流 View Controllerの作り方 その1

    その2はこちら 以前勉強会の際に発表した View Controller の作り方のメモをまとめてみました。あくまでメモなので中身はうまくまとまっていませんが、何かのご参考になればと思います。 通信が絡んでくると、たいていの人がやりがちな問題(実例) API通信のレスポンスを処理するコードがViewControllerの中に入っている API通信が3種類必要で、Aを実行したあとにBとCを実行しなければならないとか ABCのレスポンスJSONのパースまでViewControllerでやっている というかAPIの呼び出しの組み立てだとかURLの指定だとか自体がIBActionの中に入っていたりする API通信だけじゃなくてIn App Purchaseなどでも同様の事例が見られる それに対する対応策。そもそもなぜこのような問題が発生するのか? Outletの生成・更新・レイアウトが分離されてい

    自分流 View Controllerの作り方 その1
    yuiseki
    yuiseki 2012/02/06
  • Core Graphics (Quartz) のみで日本語文字列を描画するライブラリのヘッダファイルを書いてみた

    とある理由で UIKit の描画機能が使えず、 Core Graphics のみで文字列の描画処理を行わなければならないことになってしまったので、適当に調べてみました。 ■ことのはじめ Core Graphics の機能だけで日語の文字列を描画する方法については、既に先人の方々が調べて記事にまとめてくださっていたので、そちらを見ていただければ大丈夫です。 http://iphone-dev.g.hatena.ne.jp/ktakayama/20100129 http://d.hatena.ne.jp/r_kurain/20100316 基的にはこちらで紹介されている方法に従って進めていけば困ることはありません。ただし、描画した文字が上下反対になることがありますので、 CGContextSetTextMatrix を使う箇所を調整したりする必要があるかも。 で、最大の問題になるのがこれら

  • xxd を使って画像などのバイナリデータをソースコードに含める方法

    iOS向けのライブラリやフレームワークを作成しているときに、どうしても画像などのバイナリデータをライブラリやフレームワークに含めたくなる時があります。たとえばUI系のフレームワークなどですね。このようなときに、たとえば静的ライブラリ(.aと.h)やフレームワーク(.framework)とセットで画像を一緒に同梱し、ユーザーのXcodeプロジェクトに一緒に含めてもらうという方法もあるのですが、この方法だと画像名がユーザーのプロジェクトに含まれている画像とかぶったりしてはいけませんし、管理が面倒になってしまいます。また、ライセンスがプロプライエタリなライブラリでは、画像などのリソースをあまり積極的にユーザーに公開したくないというニーズがあったりします。 そこでxxdツールのご紹介です。岸川先生に教えていただいたのですが、xxdというツールを使えばバイナリデータをC言語のヘッダファイルとして簡単

    yuiseki
    yuiseki 2012/01/31
  • Objective-C がこの四年間でどれぐらい進化したのか一目でわかるテストケース

    Twitterに流したら思ったよりも好評でしたので、ブログにも上げておきます。 こちらがiOS 2地点でのNSURLConnectionクラスを使った非同期通信のテストケース。 こちらがiOS 5でのNSURLConnectionクラスを使った非同期通信のテストケース。 Blocksはやっぱり偉大です。一つしかテストケースがないうちはまだマシなのですが、これが10個とかになると楽さが全く違ってきます。ぜひためしにURLだけ変えて同じテストケースを10個作ってみてください。iOS 5のBlocksを使ったコードはほとんどコピペだけで終わりますが、iOS 2でのdelegateを使ったコードは他にも変更しなければならない点が多数出てくるはずです。 また実際にこのコードを走らせてみると、理由はよくわからないのですがiOS 5で追加されたAPIを使ったコード(Blocks)のほうがそうでないコード

  • CS193P 11日目 非同期処理をやってみる

    非同期処理を行う方法はいくつかある URLフェッチ処理ならば、NSURLConnectionクラスをつかっておけば一発 さらに簡単にURLフェッチ処理を行いたいのであればこのライブラリをおすすめ URLフェッチ以外の処理を行うならば、NSThreadを使うか、NSOperationとNSOperationQueueを併用する NSThreadは従来どおり、当にスレッド処理を記述する必要があるため非常に大変 対するNSOperationはインスタンスをつくってキューにぶち込んだら後は勝手にやってくれる、楽 UIViewやUIViewControllerに対する処理(要するに画面に対する処理)は、必ずメインスレッドから呼び出す必要がある スレッドセーフではないため 要するに[object performSelectorOnMainThread:withObject:waitUntilDone

    CS193P 11日目 非同期処理をやってみる
  • Android のメモリ管理は大変です

    ■理想 AndroidってJavaだからメモリ管理なんてしなくてもいいよね!! なんて思っていた時代が私にもありました・・・ ■現実 @Override protected void onDestroy() { super.onDestroy(); // 画面が回転した時など、Activityが破棄されるときに呼び出されます // すべてのメモリはここで開放します // - 特に危険なのが内部クラス(MyWebChromeClientなど)、正しく開放しないとActivityが開放されません // - セットしたbackgroundのcallbackもnullにしないと開放が行われません // - webViewのdestroy()を忘れると後からGCが走ったときにVMがクラッシュします this.webView.stopLoading(); this.webView.setWebChro

  • UDIDが使えなくなりそうなので、UIIDを使えるようにしました

    ■2012/11/11追記 iOS 6より[[UIDevice currentDevice] identifierForVendor]というAPIAppleより提供され、よりプライバシーに配慮した上により安全な方法で自分の開発したアプリケーションを利用するユーザーを個別に認証することが可能になりました。それに伴い拙作のライブラリもidentifierForVendorが利用可能であればこちらを利用するように修正いたしました。今後はこのidentifierForVendor(または広告APIなどを作る場合であれば[[UIDevice sharedManager] advertisingIdentifier])が個体認識の主流になっていくと思われます。identifierForVendorとadvertisingIdentifierの仕様まとめは http://stackoverflow.c

    yuiseki
    yuiseki 2011/08/24