Goalist Developers Blog

読者です 読者をやめる 読者になる 読者になる

爆速でMAPの表示、ピンを立てる方法@Swift 3

Goalist iOS swift モバイルアプリ

こんにちは、iOSエンジニアの渡部です。

自己紹介とその場しのぎの記事を書いたのでそろそろ技術ネタを書いていきます。

f:id:watabe1028:20161208154651j:plain

今回はタイトル通りMAPについてです。
ネット上に色々なサンプルがありますが、この記事では「とにかく早くMAPを表示させる」こと、 「MAP上にピンを立てて吹き出しを表示する」ことにフォーカスしてます。

慣れてる人なら5分くらいでできるはず。

手順

1.framework追加
2.StoryboardでMAPを追加
3.import
4.コーディング
5.ビルド
では順を追って説明します。

1.frameworkの追加

まずはXcodeを起動し、新規プロジェクトを用意してください。

Single View Application を選択し「MapSample」とアプリ名をつけます。

f:id:watabe1028:20161208154037p:plain

プロジェクトを選択して、GeneralからLinked Frameworks and Librariesのプラスボタンから MapKit frameworkを追加します。

f:id:watabe1028:20161208154056p:plain

2.StoryboardでMAPを追加

次にStoryboardでMAPを追加し、

f:id:watabe1028:20161208154123p:plain

コードと紐付けます。

f:id:watabe1028:20161208154425p:plain

ついでに簡単にAutoLayoutもつけてと。

3.import

ViewControllerにimport文を追加します。

import UIKit
import MapKit

class ViewController: UIViewController {
    
    @IBOutlet weak var mapView: MKMapView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}
4.コーディング

必要最低限のコードを載せます。
たった数行です。

class ViewController: UIViewController {
    
    @IBOutlet weak var mapView: MKMapView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        /// 以下を追加 ///
        let coordinate = CLLocationCoordinate2DMake(35.696135, 139.768322)
        let span = MKCoordinateSpanMake(0.005, 0.005)
        let region = MKCoordinateRegionMake(coordinate, span)
        self.mapView.setRegion(region, animated:true)
        
        let annotation = MKPointAnnotation()
        annotation.coordinate = CLLocationCoordinate2DMake(35.696135, 139.768322)
        annotation.title = "株式会社ゴーリスト"
        annotation.subtitle = "変な人がいっぱい"
        self.mapView.addAnnotation(annotation)
        /////////////////
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

これで実装完了!

ちなみに

let coordinate = CLLocationCoordinate2DMake(35.696135, 139.768322)  

は緯度、経度です。

表示したい緯度、経度を調べるにはここがオススメです。
Googleマップで緯度・経度を求める

let span = MKCoordinateSpanMake(0.005, 0.005)  

は地図の範囲です。
値が小さければ小さいほど地図の範囲が狭まります。

annotation.title = "株式会社ゴーリスト"  

はピンのタイトル

annotation.subtitle = "変な人がいっぱい"  

はサブタイトルです。
実行するとわかります。

5.ビルド

実行結果はこうなるはずです。

f:id:watabe1028:20161208170303p:plain

ピンをタップするとこう!

f:id:watabe1028:20161208170319p:plain

簡単でしたね。
次回はFacebookログインあたりの記事書きます!

アプリのプロトタイプのお話

Goalist iOS モバイルアプリ Swift プロトタイプ Objective-C

おはようございました。デブの渡部です。 「デブなの?」の方はこちら

今日はプロトタイプのお話。

f:id:watabe1028:20161201152302p:plain

プロトタイプとは?

後での改良を見込んで、その仕事をする大筋として作る最初の模型。by wiki

たたき台となるモノと捉えておけば良いと思います。

開発あるある

多様なサービスがアプリ化していますが サービスをアプリ化する際にUI/UX、デザインなど悩みますよね?

いざ開発して見ると、「イメージと違う」

f:id:watabe1028:20161201152454j:plain

とディスられることも多々あると思います。

特に受託の場合、担当者と合意を取っても 偉い人が横から来て「もっとこういう感じ」と変更されることもあります。

三日月蹴りでも食らわせてやりたいですね!

そこで

そのイメージの共有に役立つのがプロトタイプ。 まず、目に見える、動きを試せるプロトタイプがあると 開発後の手戻りがなくなりリリースまでスムーズに進められます。 受託開発では特に効果を発揮します。

そこで、非エンジニアでも容易にプロトタイプが作れるツールをご紹介します。

1. Prott

モバイルアプリ開発をしている人はご存知かと思います。 Sketchとの連携もいいので使ってる人は多いのでは。 ワイヤーフレーム機能がとても便利そうです(フリープランユーザなので使ったことないですが)。

prottapp.com

2. Marvel

シンプルでシャレオツ! 使い勝手も良く、Prott同様のおすすめツールです。

marvelapp.com

このように非常に便利なツールが結構あります。

ゴーリストは・・・

駄菓子菓子!

ゴーリストのプロトタイプ(モバイルアプリだけ)は違います。

作ってしまいます!

Xcodeで!

散々ツール紹介とかしましたが、

Objective-C生まれ、Xcode育ち、非推奨のプロパティは大体友達!

な自分にとってはやはりXcodeが良い! (今はSwift使ってるけど)

ペーパープロトさえあれば大丈夫! ある程度変更にも対応できる!AutoLayout実装前なら!

ということで今週は2つのプロトタイプを作りました。 こんな感じです。 (大体が見せられないです。すみません。) f:id:watabe1028:20161201155511p:plain f:id:watabe1028:20161201155523p:plain

2つで3人日。

まとめ

新規開発でBtoBの場合は、セールスさんの意見も聞くといいですね。

プロトタイプのレビュー会も開くと良さそうです。

最早、アイデアに価値はない時代なので、カタチにしてなんぼだと思ってます。 ゴーリストのモバイルアプリチームは 効率の良い開発のためにプロトタイプをどんどん活用していきます。

楽するために!

Amazon QuickSightで求人データを可視化しました

Goalist HR AWS QuickSight BI データ Amazon ビッグデータ データ分析

こんにちは、ゴーリストの鈴木です。

2016年11月16日より、Amazon QuickSightというBIツールの一般提供が開始されました。

f:id:suzutt:20161118212646j:plain Amazon QuickSightが一般提供開始 – 高速で利用が簡単なビッグデータ用ビジネスアナリティクス | Amazon Web Services ブログ

というわけで早速、Amazon QuickSightを使って全国の求人データを可視化してみました。
本記事を読んでAmazon QuickSightを使うと何ができるかというイメージを掴んでもらえればと思います。

Amazon QuickSightとは

冒頭の紹介の通り、Amazonが提供するBIツールです。用意したデータを自分の好きな形式で可視化することができます。
特にAWS上のデータをグラフ化することが得意なようです。

Amazon QuickSightの概要については、公式ページに分かりやすく書いてあるので、一度読んでおくとよいかと思います。

アカウント作成

アカウントを作成します。
2016年11月24日現在、Amazon QuickSightは東京リージョンで提供されていないので、オレゴンリージョンを使うことにしました。

データセットの作成

可視化対象のデータを定義します。具体的には、ローカル環境のcsvデータをアップロードします。

今回は大泉洋さんのCMでおなじみの「リクナビNEXT」の11月14日分の求人データを対象にします。(6000件程度)

もちろんデータセットとしてローカル環境のcsvデータだけでなく、S3、RedShift、RDBなどのAWS上のデータや、オンプレ環境のDBなどを使うことが可能です。
詳細は公式ページをご参照ください。

Analysisの作成

データセットの作成が終わったので、次はAnalysisの作成です。
ここではどのように可視化するか(どのグラフを使うか)を設定します。

手順としては、基本的には以下の2つとなっています。簡単ですね。

  1. どのグラフ(Visual types)を使うかを選択する
  2. どの項目をグラフに反映させるかを選択する

今回は分析の目的を設定せず、できるだけ多くのグラフを使ってみようと思います。
使用可能な表、グラフは公式サイトに記載があります。
2016年11月24日現在、13種類の表、グラフがあります。
今後は、ヒストグラム、箱ひげ図、分散の可視化(マップ)が追加予定のようです。期待大ですね!

では、早速、可視化をしていきます。。

求人掲載件数ランキング(企業 × 掲載件数)

f:id:suzutt:20161118175716j:plain (クリックで拡大)

データをグループ化、ソートして表示することが可能なので、企業の求人掲載件数ランキングを作成しました。

やはり上位は大企業が占めています。

設定は以下の通りです。

設定項目
Visual types Horizontal bar chart
Y axis 企業名

職種別掲載件数比(職種 × 掲載件数)

f:id:suzutt:20161118175908j:plain (クリックで拡大)

集計軸を「企業名」から「職種」に変えると、職種別掲載件数の割合を可視化できます。

営業、事務、企画職の求人が多く、半数以上を占めていることがわかります。ITエンジニアの求人は少なめなのでしょうか。

設定は以下の通りです。

設定項目
Visual types Pie chart
Group/Color 職種

ITエンジニア求人掲載件数ランキング(職種 × 企業 × 掲載件数)

f:id:suzutt:20161118180106j:plain
(クリックで拡大)

もちろん、検索対象をフィルタリングすることができるので、このように職種別の掲載件数ランキングも集計できます。
今回はITエンジニアの求人のみを対象としてみました。

いわゆるWeb系の大手企業などはランク外でした。別の求人媒体をメインで使っているのでしょうか。気になります。。。

設定は以下の通りです。

設定項目
Visual types Pivot table
Rows 企業名
Values 企業名(COUNT)
Filter 職種 include "ITエンジニア(システム開発、インフラなど)"

エリア別掲載件数(エリア × 掲載件数)

f:id:suzutt:20161118180213j:plain (クリックで拡大)

関東エリアの掲載件数がその他の地域と比べてかなり多いですね。

設定は以下の通りです。

設定項目
Visual types Vertical bar chart
X axis エリア

ダッシュボード

f:id:suzutt:20161118180306j:plain (クリックで拡大)

作成したグラフをまとめたダッシュボードを作りました。

すごい、BI感がでていますね!!
ただ、分析目的がないので、特に使い道はありません...はい、よく陥りがちなやつです。皆さん気をつけてください。。

まとめ

データの可視化、いかがでしたか。

ざっと触った感想は、

  • サービス名の通り、データの可視化を簡単な操作で行える。
  • スモールスタートが可能なのがGood。(1ユーザ9USDで1GBのデータを分析できる)
  • 通信環境にもよるのかと思いますが、ダッシュボードを表示するまでに7秒くらい掛かり、やや遅め...?東京リージョンの対応が待たれる。。
  • 使う側が目的を設定して使わないと、意思決定に役立たないグラフが量産される(世の中のBIツール全般に当てはまると思いますが、一応)

です。

最も良いなと思ったのは「スモールスタートが可能」という点です。1000円/月くらいで試せます。AWSの醍醐味ですね。

引き続き、Amazon QuickSightを追っていきますので、ご期待ください。

ちなみにですが、弊社サービス 3Chartでは、複数の媒体をまたいだ求人データの分析・集計が可能です。
今回取り上げたような職種別、エリア別の集計もできます。無料でお試しいただけるので、ご興味がある方はWEBページよりお申込みください。

iOSデブ、ジョイン

Goalist HR iOS モバイルアプリ 自己紹介

はじめまして、ゴーリストの渡部です。 11月からゴーリスト初のモバイルエンジニアとしてジョインしました。 タイトルのデブはDevの方です。体型は普通です。

f:id:watabe1028:20161117153600j:plain

社内外のエンジニアイベントやモバイルアプリ開発の技術記事をこれからどんどん公開していくので モバイルアプリ開発に興味ある方は是非見てください!

今回は初エントリーなので自己紹介します。

経歴

地元茨城県のSI企業に新卒入社し、6年半ほど在籍しました。 プログラミング経験は一切なし。 ただ社名が横文字で今時っぽいという理由で入社しました。 入社後のプログラミング研修では一切理解できず、同期の画面を覗き込んでやり過ごしていました。

iPhoneと出会う

正直、プログラミングは全然理解できないし、社風も窮屈に感じてた頃にiPhone4が発売されました。 あの時のジョブズのプレゼン、世の中の反応を見て「俺アプリ開発やるわ!」と決めました。 ただのミーハーです。

そこからObjective-Cを猛勉強し、いくつかのアプリをリリースしました。

都内に出向

アプリをリリースしたものの、それで稼げる訳でもなく、違う業務をこなす日々。 もっとアプリ開発をしたい、スキルを上げたいと思い都内への出向を願い出ました。

渋谷のとある企業に仕事を紹介してもらいここから本格的なアプリ開発が始まりました。

プロジェクトに恵まれる

出向先でのプロジェクトは、某研究所、メガバンク、大手通信業社など そこそこ大きい規模の開発に携われるものばかり。 iBeaconを使った開発など新しいものに触れる機会にも恵まれました。

自分が作ったアプリが世の中の人に使ってもらえている感覚がとても新鮮でした。 未だにレビュー欄を見るのは怖いですが。。。

ゴーリストにジョイン

2年ほど出向してた矢先、本社に戻ることになりました。 本社の開発環境、周りとの温度差、社風。。。 諸々自分には合ってないことを確認したので転職することにしました。

転職サービス経由でいくつかの会社に訪問。 アプリ開発がバリバリできる会社、フィーリングが合う会社を探している中、 ゴーリストに出会い、入社を決めました。 採用担当の人の食い付きようが面白かったこと、 アプリで世の中を動かした人がいたこと、が決め手になりました。 ここならがっつりアプリ開発ができるな、と。

ジョインして良かったこと

1.最初から意見が通る

既存アプリのリニューアルをする際、UI/UXはこうした方がいい、とか いらないファイルなどが混在してるため、最初から作り直したい、という意見がすぐに通りました。 本当に大丈夫なのでしょうか。。。

2.情報の共有が早い

毎日チャットで報告し合うので、誰が何をやっているかがすぐに分かります。 チャットのやり取りも面白いです。 催眠術師を会社に呼んでしまうアグレッシブな人もいます。

3.面白い人が多い

代表をはじめ、笑いに特化している人が多い気がします。 入社初日の紹介で「石にならないメドゥーサ」は吹きましたw 自分は学生時代のバイト先由来のあだ名になりそうですw

自分の意見が尊重され、ガンガンアプリ開発ができる、これ以上ない環境です。 環境の良し悪しは人によりけりですがこういった環境を求めている人も多いと思います。 気になった人は是非採用ページからお問い合わせ下さい! リンクは貼りません。面倒なので。。。

最後に

自分のモットーは 「Create a Happy」人々のハッピーを創造する、 「より多くの恩人をつくり、その人たちに報いて行くこと」。

アプリ開発を通してより多くの人たちにハッピーが届けられるよう、精進していきます。

f:id:watabe1028:20160414180455j:plain

と、Pepperくんも言っておられます! 特にPepperくんは関係ないです。。。

次回から技術記事、イベントレポートなどを投稿するので 是非見に来てください!

HRogの開発環境をDocker化した話

開発環境 Docker

f:id:goalist:20161021205037j:plain

こんにちは、ゴーリストの藤井です。

ゴーリストは人材業界に特化したキュレーションメディア「HRog」を運営しています。

hrog.net

HRogのアプリケーション構成はWordPress, Rails, MySQLで、それぞれがAWSの別インスタンスで動いているのですが、ローカル開発環境でそれを再現しようとするとちょっと大変です。「まだ環境構築で消耗してるの?」なんて声が聞こえてきそう・・・

そこでDockerに着目し、プロジェクトに関わるアプリケーションをコマンド一発でローカル環境構築をする方法を模索しました。その内容を先日ゴーリストが社内で行ったエンジニアイベントにてざっくりとLT発表しましたので、以下がそのスライドとなります。

この試みの結果Dockerをマシンに入れて起きさえすれば、新しく入ったメンバーへの開発環境の共有がプロジェクトのclone除けば実質コマンド一発で完了することが可能となりました。
また、毎日開発を始めようとした時に複数のアプリケーションの起動をコマンド一発で行うことができるようになりました。同じ作業を何度も繰り返さずにすみますので、プログラマ冥利に尽きますね(`・ω・´)

まだまだエンジニア経験が少ない(まだ2年未満)の自分がReactやDockerといった新しい技術にチャレンジできるのも、ゴーリストの魅力だったりします。

Goalist Engeneer's WAIGAYA #1 を開催しました

イベントレポート

f:id:goalist:20161102163510j:plain

HRソリューション事業部のエンジニアの鈴木です。

10月21日(金)に社内エンジニアイベント「Goalist Engeneer's WAIGAYA #1」を開催しました。 そのイベントの簡単なレポート記事です。

開催の経緯

弊社ではここ半年間でエンジニアが3人→8人に増えたという事情もあり、 より交流を深めようという意図で開催されました。
たしかに、技術縛りの話題で全員揃って話す機会はなかったので、いいタイミングだったなと思います。

第一部 トークテーマ「ゴーリストの理想のエンジニア像」

f:id:goalist:20161021173640j:plain

お酒を片手に、理想のエンジニア像について語りました。
ギークの話、今まで出会った凄腕エンジニアの話など、脱線しつつ語らいました。。

第二部 「LT大会」

f:id:goalist:20161021202411j:plain

1人5分、エンジニア全員発表のLT大会を行いました。

特にテーマを制限しなかったため、いろいろなテーマが集まりました。 いくつかテーマを抜粋します。

  • たのしいやさしいGoogle Apps Script

  • Apache POIとExcella Reports

  • 動的言語の静的型の話

  • Dockerで環境構築したら捗った話

  • エンジニアの情報収集

ご覧の通り、言語の型事情の話や、業務で使った便利ライブラリの話、開発環境構築の話など様々です。
(ちなみに弊社にはJavaエンジニアが多いので言語の型の話になると熱くなりがちなので注意が必要です。)

中でも発表に向けてしっかり動くものを作ってきた新卒エンジニアがとても頼もしかったです。

ちなみに自分は「エンジニアの情報収集」というテーマで話しています。興味がありましたら見てみてください。

www.slideshare.net

感想&まとめ

業務を隔てたエンジニアの交流ができたことはもちろんですが、
LTの内容などからそれぞれのエンジニアの得意分野、興味のある分野がわかったことが収穫かなと思います。
その結果、「〇〇で困ったら△△さんに聞けば解決しそう」という目次ができたので、業務でのコミュニケーションのハードルが下がった気がします。

次回は社外からゲストを招くなど、イベントをバージョンアップする予定です。次回のイベントレポート、ご期待ください!

技術面で企業文化を作りたいエンジニアWanted!

自己紹介

初めまして、ゴーリストの藤井です。 ゴーリストは入って2か月ほどです。

前職ではスタートアップの企業様向けに、Ruby on Railsに特化した受託開発をしていました。 まだまだ新参者の身ではありますが、技術的なチャレンジを色々と任されて充実した開発ライフを楽しんでおります。

直近ではWordPressで運営している自社サイトの後ろに、Reactを接着剤にRuby on Railsを導入するお仕事をしています。

初回エントリーなので、まずは込み入った自己紹介をさせていただきます。

大学院試験をやめて上京する

京都の大学で技術系の学科にいたのですが、数学の面白さと、数学で食べていく金融系技術職への興味が抑えきれず、金融系の大学院を目指していました。しかし、突発的なチャレンジ故受かるはずもなく、就職活動もしていなかったので、大学卒業のタイミングで職を求めて上京しました。

f:id:goalist:20161027172135j:plain

ベンチャーキャピタルでのインターン

上京のタイミングで金融に関心あったので、VCに入ってインターンをしていました。そこで接客やアナリスト的な仕事と色々やっていたのですが、その中でもWebサイトの運営によりWebプログラミングの楽しさに目覚め、プログラミングで食べていく事を決意しました。

ギークな社長の元で受託開発

Rubyによるプログラミングを勉強している傍ら、Webプログラミングで食べていける会社を探していたところ、幸運にもプログラミングの本を書くギークな社長に拾われ、10人未満の小さな開発会社に入社することができ、そこでプログラミングのイロハをガンガン仕込んでもらいました。 また社員として働く傍ら、Ruby on Railsを用いているWeb系企業様にインターンさせていただくこともありました。

ゴーリスト <= 今ココ

技術的なチャレンジと、ベンチャーな雰囲気を求めて転職活動をしていたところ、上京して職を探していた時に知り合った人伝にゴーリストと知り合い、入社を決めました。 ゴーリストはビッグデータというまだまだ未開拓なビジネス分野に技術で切り込んでいくエンジニアリングな会社ですが、まだまだエンジニアが足りていないこともあり、ガンガン新しいことにチャレンジして技術文化を一から作れる面白さがあります。

f:id:goalist:20161026095057j:plain

We Are Hiring!!!

ゴーリストでは、これから企業文化を作っていこうというエンジニアを募集しております。

f:id:goalist:20161026104941j:plain