2014-09-22(月) | -- (permalink)

『12ステップで作る組込みOS自作入門』という本を読んだので、その内容や感想について書いてみる。

動機

ウェアラブル時代に備えて

勝手な予想ではあるが、これからウェアラブル端末向けアプリケーションの需要が高まるとすれば、それはすなわち計算資源の少ない環境での開発が避けられないということではないかと思う。そうすると、アプリケーション開発者も低レイヤの知識を身につけておいて損はないのではないかと考えている。

モバイルソフトウェアの限界を感じて

なんとなくソフトウェアだけで問題が解決できそうな時代ではなくなってきた気がして不安を感じている。もし本当にハードウェア・スタートアップとかが台頭してきて、一山当てる時代とかになったら対応できないとまずそうだ。(モバイルソフトウェア開発自体に価値がないということではない。「アプリとか誰でも作れる。そのうち無くなる仕事。」みたいなニュアンスの語り口の人をtwitterとかで稀に見ることがあるが、「いや、そもそもこっちだって動くものを作るだけなら簡単なのは百も承知だ」というのがあって、そういう言説には多少イライラしている。ある程度の規模のアプリケーションを長期的に運用していくマネジメントとか、大規模なフレームワークを隅まで理解している人の重要さとかを側で見ていると、「誰でも作れる、なんていう暴論を吐くのはアプリケーション開発に対する無知のなせる業だろ」っていうのが一番言いたくなることだが、それは置いておく。)

未来予測のため

コンパイラやハードの進化がソフトウェアで実現できることを底上げするわけであるから、これらの進化を追うことはソフトウェアの未来予測に繋がるはずである。例えば、Appleが製造するチップの性能やLLVMの新機能などを見ていれば、Apple製デバイスの長期的な戦略が多少は察しがつく(今だとGPU関連の技術への投資が目立つ...)。

ブラックボックスを減らすことで、心理的負荷が下がる

私の中でプログラミングの最大のモチベーションはブラックボックスを減らすことだ。前書きにこんな記述がある。

興味があれば、本を読むのも試行錯誤をするのも面白いでしょう。面白ければ続けることができます。大切なのは継続することです。そしてそのために考えるべきは、「どの順番で読むべきか?」ではなく「自分のモチベーションを維持するにはどうしたらよいか?」なのです。だから好きなことをやる ...


2014-07-07(月) | -- (permalink)

はじめに

私は文系出身のプログラマであるが、今年の4月でようやくプログラマ歴2年になった。 その私がこの1年間で読んだ本を、整理も兼ねてまとめてみる。

読んだ本一覧

コンピュータサイエンス全般

「文系出身の」と見出しをつけたものの、文系・理系がどうとかあまりそういうことにはこだわらないし、また、こだわるのは愚かだと思っている。 かのハイゼンベルク

科学は人間によってつくられるものであります。これはもともと自明のことですが、簡単に忘れてしまいがちです。 このことをもう一度思いかえすならば、、しばしば嘆かれるような人文科学-芸術と、 技術-自然科学という二つの文化の間にある断然を少なくすることに役立つのではないでしょうか。\<W.ハイゼンベルク(1974)『部分と全体』みすず書房 p.vii>

と文理の壁を超えることの重要性を説いている。こうした哲学的基礎があったからこそ、 不確定性原理という非常に深遠な考えを導き出すことが出来たのであろう(私程度の知性では全く理解できない原理ではあるが)。 とはいえ、文系出身の私にとってはアカデミックな教養がないというのは大変なコンプレックスであり、

「「コンピュータサイエンス」」

とか、ましてや

「「計算機科学」」

などと唱えられると、「ははぁ、参りました」となってしまう。 というわけで、そういうアカデミックな雰囲気を醸し出す本にはめっぽう弱い。

コンピュータの構成と設計〜ハードウエアとソフトウエアのインタフェース

通称パタヘネ。 3章までしか読めていない ...


2014-06-25(水) | -- (permalink)

はじめに

Yahoo!JAPAN様主催の第1回 Swift LT会に参加し、発表してきた。

資料

要点

「Swift中級編」と銘打ち、初見では気づきにくい側面について自分なりにまとめてみた。

Objective-Cでの開発経験があり、Swiftの特徴・メジャーな言語仕様についてある程度理解していている、そういう人を対象にしている。

そういう意味での「中級」だ。

内容から察していただける通り、「Objective-Cの動的特性にかなり愛着がある」というのが、この発表での私の立場だ。

Swiftに対する印象

自分のまだまだ短い業務経験の中で、実用的な言語の登場を目の当たりにしたのはこれがはじめてだった。

だが、別に物珍しい言語でもなんでもない。近年の実用的な言語の仕様、LLVMの進化などから言って「当然そうなるであろう」という言語だ。

実用化を強く意識しているだけに、「驚き最小の原則」が徹底されていて、ドラスティックな機能は存在しない。

あくまでアクのないベーシックな言語ではあるが、

等々、モダンで重要な機能は全部取り入れた、そういう印象が強い言語だ。

情報発信の価値について

むしろ印象的だったのは、言語そのものではなく、その広がり方だった。


2014-05-26(月) | -- (permalink)

はじめに

私は、業務で主にObjective-Cを利用しているのだが、Cがよく分からないままObjective-Cを使っていると、なんともいえないモヤモヤした気持ちになる。低レイヤのAPIを使用するときや 、老害っぽいコード読む時など、Cがよく分かっていないことを痛感させられる。Cをほとんど学んだことがないままで、CのスーパーセットであるObjective-Cをやっている。こうした境遇の人は結構多そうだ。そこで、Cを勉強するのに良いテーマが無いかと探していたところ下記のサイトを発見した。

Buil Your Own Lisp

うん、これしかないだろう。何かの言語を学ぶときにLispの処理系を作るのは定番だ。CでLispを実装し、HaskellでLispを実装し、LispでLispを実装するのだ(超言語抽象)。というわけで、このチュートリアルを最後までやってみたのだが、日本語の記事でこの内容に言及しているものはほとんどなかったので、どんな内容であったのか簡単にまとめてみた。一部翻訳があるが、完全に意訳である。ご了承いただきたい。

どんな人がやるべきか

これは著者が冒頭で述べている通りである。

This book is for anyone wanting to learn C, or who has once wondered how to build ...


2014-05-05(月) | -- (permalink)

中途半端な否定

「私はネガティブなんです」と嬉々として喧伝する者が、如何に中途半端な否定を実践しているかを指摘することはいとも簡単である。それは、彼らが「自分自身の否定的傾向について、肯定している」という中途半端さを持っているからだ。これは、負数に正数を掛け続けるようなものであり、その符号は負で在り続ける。私はこれを誤解されたネガティビズムと考える。

現実は残酷である

はじめて自らに対して否定の目を向けた時、確かに世界は地獄の様相を示す。己を客観的に観察した時、誤魔化しようのない欠陥が幾つも見つかるからだ。そして、唯物論の世界を信じるものは、その欠陥をあるがまま見つめ耐えるしかない。唯物論者は嘘偽りによって自らを慰めたり、誰かの慰めの言葉に耳を貸すことはできない。たとえ幸せであったとしても、盲目的な考えに支配されているものは不幸であり、我々はそこから解放されなければならない。しかし、そのようにして解放された先の、物事があるがままである地は恐ろしく残酷だ(私の尊敬する優れた哲学者たちは、その残酷な世界で哲学をどう働かせれば絶望することなく生きていけるかを模索している人たちである)。こうした容赦無い否定に自らを晒し続けることで、自信は喪失し、他者からの信頼も失う。その中で、気づくことがある。

「この否定は果たして私の役に立っているのだろうか。」

真に否定的であるとうこと

否定に対し否定の目を向けた時、何が起こるだろうか。肯定的な人間になったといえるだろうか。そうではない。自分の精神活動を否定する行為によって、己の限界を打破しようとしているわけで、あくまで否定的な人間のままだ。だが、これは大きな進歩である。自らが「否定そのもの」ではなく ...


2014-04-30(水) | -- (permalink)

はじめに。

昨年末から休日を図書館で過ごすことが多くなったが、お陰で有用な本に出会う確率が大幅に上がった。せっかくなので、備忘録も兼ねて有益な本を紹介していきたい。ちなみに、図書館を利用しても本を買わなくて良くなることはない。むしろ、手元に置いておきたいと思う本が増えるので、本に対する投資は増えた。

情報格差、おいしい?

プログラマとして自分の価値を高めるためには、やはり情報格差を利用したい。つまり、入手できる情報が他人より多いということで差別化を計りたいのだ。そのためには、英語は必須となる。英語で検索し、英語で一次情報にあたることができるだけで、それができない人よりも鮮度も精度も高い情報を得ることができるというのは当然のことだ。このような理由から、英語学習の熱意が高まる中で、この本に出会った。

(ちなみに、まつもとゆきひろさんは「情報格差」より「情熱格差」が重要だと仰っていた。日本のような出版・翻訳が盛んな国では、情報格差というのはかなり少なく、むしろ情熱の有無が格差になってくるだろうというご意見である。これは最もであるが、とりあえずは情報格差があるという前提で話を進めたい。)

外国語学習の科学。

内容はいたってシンプル。第二言語習得(SLA)の専門家である著者が、その理論を一般向けに紹介した本である。まぁ、要するに「条件Aと条件Bで外国語学習を行わせた結果、統計的に有意味な差が認められましたよー」といった類の情報が沢山紹介されていると思っていただければ良い。簡略化しすぎて、怒られそうではあるが...。ところでこの本 ...


2014-02-19(水) | -- (permalink)

はじめに

2/15-16と2日間に渡って行われた、Open Hack Day Japan 2というイベントに参加してきた。 ここではイベントの概要、開発したプロダクト、参加して得た感想について述べる。

Open Hack Day Japan 2とは

Hack Dayは世界各国のYahoo!で開催されている開発イベントで、24時間という限られた時間で自由にアイデアを創造、実際に開発し、できあがったプロトタイプを発表します。日常の業務から離れ、自由な発想で、好きな技術を使って開発に取り組めるクリエイティブマインドにあふれたHack Dayは、ヤフー社内で300人近くの参加者を集める人気イベントです。

これをヤフーが社外にも公開したのがOpen Hack Dayであり、今回はその2回目となる。 今回も参加者約350名、チーム数80強と、比較的大規模なイベントとなったようだ。


2014-02-12(水) | -- (permalink)

概要

この2月からadvertisingIdentifierの利用方法が原因でリジェクトされるケースが大量に発生しているようだ。自分自身でadvertisingIDを利用するコードを書いている人はあまりいないであろうが、UDIDが利用できなくなった現在、効果測定を行うSDKの大半がトラッキングのためにこのIDを利用している。そして、このadvertisingIDの利用方法がリジェクトされてしまう原因であるようだ。

ちなみにリジェクトされるとこのようなメッセージがくる。

PLA 3.3.12

We found your app uses the iOS Advertising Identifier but does not include ad functionality. This does not comply with the terms of the iOS Developer Program License Agreement, as required by the App Store Review Guidelines.

Specifically ...


2014-01-31(金) | -- (permalink)

静的サイトジェネレーターを使いたかったので、Wordpressをやめた。 現在、Pelicanに移行中。


2013-12-24(火) | -- (permalink)

(この投稿はQiitaのiOS Second Stage Advent Calendar 2013の25日目の記事です)

もはや非常に一般的となった、CIDetectorによる顔検出。

ただ、よく見るサンプルはほとんどカメラの入力に対するリアルタイム検出ばかりだったので、

試しに動画に対して顔を検出するサンプルを作成してみた。

https://github.com/yuseinishiyama/VideoFaceDetection

CIDetectorとAVAssetReaderを組み合わせるだけで簡単にできる。

VFDVideoFaceDetector.h

#import <Foundation/Foundation.h>

typedef void(^VFDVideoReaderCompletionHandler)(NSArray *allFeatures);

@interface VFDVideoFaceDetector : NSObject
- (void)readFromURL:(NSURL *)targetURL
complitionHandler:(VFDVideoReaderCompletionHandler)completionHandler;
@end

VFDVideoFaceDetector.m

#import "VFDVideoFaceDetector.h"
#import <AVFoundation/AVFoundation.h ...

Page 1 / 4 »