投稿

Android/iOS クロスプラットフォームなフレームワーク

イメージ
Android, iOS, Windows 等々,各社のプラットフォーム上でアプリ開発をするにあたって,それぞれ個別に - Android は Java - iOS は Objective-C - Windows は C♯ と言った具合に複数の言語,複数の環境でアプリ開発をしなきゃならん. ・・・ものすごい開発コストです. すでに大手のスマホアプリ開発会社は,開発費を下げるために, プラットフォームを横断した形で使える汎用のフレームワーク(ミドルウェア)の採用を進めています. ゲーム向けで言うと,それはUnityであったり,はたまた cocos2d-x であったり. DeNA なんかは ngmoco という会社を買収して,ngCore なんていうクロスプラットフォームなゲームエンジンを使ってたりする. クロスプラットフォームすげぇってのを体感するため, オープンソースな cocos2d-x を最近触り始めた. C++ で使える2Dゲーム用のゲームエンジン. 開発環境の設定は 「Mac だったら」とてつもなく簡単. 以下のページを参考にしたらHello world まではあっさり行けると思われます. http://albatrus.com/main/cocos2d/6125 iOS はXcodeでサクッと行ったんだけど,Android のほうでビルドが通らずやきもきしている!糞が! 追記:テストの実行 $ cd cocos2d-x/cocos2d-x-3.3rc0/tests/cpp-tests/   $  cocos run -p android ちょっとしたTips: ファイル追加した場合は Android.mk にファイル名追記を忘れずに 他社の開発環境はひとつのベンチマークにする意味でも, また,最先端の技術を追う上でも大切に思えます. 本を読むのもいいけれど,日々進歩していくソフトウェアの世界に足を突っ込んで学んでいく方がソフトウェアエンジニアっぽい. あと,アプリ屋さんが作りやすいような抽象化したフレームワークの実装は,高い技術力・設計力が必要となる部分なのですごく興味ある. 特に cocos2d-x はオープンソースで github のリポジトリでコミッ...

マネー関係のメモ

せどり・転売ビジネス Chromeエクステンション クローバーサーチB スマホアプリ せどろいど(Android) せどりすと(iPhone) 節税・ふるさと納税 ふるさと納税 千葉県市川市 ( 等々 ) 節税 冬の賞与 賞与支給1ヶ月前は残業しない 社会保険料 4~6月分の支給額 http://allabout.co.jp/gm/gc/379773/

仕事効率化のためのアクションアイテム3選

社会人3年以内の私ですが偉そうに社会で学んだ業務効率化方法を3点セットでまとめてみます。 生き急いでる人は以下の太字だけさらっと見て去っていって下さいな。 なお、効率化する業務の対象は、「だれでもできるクソみたいな雑用」とします。 社内で若手とみなされる人間は、上の人から雑用をふられます。 おそらくこの雑用をちゃっちゃかこなすことが次の美味しい仕事をもらうための鍵になります。 私は開発者(笑)なので、外注管理とかシステムのセットアップとか動作検証とか様々クソが降りかかります。 最初は鬼の形相で脳内血管ブチギレ状態でこなしていた毎日で、 ストレスフルでノン☆クリエイティブな毎日からは得るものはほぼ皆無でした。 でもでも、業務をこなす中でいいコト思いつきはじめ、クソ業務の見方を変えて一気にクリエイティブなお仕事に再定義して楽しい毎日を送っております。 そのためのカギを3つまとめました! 1. フレームワーク化 ルーチン化した仕事を毎日やることは、会社にとっては必要ですが自らの能力向上にはなりません。誰にでもできる仕事なんでそのうち若いコストの低い人材に代替されてゆきます。 パターンを見抜き、型を作り、他の仕事にヨコ展開できるカタチにまとめてみることをおすすめします。これをフレームワーク化と私は呼びます。 例えば、外注先のマネージメント。 外注さんは何も知らぬので、作業工程・用語・業務フロー等々、何から何まで手取り足取り指示する必要があります。 クッソ面倒です。 年次が上がると、外注さんのマネージメントなんてたくさん案件抱えるようになります。 特に私がクソだと思うのは社内関係者との情報共有。 わざわざ再構成した資料を準備するのとかめんどすぎやろ。 こういったクソ業務をうまくハンドリングするためには、 日々の定型化した業務を抽出して、 要素ごとにアクションアイテムを羅列して、 図表化しておく。 社内向け資料として再構成するんじゃなくて要素ごとに資料を分けておいて、 そこから抽出するだけにする。 仕事のパターンとして抽象化出来たら、もう他の業務にもヨコ展開できちゃう可能性が出てくる。 ヨコ展開力、これが新人とベテランの違い( ⇔ 経験からくる効率の差 )になってくる。 自分のような若い世...

Machine Learning (Andrew Ng) @ Coursera その5

Classification binary classification problem 線形回帰は覚えたけど、これを分類問題に適用することはいい考えではない。 そこでロジスティック回帰が出てくる。 ロジスティック回帰は回帰というくせに分類問題に使われてて、 離散的な分類値に対して、0~1の値を取る関数を当てはめる。 Advanced Optimization これまでは最急降下法を最適化アルゴリズムとして採用してきたが、 もちろんこれ以外にも最適化アルゴリズムが存在している。 例えば、 Conjugate gradient BFGS L-BFGS と言った具合に。 ただ、数値計算のエキスパート出ない限りは直接実装するべきではない。 まずはライブラリ使うべき。 機械学習のライブラリを試していいライブラリを使ってまずは慣れる。 その中でいい実装悪い実装を見分ける。 Octaveはアドバンスドな最適化アルゴリズムが提供されているのでとりあえずはそれ使う。 optimset() と fminunc() をつかってアドバンスドな最適化を行う。 使い方としては、コスト関数の各パラメータに関する偏微分値とコスト関数値を返す関数を引数として渡すだけっぽい。 Multiclass classification 複数クラスの分類問題についての話。 複数クラスの教師セットを与えられた時は、one vs all(one vs rest) と呼ばれる分類問題を解くことになる。 A,B,Cに属するクラスは、Aと(B,C)に属するクラスで教師セットを分けて、 それらの決定境界を導出する。  => Aになる確率が求まる。 Bと(C,A)に属するクラスで教師セットを分けて、分類器を適用し決定境界を導出。 => Bになる確率が求まる Cと(A,B)に属するクラスで教師セットを分けて、分類器を適用し決定境界を導出。 => Cになる確率が求まる 確率を比較して一番大きい物を採用すれば良い。

Machine Learning (Andrew Ng) @ Coursera その4

イメージ
自学自習でOctaveの設定変更してみた。 Octave起動するといろいろ設定がdefault臭してすごく効率が悪い。 こういったときは .bashrc ならぬ、 octaverc なるものがあるんですわ。 この設定ファイルは、パス的には以下になります。 ( 私のインストール先はCドライブ直下なのでその辺は読み替えて下さい。 )  C:\Octave\3.2.4_gcc-4.4.0\share\octave\site\m\startup で、2つの欲望を叶えるためoctavercを書き換えます。 1つは、起動時から自分の作業ディレクトリに飛びたい 2つは、糞長いプロンプトをPython風に ">>" にしたい 夢を叶えるスクリプトは以下のとおり。 ## System-wide startup file for Octave. ## ## This file should contain any commands that should be executed each ## time Octave starts for every user at this site. cd D:\Octave # Move to working directory PS1(">>") # Change prompt 全然難しくないですね。 Plotting Data clear; t  = [0:0.01:0.98]; y1 = sin(2*pi*4*t); y2 = cos(2*pi*4*t); plot(t,y1); hold on; # hold figures to overlap plotting plot(t,y2, "r"); xlabel("time"); ylabel("value"); legend("sin", "cos"); title("my plot"); close; cd "data" print -dpng "myPlot.png" # png is file format ...

Machine Learning (Andrew Ng) @ Coursera その3

イメージ
今回はOctave マンセーうぇえ~いって話。 機械学習やらパターン認識で、Java C++ Python numpy Rとか色々ありましたねぇ。 でもそれらって結構実装に時間食うよね?めんどいよね?PDCA回すの遅れるよね? シリコンバレーではこういった問題にはとうの昔に気付いておりまして、 すぐにこういった言語で実装し始めるんじゃなくて、 まずはプロトタイピングとしてOctaveが使われておりまっせ。 まずクイックにPDCAを回す競争力の高い企業が集結したシリコンバレーでは、 アイディアの実証がサクッとできてカネがかからんやつがプロトタイピングとして好まれたわけか。 ちなみに、Matlabでもいいんだけどクソたけーよって話もある。 あと、Python numpyでもいいけど、構文ちょっとややこしいやんけ。 とかいう感じで他の言語を軽くディスった上で、今日はOctaveの素晴らしさを布教しようじゃありませんか。 以下、コマンドメモり散らし! 変数の取り扱い >>1 ~= 2 ans =  1 >>1 && 0 ans = 0 >>1 || 0 ans =  1 >>xor(1,0) ans =  1 >>1 == 1 ans =  1 >>1 == 1 % this is a comment ans =  1 >> PS1(">>>") % prompt would be changed to >>> >>a = 3; % semicolon suppressing input >>b = "hi"; >>a = pi a =  3.1416 >>disp(sprintf("2 dicimals: %0.2f", a)) 2 dicimals: 3.14 >> >>format long >...

Machine Learning (Andrew Ng) @ Coursera その2

第二回目の Machine Learning by Andrew Ng氏 今回は、線形回帰問題の解法として、最急降下法と正規方程式があるけど、 それらの特性について理解しようぜという話が主。 Feature scaling 最急降下法の収束スピードは各軸の値のスケールが近い方が速い。 スケールが揃っていないと、最急降下法における微分値が大きくなるケースが増えて(?)、 収束が遅くなる。 歪んだ楕円形を解消するため、各軸の数値をスケーリングすると収束特性が向上する。 この辺の数理的な背景については言及しないが、図的には納得の行く話。 覚えること:  フィーチャーを同じ範囲に入るようにスケーリングすることで早く最急降下法が収束する。  ( ⇔ より少ないイタレーション回数で収束する) フィーチャースケーリングの一つとしては、Mean normalizationが便利 平均値で引いて、標準偏差でスケーリングするいわゆる標準化と呼ばれるよく知られた手法。 Gradient Descent in Practice Ⅱ 最急降下法が正しく動作していることのデバッギング方法は、 イタレーション回数を横軸とし、コスト関数の値をプロットすること。 コスト関数が凸で、ステップ長が十分小さければ単調減少するはず。 自動収束判定を行うには閾値を設定する必要があるけど、 それの決定は非常に難しい。 だから、割とコスト関数をプロットして大体の収束判定をグラフィカルに判断することも実務上はよくあること。 コスト関数が収束しないなーと思ったら、 単純に実装ミスか、イタレーションのパラメータ(ステップサイズ)が大きすぎるかを疑ったらよさげです。 収束には向かってるんだけど、コスト関数の収束が遅すぎるなぁと思った時は こういうのも、図的なイメージが頭のなかに入っていれば、 コスト関数の挙動を見つつ何が原因かを相応できるんじゃないでしょうか。 Normal Equation 正規方程式の話は数学的な話はすっ飛ばして、 データが困難だったらこんな行列Xと教師セットから行列X,ベクトルyを当てはめて pinv(X'*X)*X'*y すればおk って感じでした。 ちなみに最急降下法では教師セッ...