フェイ=サンの何か

このブログは筆者が感じたことを淡々と書くブログです.過度な期待はしないようにしてください

GooglePlayにアプリ公開しました!(らくでん -楽天でんわ用アプリ-)

楽天でんわ、イイですよね~通話料金半分!

 

でも、電話帳から直接"楽天でんわ"でかけられないんですよね・・・ 

f:id:minismahn:20131226214218p:plain → f:id:minismahn:20131226220007p:plain → f:id:minismahn:20131226214907p:plain

 

 

なのでこうした  

f:id:minismahn:20131226214218p:plain → f:id:minismahn:20131226215327p:plain → f:id:minismahn:20131226221651j:plain

 (エフェクトやり過ぎた感満載)

 

らくでん -楽天でんわ用アプリ-
Keisuke Kiuchi
価格:無料  平均評価:0.0(0 件)

 

名付けて「らくでん」、GooglePlayに絶賛公開中です

  

おもな機能

 ・発信時に自動で「0037-68」をつけてそのまま電話をかけてくれる

 ・上記の変換対象に含めない電話番号を登録できる

 ・設定からデフォルトで起動する電話アプリを設定できる

 

製作期間

 ・2日ほど

 

宣伝

  ・お願いします!

 

FacebookとかTwitterで要望が有れば適当に機能追加するかもしれない

 

Let's Leap motion(ちょっと遊んでみる)

もはやこの手のデバイスならお約束張りのコイツをさっそく動かしてみようと思ふ

 

f:id:minismahn:20130807233611p:plain

 

ちなみに写ってるのはLeapmotion用のサイト「Airspace」。

 

 

で、GoogleEarthさんをLeapmotionで使ってみた感想。

むっず!!

LeapMotionに慣れてないだけかもしれないけどまともに操作できねぇw

 

 

ちなみに映像左下に写ってるのが実際の手の動き。感覚的にはほぼラグもデータ落ちもなくスムーズにトレースされている印象。

 

 

さーて、これを使って何作ろうかなぁ~

Let's Leap motion(開封の儀~インスコまで)

先日頼んだLeap motionが届きました

 

f:id:minismahn:20130807214554j:plain

 

開封!

 

f:id:minismahn:20130807221312j:plain

ようこそ新世界

 

さらに開封!

 

f:id:minismahn:20130807221322j:plain

 本体。シールにはセットアップのURLが。ナニコレカッコイイ。

 

さらにさらに開封!

 

f:id:minismahn:20130807221328j:plain

 接続用のケーブルとか。見ると長いのと短いのがある。親切だ。

 

 

さっそくさっきのURLからインストーラーらしきものを落としてきてインスコ…

 

 

してみたらドライバーが認識しねぇし!   Σ(´゚д゚`)

 

なんかWestBridgeとかになってる。。。(テンパって写真撮り忘れた。。。)

 

 

え?初期不良的な…?とか思いつつLeapmotionのサポートページへ足を運ぶ。。

f:id:minismahn:20130807231559p:plain

 

 

あ、なんかスゲーそれっぽい項目発見…

f:id:minismahn:20130807231748p:plain

 

各状態に応じて細かく対処法が書いてあって、思ってた以上に手厚いサポートで少し感動…

f:id:minismahn:20130807231915p:plain

 

さらにスクロールしていく

 

f:id:minismahn:20130807232338p:plain

該当項目発見!

 

対処法はなんかリンク先のドライバのインストーラー使ってね、ってことなんで早速インスコ…

 

動いた!

f:id:minismahn:20130807232536p:plain

 

 

 

【プログラミング】【Scala】第7章(Scala勉強4日目)

そろそろタイトルのネタが尽きてきたので無難なタイトルに変更

これ書いてる時点ですでに13章まで読み終えてるけどブログ書くのがめんd。

 

第7章:組み込みの制御構造

Javaと同じなところは割愛して、Javaとは違う部分のみを記載

 

ーif―

・値を作り出すことができるため↓のような書き方ができる

  val filename = if(args.isEmpty == false) args(0) else "def.txt"

 

ーwhileー

・whileでは代入の結果は常にUnit型の値を返すため、↓の書き方をすると無限ループ

   var line = ""

   while( (line = readLine() ) != "") println(line)

 ※:line = readLine() が常にUnit値の()となる

Scalaはwhileループ使うくらいなら再帰関数を使っていこう、というスタイルらしい

 

ーforー

JavaでのForeachの書き方に近い(気がする)

  for(str <- args) println(str)

・for式はあらゆるコレクションを処理できるので↓のような書き方もできる

  for(i <- 1 to 4) println(i)  //1~4が出力

  for(i <- 1 until 4) println(i) //1~3が出力

コレクションに対してフィルタリングができる。複数フィルタも適応可能

  for(fileName <- fileNames if( fileName.endsWith(".scala")) println(fileName)

  ※:結果はファイル名の末尾が".scala"のものだけ出力される

    (fileNamesにはファイル名のリストを格納)

  for(fileName <- fileNames

   if fileName.endsWith(".scala")

   if fileName.startsWith("a")) println(fileName)

for式の最後にyield<本体>と書くことで結果を新しいコレクションとして格納できる

  def scalaFileNames = for{ fileName <- fileNames

            if fileName.endsWith(".scala") } yield file

 

-throw/try-catch/finally-

・throwはJavaと一緒っぽい(多分)

・try-catchのcatchでcase文が使える

  ~~}catch{

    case ex : FileNotFoundException => //ここにエラー処理

    case ex : IOException => //ここにエラー処理

   }

Javaとは異なりfinallyは結果値を返さない

 

ーmatchー

・switch文に近いやつ。条件に一致するcase文の処理を適応できる

 val friend = str match{

         case "salt" => "pepper"

         case chips" => "salsa"

         case _ => "nothing"

        }

   println(friend)

 

ーbreak/continueー

存在しない(Breaksクラスを使えば例外的に使える)

 

 

そろそろScala以外のブログも書こうかしら。。。

【プログラミング】【Scala】コップ本、長い。(Scala勉強3日目)

6章

このあたりからScala特有の内容が含まれて来て徐々にペースダウン。

 

6章:関数型スタイルのオブジェクト

Javaではクラスがコンストラクタを持ち、コンストラクタがパラメータを受け取るが、Scalaはクラスが直接パラメータを受け取る。基本コンストラクタって言うらしい

 コンストラクタでの処理はそのまま記載する

例:    class Hogehoge (x:Int, y:Int){

              println(x + "hoge-" + y)

          }

Javaから入った身としてはすごく違和感。。

 

・イレギュラーな値かどうかをコンストラクタでチェックしたいならrequireメソッド

 想定外ならIllegalArgumentException投げてくれるよ

例:  class Hogehoge(x:Int, y:Int){

     require(x != 0)

                  println(x + "hoge-" + y)

        }

・メソッドとかでコンストラクタの引数を使いたいなら一回変数におくべし

・オーバーライドの方法はC#に似ている(気がする)

例:    class Hogehoge (x:Int, y:Int){

    require(x != 0)

              println(x + "hoge-" + y)

      val a = x

      val b = y

      override def toString = a + "hoge" + b

          }

 

・自己参照のthisはJavaとおんなじ感じで使える

・基本コンストラクタ以外にコンストラクタを持ちたいときはthisを使おう

 補助コンストラクタって言うらしい

例:    class Hogehoge (x:Int, y:Int){

    require(x != 0)

              println(x + "hoge-" + y)

      val a = x

      val b = y

    def this(z:Int) = this(z, 0)

      override def toString = a + "hoge" + b

          }

演算子もメソッドなのでこんなこともできる

  def + (x:Int, y:Int):String = x + "hoge" + y

・オーバーロードは存在する。感覚としてはJavaと同じ

【プログラミング】【Scala】コップ本、重い(物理)。(Scala勉強2日目)

3章~5章まで読了。

Javaやってたからこの辺は割とサクサク進む一方、Scala独特の発見があったりもしてなかなか興味深かった。

 

第3章のまとめ ~Scalaプログラミングの次の1歩~

Scalaではすべての演算がメソッド呼び出しである

すなわち、1 + 2 と (1).+(2) は 同一である。

1+2という演算は、「1」というInteger型の変数が引数を1つとる「+」というメソッドを呼び出す、と言い換えることができる。

 ・Rubyとかも演算子がメソッドっぽい書き方できるらしい。時代進んでんなー。

Scalaでは引数を1つだけとるメソッドは「()」と「.」を省略できる。

ScalaではListが機能豊富。さらに引数に関数をとれるため柔軟性が高そう

 ・count,exists,filter,forall,foreach,map,remove,sortが関数を引数に取れるっぽい。

 ・曰く、flatmapがさいきょーらしい。

 

異なる型を格納できるListっぽく持てるTupleがすごく便利。

 ・Javaでは面倒な複数の戻り値を持つ、ということが簡単にできる。

 

・純粋な関数型の関数には副作用がない。(多分)

 ・純粋な関数型→値を渡したら値を返すだけの関数であり、

  プログラムの状態を変化させず、また状態の影響を受けない。

 ・副作用→プログラムの状態を変えること、とか。(多分)

 ・関数の戻り値がUnit(Javaでのvoid)だと副作用ある可能性大だよ!

 ・副作用がない→入出力が正常値であることを確認すればその関数が常に正しいことを保証できる→テストの信頼性が上がる。これが関数型言語で書くとバグが少ない、って言われる所以なのかしら・・・?

 

第4章 ~クラスとオブジェクト~

Scalaではデフォルトのアクセス修飾子はpublicである

・文末のセミコロンはいらない

・Static修飾子は存在しない。その代りシングルトンオブジェクトを持っている

 ・記載方法はJavaでのclassキーワードの代わりにobjectキーワードを入れ使う。

  class hogehoge{ ・・・} → object hogehoge{ ・・・}

 

第5章 ~基本型と演算子

Scalaにはプリミティブ型が存在しない。

・基本はJavaと同じ

・「”””」で文字列囲むとその中はエスケープ文字を無視してすべて文字列と判断

・リッチラッパーが存在する。ちょっと面白そうと思った奴だけ抜粋。

 実現方法も面白いらしい。

 ・0 max 5 → 5を返す

 ・4 to 6 → Range(4,5,6)を返す

【プログラミング】【Scala】コップ本、届きました。(Scala勉強1日目)

 コップ本、届きました。

f:id:minismahn:20130715225633j:plain

 

分厚いです。全部で700pくらいありました。

 

でも、某ラノベよりは薄いことが判明

f:id:minismahn:20130715225721j:plain

 

 

で、さっそく第1章と第2章を読みつつコーディングしてみたまとめ。

 

第1章のまとめ

結論:これからの時代はJavaよりもScalaじゃないか?

 

第2章のまとめ

  • Scalaでは、1+2 の「+」さえもメソッドである
  • ScalaJavaをラッピングしている?のでJavaのクラスが使えるぞ!
  • 関数の定義の仕方は↓の通り

   def max(x:Int , y:Int ):Int = if(x > y) x else y

def :関数であることの宣言

max:関数名

(x:Int, y:Int) :関数の引数

x:Int :関数の引数名とその型

:Int :戻り値

= ~~ :~~以降は関数の処理

  • Scalaはスクリプトとしても実行できるぞ
  • While使うくらいならfor、foreach使うべし
  • foreachは引数を1つ取るメソッド
  • 関数リテラルなるものが存在する。C#で言うところの無名メソッドっぽいやつらしい。書き方は↓

   (x:Int, y:Int) => x + y

結論:Scalaはいろいろできる…らしいよ?

 

 

続く。。。といいなぁー