ヘキサ日記 Blog

 

        

こんにちは。

急激に寒くなったので、風引かないようにと警戒している よっしーです。

 

今回は、Windowsでフォルダの階層をテキストで確認できる

 

tree

 

コマンドの紹介です。

 

普段、エクスプローラーでフォルダ構成を見れるので、特に必要はないのですが、

特定のフォルダ階層のチェックや状況の把握がテキスト等で確認できるのが、ちょっと便利です

 

利用方法としては、コマンドプロンプトを起動し、

 

tree

 

と入力するだけです。

 

これで、以下のようにツリー上にフォルダ構成が表示されます。

D:.
├─test1
│  ├─test1-1
│  └─test1-2
└─test2
    └─test2-1

 

また、以下のようにオプションをつけると

拡張文字でなく、ASCII表示にしたり

ファイル名まで表示が可能です。

 

tree /A /F

+—test1
|   +—test1-1
|   |       testfile1.bmp
|   |
|   \—test1-2
\—test2
    \—test2-1

 

まぁ、なんてことないコマンドですが、データが加工できるテキストに

することができるのは非常に便利ですよね

 

他にも使い方次第ではいろいろと活用方法があるかもしれません。

 

ちょっとしたフォルダ構成の調査等に利用してみてはいかがでしょうか。

 

では


        

お久しぶりです、コウスケです。

 

前回は、関数型プログラミングを簡単に紹介しました。
関数型言語は関数を変数、すなわち引数や返り値として
用いることが出来る

のが特徴でしたが、今回紹介する

map, filter, reduce はその恩恵を充分に
実感できる機能です。

 

関数型言語が提供する肝となる要素であり、概念になります。
前回と同様, pythonを用いて説明をしていきたいと思います。

 

さっそくですが、一連の要素(リストと呼びます、C言語でいう配列を想像してください)に、

・それぞれに同じ処理/操作を適用させたい
・条件に合うものだけを抜き出したい
・2つの要素に処理を適用させ、その結果を次の要素に次々と適用させたい

ということはよくあることではないでしょうか(最後がやや強引ですが・・)?

 

実はそれぞれが map/filter/reduce の機能そのものなのです。
(reduceはfoldとも呼ばれます。)
それぞれが関数として提供されています。

 

例えばmap関数は、引数に関数とリストをとり、
リストの要素に対して渡された関数を適用させる機能を持ちます。
サンプルコードで見たほうが早いと思います。

 

 [サンプルコード] 
def sample1():
    # 操作対象のリスト
    lst = [1,2,3,4,5,6]
    
    #----------------
    # mapの例
    #----------------
    print "[map]-----"
    def double(angel):
        """
        値を2倍する関数
        pythonでは関数内で関数を定義できます
        これはドキュメンテーション文字列と呼ばれる関数コメントです
        """
        return a*2
    
    print lst, "->"
    # リストの要素を2倍したものを返します
    lst = map(double, lst)
    print lst
    
    #----------------
    # filterの例
    #----------------
    print "[filter]-----"
    def isMod4(angel):
        """
        4で割り切れるか判定する関数
        """
        return a%4 == 0
    
    print lst, "->"
    # リストの要素から4で割り切れるものを返します
    lst = filter(isMod4, lst)
    print lst
    
    #----------------
    # reduceの例
    #----------------
    print "[reduce]-----"
    def add(a, b):
        """
        与えられた2引数を加算する関数
        """
        return a+b
    # リストの要素を合計したものを返します
    sum_val = reduce(add, lst)
    print "sum=", sum_val

 

[実行結果]
[map]-----
[1, 2, 3, 4, 5, 6] ->
[2, 4, 6, 8, 10, 12]

[filter]-----
[2, 4, 6, 8, 10, 12] ->
[4, 8, 12]

[reduce]-----
sum= 24

 

これらは一体何なのか・・何が大切なのか・・というと、
このmap/filter/reduce 関数は、C言語でいうとfor 文に相当する、
要素を走査して繰り返し何かを行う」機能自体を抽象化して、
提供しているのです。

 

こうして通常の言語ならベタに命令列として記述してしまうものを
できるだけ関数化して提供し、それらを組み合わせることで
大きな柔軟性、簡潔性が得られるわけです。

 

オブジェクト指向では「データとその操作」を抽象化しますが、
関数型では「操作(手続き)の抽象化」に重きをおいているといえると思います。

 

例えば、mapやfilterでは上述のような例だけでなく
任意の関数を与えることであらやる処理や条件を記述できるのは
容易に想像できると思いますし、
reduceでも下記のような比較関数を用意して
最大値、最小値が求められます。

 

[サンプルコード]
def sample2():
    lst = [4,8,12]
    #--- mapの例追加
    def puts(s):
        print s # pythonではprintは関数ではないため
    # lst要素の表示
    map(puts, lst)
    
    #--- reduceの例追加
    def getLarger(a, b):
        # pythonでの三項演算子 (a==b)? a:b の表記法です
        return a if a>b else b 
    def getSmaller(a, b):
        return a if a<b else b
    # 最大値、最小値の表示
    maxval = reduce(getLarger, lst)
    print "max=", maxval
    minval = reduce(getSmaller, lst)
    print "min=", minval
---------------- 
[実行結果]
4
8
12
max= 12
min= 4

最後にもう少し実用的な例を示したいと思います。
カレントフォルダから.txt拡張子を探し、
tmpフォルダにコピーし、合計サイズを返します。

 

[サンプルコード]

import os, os.path
import shutil
import operator

def sample3():
    # tmpフォルダを作っておく
    filelst = os.listdir(".") # カレントフォルダのファイルリスト
    if not os.path.exists("tmp"):
        os.mkdir("tmp")
    
    # .txt拡張子ファイルを抽出
    def is_text_file(fname):
        return os.path.splitext(fname)[-1] == ".txt"
    filelst = filter(is_text_file, filelst)
    print filelst
    
    # tmpフォルダにコピー
    def copy_to_tmp(fname):
        shutil.copy2(fname, "tmp")
        return os.path.join("tmp", fname) # コピー先パスを返す
    # サイズリストを取得:mapの適用をつなぎあわせています
    fsizelst = map(os.path.getsize, map(copy_to_tmp, filelst))
    print fsizelst
    
    # 合計サイズを表示
    size_sum = reduce(operator.add, fsizelst)
    print size_sum

最後に、「面白い書き方だけど逐一関数を定義するのが面倒かな・・
とか思う人も多いと思います。

 

pythonでは「リスト内包表記」という、
より直感的でわかりやすい記述が可能です。

私も今回は無理やりmap/filter/reduceを使いましたが、
普段はこれを使っています。

興味があれば調べてみてください。

 

今回のまとめ
・map/fiter/reduceは関数型プログラミングの肝となる基本機能だ。
・map/fiter/reduceはリストの走査と要素の操作を抽象化する。
・これらの関数を組み合わせることによりリスト要素の柔軟な操作が可能になる。

次回は関数を返り値として返すことの便利さを紹介します。

 


2014年10月29日

憤怒

        

こんにちは、マイキーです

 

皆様は勿論ご存じの事とは思いますが、今月の26日に行われたmotoGPマレーシアGPにてマルク・マルケス選手が、年間最多記録に並ぶ12勝目を挙げました

マレーシアGPは17戦目ですから、17戦中12勝。圧倒的じゃあないですか……
また、この勝利でマルケス選手の所属するホンダもコンストラクターズ部門のタイトルを獲得しました
おめでとうホンダ!頑張れヤマハ!

 

次のグランプリは最終戦であるバレンシアGP。
マルケス選手は15戦目の日本GPで既に年間チャンピオンを獲得していますから、あとは年間最多記録の更新を目指すのみ、といったところでしょうか。
今年もmotoGPは最後まで目が離せませんね

*=*=*=*=*=*=*=*

先日good sunこと山口も申しておりましたが、すっかりになりましたね
日毎に日の出は遅く、日の入りは早くなりつつあります。
そんな夜長にホラーゲーム…は怖いので、ここは一つ、映画を観て過ごすのも良いかな、なんて思います。

 

この秋、個人的に注目しているのはフューリーという、第二次世界大戦はヨーロッパ戦線を描いた作品です。といっても公開が11月末ですので、ほとんど冬ですね
作品名の「フューリー(Fury = 憤怒)」とは、米軍のとあるシャーマン戦車に付けられた名前で、劇中ではこの戦車に搭乗する5人の兵士に起こった出来事が描かれています

 

見どころと致しましては、彼らの心の動きや触れあい等もありますが、やっぱりここは迫力のある戦車戦
と言わなければならないでしょう!
特筆すべき所として、特筆劇中で描かれる戦車のほとんどは昨今の他の映画よろしくCGで描かれていますが、いくつかのドイツ軍のティーガー戦車に関しては、何と実物を用いて撮影が行われています
しかもそのティーガー戦車、世界で唯一の実働可能な車両なのです

 

現在のCG技術を用いれば、実物と見分けがつかないレベルのティーガー戦車を何台も描く事は出来るでしょうが、長い間、きちんと手をかけて残されてきた戦車が銀幕を飾るのは、何とも感慨深いものがあります
先述の通り、技術の発達した現在では「知らなければ何ともない」と思われてしまう可能性もありますが、「知っていればニヤリと出来る」隠し味、受け売りですが、大切だなぁと思います

 

隠し味は映画にはもちろん、ゲームにだって大切。
こういった気の利いた隠し味、ゲームに入れていきたいなーと思います。
それではまた


        

最近、肌寒くなりましたよね

厚手の長袖タンスから引っ張り出してきました。ついこないだ、灼熱地獄だったのに
季節の変化についていけてない今日この頃。ご無沙汰しておりますコンドウです。

今回も前回に引き続きiOSのGame Centerについてのお話です。

 

Game Centerを使ってみよう! Act.1

 

前回はGame Centerの特徴的な説明で終わりましたが今回はもう一歩踏み込んだ
コード的な話をしたいと思います。

まずはGame Centerを利用するための準備編です。

Game Center対応のアプリケーションを作成するには次のような手順になります。

まずはApple DeveloperサイトにGame Center対応アプリの登録が必要です。
これが無いとGame Centerの認証できません。

 

登録方法は

予めAppleのデベロッパー契約しておかないといけない(これは当然ですね)
iTune Connectのサイトに訪問
[マイApp]をクリック
作成されているアプリを選択(何も用意していなければまずはアプリ登録から!)
Game CenterをONする

以上で、Webでの登録は完了。

 

次にXcode側の設定

プロジェクトのInfoを開いて[Required device capabilities](※無ければ新規追加)に、
 itemを1つ追加しStringタイプで”gamekit“と登録
Web登録で登録した[Bundle ID]を同じくInfoの[Bundle identifier]に書き換え
Build Phasesの[Link Binary With Libraries]に[GameKit.framework]を追加
ソースファイルを追加(適当にGameCenter.hとGameCenter.mm)して適切なコードを記述
既存のAppDelegate.hとAppDelegate.mmに適切なコードの追加

※Xcodeは4.4の頃のものです。(ちょっと情報古いです)

 

ではコーディング

まずはGame Centerの認証処理から

まずはクラスの宣言から。

 GameCenter.h

@interface GameCenter :NSObject 
//--------------------------------------------------------
// クラスメソッド
//--------------------------------------------------------
+ (GameCenter*)instance;
//--------------------------------------------------------
// 公開メソッド
//--------------------------------------------------------
-(id)init;
@end

そしてソース。

GameCenter.mm

@interface GameCenter(){
// ここにクラスで使う変数等を宣言する
}

// プライベートプロパティ
//authenticated		GameCenterユーザ認証完了待ち(NO:認証中 YES:認証完了)
@property (nonatomic) BOOL authenticated;
//playerId		プレイヤID(nilの場合はGameCenter認証失敗)
@property (copy) NSString *playerId;
//localPlayer		GKLocalPlayerオブジェクト
@property (strong) GKLocalPlayer *localPlayer;
//myMatch		GKMatchオブジェクト
@property (strong) GKMatch *myMatch;
//matchRequest		マッチ用リクエスト
@property (retain) GKMatchRequest* matchRequest;

@implementation GameCenter
static GameCenter *sharedInstance = nil;
+ (GameCenter*)instance
{
    @synchronized(self) {
        if (sharedInstance == nil) {
            sharedInstance = [[self alloc] init];
        }
    }
    return sharedInstance;
}

/* init関数
 (コメント) 初期化関数
*/
-(id)init
{
    self=[super init];
    if(self){
        [self initMatchMaking];
        _matchRequest = [GKMatchRequest new];
    }
    return self;
}

/* dealloc関数
*/
-(void)dealloc
{
    [_matchRequest release];
    [super dealloc];
}

/* GameCenterのユーザ認証
 (コメント) GameCenterでのユーザ認証画面を起動する。
            認証完了はisAuthenticated==YESかどうかで確認。
*/
-(void)authenticateLocalPlayer
{
    GKLocalPlayer *player=[GKLocalPlayer localPlayer];
    if(player.authenticateHandler==nil){    // 初めてのハンドラー登録なら
        player.authenticateHandler = ^(UIViewController *viewController, NSError *error) {
            if (viewController != nil){
                AppDelegate* delegate = (AppDelegate*)[UIApplication sharedApplication].delegate;
                [delegate.rootViewController presentViewController:viewController
                 animated:YES completion:nil];
            }else if (player.isAuthenticated){
                self.authenticated=YES;
                [self localPlayerDidChange:player];
            }else{
                self.authenticated=YES;
                if(self.playerId){
                    [self localPlayerDidChange:nil];
                }
            }
        };
    }
}

/* プレイヤ情報を保持
 player		GKLocalPlayerデータ
*/
-(void)localPlayerDidChange:(GKLocalPlayer *)player
{
    self.localPlayer=player;
    if( player != nil ){
        self.playerId=player.playerID;
    }
}

/* ユーザ認証開始
 (コメント) GameCenterでのユーザ認証画面を起動する。
            完了まで時間がかかる為、完了待ち関数(GameCenter_IsAuthenticate)を別途用意。
*/
void GameCenter_Authenticate()
{
    [[GameCenter instance] authenticateLocalPlayer];    // ユーザ認証
}

/* ユーザ認証完了確認
 (戻り値)
    0       確認中
    1       確認完了(認証成功)
    -1      確認完了(認証失敗)
 (コメント) GameCenter_Authenticateで認証開始した結果をこの関数で確認。
*/
int GameCenter_IsAuthenticate()
{
    GameCenter *inst = [GameCenter instance];
    if( !inst.authenticated ){    // 認証中
        return 0;
    }
    else{
        if( ![inst.localPlayer.isAuthenticated] ){    // 認証失敗
            return -1;
        }
        return 1;    // 認証成功
    }
}

今回はGame Centerの認証まで処理を用意しました。
使い方としてはまず、
GameCenter_Authenticate()
を実行し、
次のフレームからは
GameCenter_IsAuthenticate()
で認証完了を確認する感じです。

 

Game Center認証画面

140813-001

 

この認証が済まないとGame Centerのサービスが利用できません。必ず最初に行いましょう。

今回はここまで
Game Centerの認証さえ済めば、あとは色々なサービスを利用する事ができます。
ここを乗り越えて行きましょう。

 



 

Objective-Cはちょっと癖のある言語(C系っぽくない)ですが、面白いところもあります。
例えば、CやC++ではクラスの実装で内部メンバを見せたくない場合でも宣言に記述しないと
いけないですが、Objective-Cならソース側(m/mmファイル)にも宣言できるので完全に隠蔽
する事ができます。他にも色々ありますが脱線するので割愛。

 

iTunes Connectサイト

GameCenterプログラミングガイド


2014年10月27日

秋の夜長と有刺鉄線

        

あっという間に夏が終わりを告げて、秋がやって来ました。
秋の夜長と言われますが、そんな夜長を乗り越えるゲームがついに出ましたね。
みんな大好きサイコブレイクです
こんにちは、ホラーゲームといえばgood sunこと山口(B)です。
みなさん遊んでいますか?

サイコブレイクといえばパッケージが印象的です。
 とても痛そうな有刺鉄線です
ふとこの有刺鉄線どういう仕組みになっているのか気になったので、
今回のブログは突発的に有刺鉄線のモデリングに挑戦してみます。
使用ツールはmodo801です。

まずはネットで情報収集してみますが、とげの部分の構造が良くわからないです。
がそもそも幾つかバリエーションがあるようです。
ミニチュア用の有刺鉄線の作り方等を参考にしながら納得いくまで確認します。
手元に針金があると断然考えやすいです。
考える事30分。。。

どうやらパッケージでも使われている巻き方が一番単純なようですね。
構造も分かったところで早速作り始めます。
鉄は熱いうちに巻けです。

まずはカーブツールでカーブを作ります。
modoはスナップが優秀という話をよく聞きますが、
面白いように思ったようなスナップをしてくれます。
グリッドスナップを利用して程良い所にポイントを打ちながら直線を作り、
複製して対角線上に配置します。
20141027_barbed_00
続いてツイストで720°ねじります。
こんな感じになります。
20141027_barbed_01

このカーブを基に4角形をカーブで押出します。
20141027_barbed_02
パスに整列のチェックを外すのを忘れずに。
すかさずCatmull-Clarkに変換しておきます。
これで基になる鉄線部分が出来ました。
20141027_barbed_03

次に有刺な部分を作ります。
この部分は2本の針金を巻きつけて4本の棘を作っています。
今回もカーブで押し出すわけですが、
ネットで紹介されていたmodoで超簡単にバネを作る方法を使います。

ディスクを作ります。
サイドの数 x 周回数 = セグメントの数です。
大体の画像が3回巻いていたので今回はサイド8*3周でセグメント24にします。
三角分割後に、このように2頂点を選んだらアローキーの↑を連打します。
20141027_barbed_04
20141027_barbed_05

3週分選んだら形状->カーブパレット->開いたカーブでカーブを作成します。
20141027_barbed_06

で、これを基にカーブで押し出しを行います。
蓋して、縁をシフトで引き伸ばしたら
Catmull-Clarkに変換してエッジウェイトを入れて尖らせます。
大体こんな感じになります。
20141027_barbed_07

この物体を複製して180°回転させると見慣れたあの形状にになります
20141027_barbed_08

全部合わせるとこんな感じです。
20141027_barbed_09

メッシュを結合してオフセットしながら複製します。
頂点を結合にチェックを入れるのをお忘れなく。
20141027_barbed_10

以上で有刺鉄線の完成です。
ね、簡単でしょ。
(ゲームで使うにはポリゴン数がとんでもないですが)
案外構造が分からない身近なものって沢山ありますよね。
こうやって一度作ってしまうと良い勉強になるものです。
さて、無事有刺鉄線出来たので秋の夜長を満喫して下さい。
ということでまた今度


2014年10月24日

モンスターストライク

        

お久しぶりです。
ついにパズドラの連続ログイン日数が900日を超え、

1000日超えも見えてきた状態になりました、ナカムラです。

そんな私がパズドラと同様に継続してプレイしているスマホアプリに、モンスターストライクがあります。

 

 

monst

 

 

リリース開始から1年が経過し、今更説明が不要なほど数多くの人にプレイされているタイトルですが、改めて基本的な遊び方を説明しますと…

おはじきの要領で味方キャラクターを動かし、敵キャラクターにダメージを与えて勝ち進んでいくゲーム
という事になるかと思います。
味方キャラクター同士がぶつかったときに発動される「友情コンボ」のバリエーションが多彩で、これからも面白くなっていく事が容易に想像できます

 

先日1300万DLが記録され、TVCM もよく目にするのですが、

何故か周りでプレイしている人はあまり見かけません…。
でも、大丈夫
モンストには共闘プレイ(リアルタイム協力プレイ)がありますから

モンストでは見ず知らずの人と協力するプレイモードが優遇されていて、ユーザーへのメリットが多いんです。
例えば…

 

・プレイするにあたって必要なスタミナを消費するのはホストの人のみ

 

・コンティニューする場合も、ホストの人だけがコストを支払えば、全員がプレイ継続可能

 

・協力プレイ中は、普段ゲーム内通貨を落とさない敵が、頻繁に通貨を落とす

 

・他のプレイヤーキャラクターが得たラックボーナスを、全員が受け取れる
 ラックボーナスとは、キャラクターの運パラメータが高いと入手出来る事がある、

 ギャンブル的な要素を含んだアイテム獲得ボーナスです。
 4人でプレイすれば4倍のラックボーナス獲得チャンスが得られる事になります。
 運パラメータの高いキャラクターを持っているユーザーは協力プレイで重宝され、

 フレンドリクエストが多くなる傾向があるようです。
 それ故に、できるだけ運パラメータの高いキャラクターを作る事が目標の1つになってます

 

・協力プレイをしたメンバーの中に初顔合わせの人がいたら、課金アイテムをもらえる(回数制限有り)。

 協力プレイで一緒に共闘するメンバーは通常ランダムで選ばれますが、

 その中に初めて一緒に協力プレイをするユーザーがいると、その数に応じた課金アイテムが付与されます
 もらえる回数に上限はあるものの、課金アイテムのメリットを充分に味わえるだけの報酬を得る事ができると思います。

 

・フレンドと協力プレイを続けると、一定期間毎に報酬をもらえる
 一旦フレンド登録したユーザーと協力プレイを重ねる事により、もらえる報酬があります。

 

こんなに優遇されてたら、もうスタミナ消費をして1人プレイをするのが馬鹿馬鹿しくならないか…?と思ってしまいそうですが、そこの対策も上手く考えられています
ゲスト参加してクリアしたミッションはクリアした扱いにはならず、ミッションコンプリート報酬がもらえませんし、プレイヤーの経験値も取得出来ないので、レベルを上げたければ1人プレイをするか、ホストとなって他のプレイヤーを招待する必要があります。

 

スタミナ制を導入している多くのアプリで、
「スタミナが無くなったから、回復まで一休みしよう
という切っ掛けでプレイをストップする事があるのに対し、モンストではプレイを止める切っ掛けがなかなか掴めません

まんまと制作者の意図に乗せられながら、モンスターストライクをプレイする日々が当分続きそうです


2014年10月23日

少年ジャンプ+

        

こんにちは平尾です
早速ですが、最近お気に入りのアプリを紹介したいと思います!

 

 

ご存じの方も多いもしれませんが「少年ジャンプ+」です。

 

 

携帯などで「少年ジャンプ」を購読することができるアプリです。
定期購読をすると月額900円
最近のジャンプは260円付近なのを考えると、
月あたりの金額は140円ほどお得になると思います
しかも定期購読するとジャンプNEXTも読むことができるので、お得感倍増です
(合併号の分を考慮すると若干お得感は減りますが…

 

 

基本的に端末にダウンロードする形なので、
買いに行く手間が省け、行き帰りの荷物量も減ります
月曜日は祝日なので、土曜日発売になってた…
というときもすぐダウンロードできるので、

とても…とてもありがたいです
(ゴミを出す手間が減るのも嬉しい限りです

 

 

難点を挙げるとすると、電子書籍はどうしても解像度が足りないので、
細かい文字や線がぼやけてしまいます

 

が、見開きページも絵がずれないよう調整されていたり、
最後のページの作者コメントもきっちり載っていたり、
いずれかのマンガのも追加で載せていたりと
既存のものと比べた時に出来るだけマイナスに取られない、
プラスにする工夫が凝らされているなぁと感じました。

 

 

オリジナルの持ち味を残しつつ、より良いものに仕上げる。
ジャンプアプリを見習いつつ、良いものを開発できるよう
がんばっていきたいと思います


        

こんにちは、タマキです。

 

前回はポッドキャストアプリ『Overcast』を紹介しましたが、今回も普段利用しているタイマーアプリ(iOS)を紹介します。

 

ちなみに、私のタイマーの利用シーンとしては、主だったところだと、

・ 電車を降りる時間(2分前くらいに設定)で設定。
・ 勉強中や開発中で、「何時頃に終わろかな」というとき。
・ ゲームなどをしていて、「あと何分後にスタミナが十分なところまで回復する。それまでは別のことしてよ」

といった感じです。

 

で、今回のアプリは『ListTimer』です。

こちらもリリース後あたりから ほぼ毎日利用させていただいています。

 

 

ListTimer

 

< ListTimer画面 >


 

 

このアプリの大きな特徴はリストからタイマー時間を設定すること。

 

これにより、タイマーを設定するのに要する時間や手間が大幅に短縮されています。

 

 

どれくらいか。

 

 

iOS標準アプリの場合。

1. アプリを起動
2. [タイマー]を選択。
3. 時間と分をピッカーで設定。
 なんどもフリックするなど…。
 ここに手間と時間がかかる…。
4. [開始]をタップ

 

ListTimerの場合。

1. アプリを起動
2. リストから指定の時間をタップ(デフォルトは1分間隔で選択できる)

 

操作手順だとこのような感じ。
ピッカーでの選択を考えると、体感で時間は結構な差が出ます。
(「ピッカーの時間かかり具合はなんとかならないかと思っている」という方も多いのでは? ここに手間と時間がかかるんですよね…)

 

 

iOS標準タイマーアプリ

 

< iOS標準アプリ 画面 >

 

これまで使ってきての感想は、

・コンセプトとそれをもとに制作されたアプリにブレがなく、アップデートでの追加機能もその方向で練りこまれている。

と、「余計なことはしないっ!」というところがイイなと思います。

 

特に、「時間を設定する」から「時間を選ぶ」という切り口が、とてもいい。

 

ここに、「サクッとタイマーをセットする」というコンセプトと絡み、追加機能も慎重に選ばれている感じがします。

・選択できる時間の間隔は当初1分間隔だけだったが、10秒・10分が追加。

 コンセプトが変わるようなインターフェースにはされていない。
・タイマー時間だけ表示されていたが、終了時刻も表示されるようになった。
 終了時刻が表示されるようになったことで、アタマの中も設定までがシンプルになった。
 (それまでは「28分後にタイマー」なら早いが、「14:58にタイマーだと…何分後?」となり、遅かった。現在は解消。)

など、コンセプトとなるもの(アプリの一番の特徴となっているところ)を「尖らせたまま伸ばす」と印象を受けました。

 

また、UIに関しては

・セルの大きさは、押しやすいく かつ 選択しやすいような調整をされている。
・タイマー時間と終了時刻の表示は、フォントの大きさや色・それぞれの配置が良く、視認しやすい。
・時間間隔の切替も上部のタブを切り替えるだけでなく、リストをフリックでも可能。

 指を上部まで持っていく必要はない。

 など、シンプルなアプリながら いろんな配慮がされてます。

 

ただ、iOS仕様の制限のため、「もっとこうできれば」ともどかしいところもありますが…。

(作者も思っているだろうな、とは思います…)。

 

 

このタイマーアプリのように、(ゲームやアプリだけでなく、大小 様々なプロジェクトに関しても)コンセプトをしっかりと定義し、新しい切り口とかけあわせれば、新しいものに生まれ変わるよね、と思います。

 

 

 

時計絡みで。

 

1年ほど前。アラームをいくつか設定する必要がありまして。

「アラーム時にテキストを表示してほしいなぁ。”~への出発支度”とか。作るかなぁ。」と思って、後日 仕様を考えようとアプリをいろいろ触っていたら iOS標準アプリにその機能があったという…。

ご存知なかった方は是非。

 


2014年10月21日

積極採用中!!

        

こんにちは!
松下です。

 

まずは、2015年度新卒採用に関しては、終了を致しました。
10月1日に内定式も終え、後は来年の入社式を待つばかりです。

 

そして、早くも2016年度の新卒採用計画も進行中です。
年内には、色々と情報が出せると思いますので、2016年新卒の方は、ご期待下さい!

 

中途採用に関しても、熱く展開してます!
東京で行ったキャリア向けの会社説明会も大変好評で、嬉しく思っています。
「東京だけでやっているから、東京の人員募集に力を入れているの?」
と思われた方、そんな事はありません!
東京でも大阪でも、各職種、積極採用中です!

 

ということで、来月、キャリア向け説明会を大阪でも開催します!

 

キャリア向け会社説明会in大阪

 

ヘキサドライブは、コンシューマ据え置き機向けゲーム開発、
スマホ向けゲーム開発、両輪でガシガシ回していく予定です。
どんな会社なのか、ちょっと興味があるよ、という事で構いません。
お気軽にお越しください。

 

また、キャリア向けには、個別の会社見学も実施しています!
こちらもお気軽にお越しください。

 

キャリア向け会社見学

 

さて、ヘキサドライブでは、オリジナルスマホ向けゲーム
ダイコン王の野望ッッッン!! 」を年内リリースを目指して、鋭意開発中です!
LINEスタンプも配信していますので、宜しくお願いします!

Twitter用画像

 

 

 

 

 

それでは!

 

 


2014年10月20日

TERRA BATTLE

        

電車で隣に座っていたお姉さんがMH4Gをプレーされていて

(まだまだモンハン熱は高い!そしてMHP2G for iOSもよろしくね!!)

と思いました。シラッチです。

 

そのとき私は何をしていたかと言いますと今をときめく

TERRA BATTLE(テラバトル)をプレーしていました!

坂口博信さんがプロデュースされているタイトルという事で

個人的に配信前から注目していたタイトルだったのですが

…面白いッ

 

操作とルールは至ってシンプルなパズルRPGで、オセロや

はさみ将棋が近いのかなと思いますが、味方同士の連携や

アイテムの活用、各敵、ステージ独自のルール等々、、

この操作とルールでこれだけのバリエーションが生み出せるのかと

正直驚いています。

今は13章、13-8のボスでムググ…そう来たか…と苦戦中です

 

また、ダウンロードスターターという取り組みも

このタイトルの面白い試みかと思います。

タイトルのダウンロード数に応じて、アーティスト参戦、

ゲームの新モード追加等々が開始されるというもので、

ものすごい勢いでDL数が伸びているので、今から

どこまで伸びるのか楽しみにしています。

 

さて、私たちも負けていられないという事で、ダイコン王の野望ッッッン!! を

鋭意制作中です!

良い形で皆さんにお届けできるように公開に向けて奮闘中ですので

乞うご期待!

 

実はLINEスタンプも配信しています!

https://store.line.me/stickershop/product/1014441/ja

こちらの方も是非よろしくお願いします~

 

ではまた~


ヘキサブログ ピックアップ



過去の日記はこちら

2014年10月
« 9月   11月 »
 12345
6789101112
13141516171819
20212223242526
2728293031