やまめも

【 ゲーム開発・日々のことについて 】

【着想】情報と情報技術

世の中にはいろんな情報で溢れている。私は日々接するそれらの膨大な情報によって、気がつけば自身の考えは深く埋もれてしまっていることが多頻繁にある。本来必要のない情報も取り込み、思考の明快さはなくなってしまう。

情報

人間の歴史とは情報の歴史と言えるかもしれない。20万年前ネアンデルタール人が生き残れず、ホモ・サピエンスが生き残ったのは、ホモ・サピエンスが、生存競争上優位な能力を持っていたと考えられている。その優位な能力とは、情報を仲間に共有できる能力だと言われている。それが、のちに、文字として記録されるようになり、人類の飛躍的な進化をもたらしたという歴史がある。

情報技術

情報技術というのは、それらの情報の編集をする過程で生まれた技術を、人間に役に立つように汎用的に使われるようになった技術だと解釈している。 より鮮明に情報技術を理解するには、情報学など網羅的な勉強が必要だ。情報技術とは何かということを自分なりに解釈した上で、その技術を扱う専門家になりたい。

【就職活動】26歳新卒 就職活動を振り返って 第一弾

就職活動がひと段落した。

2016年5月ちょうど一年前のこの頃に、来年は日本に帰って就職活動をしてみようと漠然と考え始めた。最初のきっかけは、当時出会ったばかりの現在の彼女に実は大学院を休学してインドネシアで働いていると伝えた時に、修了しないと勿体ないと言われたことだっだと思う。(大学院を中退することしか頭になかったため、さっと流したが、今考えてみるとそれが最初のきっかけだった。)6月末に一時帰国し、大学の担当教官に大学に復学したいという旨を伝え、2016年8月ごろに具体的な帰国時期を決めた。そのころから就職活動に関して考えの整理を始めた。そして、数ヶ月前にエントリーした第一志望を含めた複数の大手企業から、内々定を頂いた。

就職活動を振り返ってみると、これまでの経験が、点と点で繋がっているように思う。それらの一部を紹介したい。

学部時代

小説、旅行記、心理学、哲学に関連する読書

  • 書籍を通して自身の人生に対峙した経験
    • 自身の存在を俯瞰的に見れる自信

生物科学、地球科学、文化人類学など学問の探求

  • 研究室配属後に出会った細胞生物学を通して学問の醍醐味を味わった経験
  • 学問を通して物事を多面的に見ることができるようになった経験
    • 驚きをもってこの世界を享受できる自信

日記(メモノート)習慣

  • 日記を学部3年のころから続けている。(経験
  • 大きな分岐点で冷静に判断してきた経験
    • 自分のコンディションを管理することができる自信(交換留学、復学、就職活動など)
    • 可能な限り気づきを最大化できている自信(成長は自身の経験からの気づきによる)

書道部、マラソン

  • 新たなコミュニティへの参加経験

専門科目の勉強

  • 機械工学の理論勉強を経験。成績優秀者として院試免除で進学。

交換留学・インターン・大学院時代

交換留学の目的は、文化交流・言語学習であり、一般的な大学院生が行く研究留学ではなかった。そのため、院生である私が行って良いのかという葛藤があった。しかし、人生という長期的な視点で、留学で得られる経験を捉えた時、間違いなくプラスになるという確信があった。研究する時間が短くなるというデメリットがあったが、留学で得られるだろう経験と比べると大したものでないと思い挑戦した。

一歩踏み出した経験

  • 自分が試したいと思ったことを実行した経験
  • 失敗を恐れて挑戦しないより挑戦して失敗した方が良いと認識できた経験
    • 失敗を恐れず挑戦した方が、後で後悔しないで済むことを知っている自信

異文化での生活

  • 異なる宗教、文化での生活を経験
  • 国が変われば、国のシステム・文化や価値観が違い、そこで生活する人の生き方も異なることに身を持って経験
    • 環境順応性・柔軟性があることへの自信
    • この世には様々な生き方があって良いということ認識している。
    • 日本の価値観が全てでないと認識している。東南アジアから見た日本を知る。(日本の衛生環境水準の高さなど)

異文化コミュニケーション

  • 異なる宗教、文化が違い価値観の異なる方とのコミュニケーションした経験
    • 異なる文化を尊重し、共生できる力を持つという自信(異なる文化の尊重、共生)

母国語以外を学ぶこと

  • インドネシア語:日本語にない発音を学ぶことの面白さ。コミュニケーションするために言語を学ぶことの面白さを経験
    • 与えられた機会の有難さに感謝し、すべきことを考え実行できるという自信
    • 逆境を乗り越えることができる自信

語学資格の勉強

  • インドネシア語技能検定試験 C級取得、TOEIC840獲得(経験
    • 自分の目標に対して計画を立てて、それを達成することができる自信

専門以外のことを習得

  • プログラミング:ゼロから勉強し始め、最終的にモノを作る面白さを感じるまでに至った経験
  • チームで目標に向かい取り組むことで成果を残すことができ、また、その過程で旨味を感じることができた経験

就職活動

早い時期からの準備

  • 就職活動解禁の半年以上前(2016年8月ごろから)準備を始めたため、情報収集し対策の時間をじっくり取れた。(資格の準備など)
    • 直接企業の人と会う解禁前後には、企業の業界内でのポジションなどを俯瞰的に見れた。

選考(ES・面接)の要点を把握

  • 先輩・後輩・研究室、説明会で知り合ったOBに客観的な意見を求めた。(ESの添削)
  • 選考で"ミスマッチ"ではなく"わからない"から不採用ということが往々にあることを知り、独自のポートフォリオを作った。

AngularJS Jasmineを使ったテストについて 

====================================================
Unit Test (単体テスト)
====================================================

特徴

  • 比較的早い段階で行われる。
  • プログラムを構成する比較的小さな単位の個々の機能が正しく果たしている華道家を検証するテストである。
  • [メリット]モジュールが結合される前の段階でテストが実施されるため、問題の原因の特定や修正が用意。開発全体のバク修正コストを下げる効果がある。
  • [メリット]一般的にテスト駆動型開発 TDD Test Driven Development と呼ばれるコード作成前にテストケースが作成されるため、妥当性の高いテストケースを資産として残すことができる。
  • 致命的な障害発生を」防ぐことができる、ただ全てびを想定することはでじき
  • [デメリット]開発車の負担
  • [デメリット]テスト実施にある程度のスキルが必要
  • [デメリット]スケジュールの関係で時間がかさむ


AngularJS Jasmineを使った単体テストについて 


====================================================
Integration Test (結合テスト)
====================================================

特徴

  • 比較的後の段階で行われる。
  • プログラミングが全体として正しく動くかを検証する。

開発中のソフトのテスト手法の一つで複数のモジュールを組み合わせて行うテスト
インターフェイスがうまく機能するかを確認すること、結合した状態で外部から見て一体として正しく機能するかを確認する場合がある。

Protractor

http://qiita.com/matsuzan/items/f5a9382a33e81999732a

bottom up testing
top down testing

angular js 習得する手順

書籍「AngularJSリファレンス」の感想とおすすめの活用方法 - Qiita

Angular.jsのServiceとFactoryに関して

ServiceとFactoryの違い

Serviceは、thisがあるが、returnがない。

// ----------------------------
// Service
// ----------------------------
(function() {
    'use strict';
    
    angular
        .module('weatherApp')
        .service('exampleService', exampleService);
    
    function exampleService() {
        // public var
        var foo;
        
        // private var
        var bar;
        
        // public service
        // FACTORY HARUS ADA THIS
        // TIDAK ADA RETURN
        this.foo = foo;
        this.doSomething = doSomething;
        
        // public method
        function doSomething () {
            cook();
            console.log("exampleService");
        }
        
        // private method
        function cook () {
            bar = 1;
            foo = 3;
        }
    }
    
})();

Factoryは、returnがあるが、thisがない。

// ----------------------------
// Factory
// ----------------------------
(function() {
    'use strict';
    
    angular
        .module('weatherApp')
        .factory('exampleFactory', exampleFactory);
    
    function exampleFactory() {
        // public var
        var foo;
        
        // private var
        var bar;
        
        // public service
        // FACTORY HARUS ADA RETURN
        // TIDAK ADA THIS
        return {
            foo: foo,
            doSomething: doSomething  
        };
        
        // public method
        function doSomething () {
            cook();
            console.log("exampleFactory");
        }
        
        // private method
        function cook () {
            bar = 1;
            foo = 3;
        }
    }
    
})();

javascript のsetTimeOutを使うには、Watchが必要、AnglarJSの$timeoutを使う

function onShowHideElement (){
  $timeout(function(){
    vm.isAnimation = false;
    $log.debug(vm.isShowButton );
  }, 5000);
}

CSSでアニメーションを作る。回転の時間していなど

【CSSでアニメーション!】transformとtransitionでクルクル回るイメージをブログに取り入れよう | from my delightful room

API REST関連用語

関連用語


API(Application Programming Interface)

APIとは、あるコンピュータプログラム(ソフトウェア)の機能や管理するデータなどを、外部の他のプログラムから呼び出して利用するための手順やデータ形式などを定めた規約のこと。
個々のソフトウェアの開発者が毎回すべての機能をゼロから開発するのは困難で無駄が多いため、多くのソフトウェアが共通して利用する機能は、OSやミドルウェアなどの形でまとめて提供されている。そのような汎用的な機能を呼び出して利用するための手続きを定めたものがAPIで、個々の開発者はAPIに従って機能を呼び出す短いプログラムを記述するだけで、自分でプログラミングすることなくその機能を利用したソフトウェアを作成することができる。

APIとは、アプリケーションプログラムインターフェイスの略語で、プログラミングの際に使用できる命令や規約、関数等の集合の事を指す。ソフトウェア開発の際、いちから全てを作るより、APIを利用すればもともとあるプログラムを呼び出して、その機能を組み込んだソフトウェアを開発することができる。

システム開発をする際にプログラムをパーツ化して再利用できるようにするSOA(サービス指向アーキテクチャ)も似たような考え方といえるが、システム内での利用にとどまらず、外部ネットワークからモバイル機器を通して、システム機能を呼び出して利用する仕組みとしてAPIは適している。


REST(Representational State Transfer)

「セッションなどの状態管理を行わない(やり取りされる情報はそれ自体で完結して解釈することができる)」(Webシステムでは、HTTP自体にはセッション管理の機構はない)、「情報を操作する命令の体系が予め定義・共有されている」(WebシステムではHTTPのGETやPOSTなどに相当)、「すべての情報は汎用的な構文で一意に識別される」(URLやURIに相当)、「情報の内部に、別の情報や(その情報の別の)状態へのリンクを含めることができる(ハイパーメディア的な書式で情報を表現する)」(HTMLやXMLに相当)

<参考> わかりやすくまとまっている。

URLとURI
URLとURIは何が違うの? どちらが正しい呼び方? | 編集長ブログ―安田英久 | Web担当者Forum

JSデータバインディング

データバインディングとは?
>データバインディング データバインディング(データバインド、あるいはData Bindingの訳からデータ結合とも呼ばれる。) とは、XMLなどのデータソースとアプリケーションやウェブページ(ウェブアプリケーション)のユーザインタフェースを静的または動的に結合する技術である。