情報系の凡才日記

エンジニアりんぐの試行錯誤とか参加したイベントとかについて書いていこうとおもいます。

【アルゴリズム+Ruby】とりあえずバブルソートの実装【一日目】

備忘録。
アルゴリズムとデータ構造を復習がてらついでにRubyを習得しようと思って、今日は試しにバブルソート書いてみました。
初めてのRuby、、、まだ思うように使えないから少しの間こっちがメインになりそう、、、

  1 =begin
  2     バブルソートプログラム
  3 =end
  4 
  5 def bubble_sort(array)
  6     size = array.length
  7     for i in 0...size
  8         for j in 0...(size-(1+i))
  9             if array[j] > array[j + 1] then
 10                 tmp = array[j+1]
 11                 array[j+1] = array[j]
 12                 array[j] = tmp
 13             end
 14         end
 15     end
 16 end
 17 
 18 def print_array(array)
 19     for i in 0...array.length
 20         printf("%d ",array[i])
 21     end
 22     print("\n")
 23 end
 24 
 25 array = [23,45,1,2,455,667,875,5,0,34]
 26 print_array(array)
 27 bubble_sort(array)
 28 print_array(array)


実行結果

23 45 1 2 455 667 875 5 0 34 
0 1 2 5 23 34 45 455 667 875 

個人的に

0...size

この範囲オブジェクトとかいうのがすごく新鮮でした。
これ

0..size

こうするとsizeを含むようになるとか、、、、
早く慣れたい、、、、

【Androidアプリ開発】Google Maps Android API v2を使う

こんにちは。

バイトの方で地図関連の案件に携わっているので今日は予習も兼ねて、Google Maps Android API v2の導入をやってみたいと思います。

ここを参考にしました。

Google Maps Android API v2 — Google Developers

導入手順

  1. GooglePlayServicesの導入(本記事では割愛します)
  2. GoogleAPIキーの取得
  3. Manifestファイル記述
  4. 実際に使用してみる

APIキーの取得

まず、

https://cloud.google.com/console/project

にてプロジェクトを作成。(自分はすでに作成済みだったのでここはスルー)

作成したらそのプロジェクトのページへ。

左側のメニュー「APIs&auth」の中の「APIs」に飛んで、ここで「Google Maps Android API v2」をONにする。

「APIs&auth」の中の「Credentials」に飛んで「CREATE NEW KEY」ボタンを押してAndroidを選択。

入力するのは、

{SHA1 fingerprint};{パッケージネーム}

っていう形式になります。

SHA1 fingerprintの確認方法は、

Eclipseの環境設定の、Android→ビルドで確認できます。


f:id:taisho6339:20140111205333p:plain

こんな感じ。

これ入力してCreateすればOK!


Manifestファイルの記述

Manifestに追加するのは、4点になります。

1.OpenGL ESの依存明示

 <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />


なんかGoogleMapは内部でOpenGL ESを使用してるっぽいので書いておくらしい。
ちなみにこのタグがなんなのか調べたところ、端末と機能の依存を明示するタグで、この機能が端末にない場合インストールを防ぐことができるみたい。例えばカメラ持ってない端末へカメラアプリいれても使えないので、そういった場合フィルタリングかけられるみたいです。 なるほど・・・。

2.パーミッションの記述

 <uses-permission android:name="android.permission.INTERNET"/>
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
 <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>


これらは上から順に、

 インターネットアクセス:マップのダウンロードに使う
 ネットワーク状態チェック:これも上に同じ
 外部ストレージへの書き込み:マップのキャッシュを保存しておくのに使う
 GoogleAPIへのアクセス:省略
 
残り2つは、ネットワーク経由での位置情報取得、GPS経由での位置情報取得。Mapを表示するだけならなくても平気だけどまあ絶対つかうだろう、、、ってことで、、、

3.GooglePlayServicesのバージョン情報

  <meta-data
          android:name="com.google.android.gms.version"
          android:value="@integer/google_play_services_version" />

4.APIキーの記述

  <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="自分のAPIキー"/>

これをすべて記述してマニフェストは完了になります。

実際に使用してみる

ここまで来たらあとは使うだけ!
ってことで試しに以下のコードを書いてみました。


activity_main.xml


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <FrameLayout
        android:id="@+id/content"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </FrameLayout>

</LinearLayout>

MainActivity.java


package com.taishonet.mapsample;

import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.app.Activity;

import com.google.android.gms.maps.MapFragment;


public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		FragmentManager manager = getFragmentManager();
		FragmentTransaction transaction = manager.beginTransaction();
		MapFragment map = new MapFragment();
		transaction.add(R.id.content, map);
		transaction.commit();

	}

}
 

実行結果

f:id:taisho6339:20140111231305p:plain


おー出た出た。

なにも表示されないって場合はAPIキーが間違っているとかかもです。
今日はここまで。

【就職活動】就職活動現況【IT志望】

あかんお正月ずっと家で死んでたせいで全然ブログ書いてなかった・・・

ひとまずここで自分の就活に関して考えていることをアウトプットしておこうと思います。

 

現在の状況

昨日2社目の内定をいただきました。

学生に企業紹介を行っている方の紹介で選考を受けたので、正直なんだかよくわからないうちに決まってしまった、というのが率直な感想です。

現時点で2社も自分を採用したい、と言ってくださってるのは非常にありがたいことなのだけど、まだ進みたい道をはっきりと選択できたわけじゃないからどうしたものかなーと。

 

悩んでいる選択

IT業界で働くっていうのは完全に決めているのだけど、その中でもおおまかに2つの道に絞ってます。

 

ひとつ目は、クリエイター

 

できれば手を動かして開発し続けたい

言われたとおりにコードかけるだけじゃダメ

ずっと現場でやるなら自分でユーザのニーズを分析して、そこに対して適切な企画、売り込み、開発ができるエンジニアがよかと?

クリエイター

 

っていう流れで思い至りました。

クリエイターとしてのスキルのばしたい!っていうのだと、企業選択はだいたいベンチャーになるのかなーって考えてます。

現在内定をいただいたところもエンジニアはこのタイプですね

 

具体的にどういう企業かっていうと、一人ひとりの裁量権が大きくて、エンジニアもマーケティング、企画に首突っ込める環境。。。

 

ただ最初に自分がどの程度開発以外の部分に関わりたいのかが不明瞭で、、、、

(開発できない人が企画なんて果たしてできるか?っていう疑問もありますが。。。。)

 

割と巨大なサービスの中に組み込まれてその中の一機能を提案する、とか一からサービス作るとかでも全然違ってくるだろうし・・・

 

おそらくこの部分が事業内容と合わせて企業をさらに絞るポイントになってくると思うのだけど・・・

 

ふたつ目は、人と関わってまとめていく仕事 

これも幅広いけど将来的にはマネジメントとかアーキテクトとか・・・・

とはいってもこれも開発経験を下積みとしなくちゃ務まらないよね、、、

この選択だと大手SIerとかになるのかな・・・

 

経緯となったの以下3点

 

・プレゼンとか人前で話す、説明するのが好きで、いろんな企業の方に聞いてもらう機会があり、そのたび評価されている

 

・エンジニアとして開発していく自信があまりない

 本当に自分が手を動かして現場で開発していきたいのか確信が持てない

 

・部長経験とか、インターンとかでもチームを引っ張っていく役割が多い

 

 この3つで、技術もわかっていて人をまとめられる人になれたらいいなーって漠然と思ってたり。

 

どの部分で揺れているのか

じゃあどの部分で悩んでいるのか、っていうと

 

技術を学ぶ姿勢が他のできる人たちと比べて違う、実行力が低い、ずっと開発の仕事してて自分は楽しいと思えるか自信がない。

でもまったく開発に触れなくなるのもどうなんだろう・・・

 

こんな感じです。。。

まとめ

人をまとめる仕事については調査不足なとこが多いから、具体的にどういうビジョンか決めて、それに対して選択軸を導出していくのが今後の方針・・・

まだ自分が知らないような良い職種も他にもたくさんあるんだろうなー・・・ 

 

 

 

 

 

 

 

 

 

【ソーシャルランチ】サムライズムさんに訪問してきました【OB訪問】

概要

一昨日ですがサムライズムさんにお邪魔してきました!

 

株式会社サムライズム

http://samuraism.com/

  

この会社、山本さんという方が最近起業して設立された会社さんなんですね。

 

今回の趣旨としては、私が就活中の身ですので様々なキャリアでエンジニアとして活躍されていらっしゃる山本さんのお話を伺いたいと思ってアポイントをとってみました。

 

山本さんってだれだ?って人もいると思うので・・・・

 

こんな人です

 

http://engineer.typemag.jp/article/knowledgelog-yusuke
http://news.mynavi.jp/articles/2013/03/22/tc1/index.html
http://gihyo.jp/lifestyle/serial/01/shukatsu_joshi/0003

 

そうですTwitter4Jの開発者さんです!! 

ちなみに自分が知ったきっかけもTwitter4Jです !!

 

面白いなと思ったのは、これだけ活躍されている中でバリバリコード書く仕事、というよりは、テクニカルサポートやデベロッパーアドボケイトと言われる職についてきた、という点です。

 

私について

はじめての記事なので軽く自分について自己紹介します。

現在大学3年生でプログラミングは大学二年の4月頃から本格的にはじめました。

それから小さな企業でモバイルアプリの開発のアルバイトをしてます><

最近はクラウドワークスさんで個人で受託の開発なんかもしてます。

 

メインはAndroidアプリ開発で、PHP使ってWebアプリや、Node.jsでオンライン対戦ゲームとか簡単なSNSみたいなものも作ってきました。

今は低レイヤに興味があってUNIXのOSについて勉強中・・・

 

将来どうしたいかについては結構悩んでいるのだけど最初はやっぱり現場で実際に物を作る側に立ちたいです、、、、

 

経緯

といった感じなのでちょっと エンジニアとして、特殊?なキャリアを歩んでいると思われる山本さんにあえて話を聞いてみることにしました!!

ちなみに、

 

ソーシャルランチ

https://www.social-lunch.jp/s2/student/home

 

っていう社会人の方とランチしてお話するためのサービスを利用しました。

オススメ。

 

ご本人の印象

結構厳格な方をイメージしてたんですけどすごく気さくで話しやすい方でした!あと高校と大学のOBでびっくりしました。。。。

 

印象に残ったお話を2点

 

・サービス作ったりアプリ作ったりって最悪趣味でもできる

 (だからコンサルタントとか仕事でしかできないことに取り組んできた)

 

・恥をしのんでどんどん自分を発信していったほうが良い!

 →アドバイスとかもらえることもあるし、つながりもそこから増えていくから 

  表に出てこないすごい人もいるけどもったいない

 

自分全然発信とかしてこなかったので猛省・・・

 

オフィス見学

なにあの快適空間・・・

エンジニアってすごい・・・

 

っていうのが率直な感想・・・

 

あと椅子も本格的で格好良いし、ホームシアターみたいなでっかいスクリーンあるし、WiiUあるし、プレステあるし、、、、、

 

オフィス・・・・?

 

写真まったく撮ってなかったしまたお邪魔しにいく予定です・・・・!

 

今回のアポから

やっぱり「どんどん自分から情報を発信していけ」といった内容のことを強く推されたので、大恥書きながらもブログとかgithubとかで自分の活動とか試行錯誤とかを公開していこうと思います、、、

できれば毎週一つは何かテーマ見つけて考察とかできたらいいな。。。