RAKUS Developers Blog | ラクス エンジニアブログ

株式会社ラクスのITエンジニアによる技術ブログです。

自由度抜群!コスト削減!「ハイブリッドアプリ」の仕組みと「Monaca」で作るスマホアプリ

f:id:rs_tukki:20180315173635p:plain

はじめに

こんにちは、rs_tukkiです。毎回毎回タイトル絵クソだせぇのどうにかしたい
最近、会社の内外問わず、スマホアプリの話題が増えてきたように思います。皆さん仕事が仕事なのでそういった話に敏感なのかもしれませんが、手軽に持ち運べるスマホで手軽に使える形というのが、これから(というより既に)アプリ開発の主流になっていくことでしょう。
ですが、スマホアプリの開発はそう手軽にはいきません。言語は新たに習得しなければならなかったり、それを機種ごとに開発しなければならなかったりと、今までWEBでアプリを開発してきた人にとっては地味にハードルが高いのではと思います。

そこで今回は、それらの問題を一気に解決できるハイブリッドアプリと、その開発環境であるMonacaを使って実際にハイブリッドアプリを作ってみるお話をします!

ハイブリッドアプリとは?

まず一般的に、スマホ上で動作するアプリは「ネイティブアプリ」と「Webアプリ」に大別されます。
細かい違いはありますが、大まかにいうと
端末上で動作するアプリがネイティブアプリ、Web上で動作するアプリがWebアプリとなります。

そして、ハイブリッドアプリ、というのは聞きなれない言葉かと思いますが、ネイティブで動作する「WebView」というソフトを使いつつ、コンテンツ自体はWeb上のものを読み込む形で実現するアプリのことを指します*1
Webアプリの豊富な情報量と、ネイティブアプリの豊富な機能とを組み合わせた良いとこどりのアプリ、それがハイブリッドアプリなのです。

メリット

クロスプラットフォーム

現在流通しているスマートフォンiPhoneAndroidのふたつですが、ネイティブアプリでは
前者がswift、後者はJavaでの開発が一般的です。つまり、両方に対応するスマホアプリを開発しようとした場合は、全く異なる2種の言語を学ぶ必要があり、これが開発のハードルを高くする一因となっていました。

ですが、というよりハイブリッドアプリはiPhoneにもAndroidにも標準で組み込まれているWebViewというソフトを使い、Webページを読み込んで表示するような形で処理を実現するため、
HTML5」、「CSS」、「JavaScript」の3つの言語で、どちらにも対応できるネイティブ(風の)アプリが開発可能なのです。

UIの自由度が高い

ハイブリッドアプリは、HTML5CSSを用いて開発しますので、それこそWebアプリを作成するような感覚でUIを設計することが出来ます。
ネイティブアプリと比較してもカンタンに、そして凝った表示をサクッと作りこめるのは素晴らしいと思います。

Webアプリの開発経験があれば開発が可能

先ほど言った通り、ハイブリッドアプリの開発に必要なのは基本的に「HTML5」「CSS」「JavaScript」の三種のみです。
そのためこれらを扱うWebアプリの開発経験があるエンジニアなら、それほど苦労せず開発に着手できると思います。この手軽さこそが、開発者にとっては最大の魅力になるでしょう。

デメリット

マイナーなネイティブ機能の利用が難しい

ハイブリッドアプリでカメラやGPSなどのネイティブ機能を利用するには、Cordova等のフレームワークが提供しているプラグインを利用するのが一般的です。
しかし、これらのプラグインはそのほとんどが個人開発なので、あまりにもマイナーなネイティブ機能だとプラグインが実装されておらず、自分で開発するしかない...なんてことも。

ネイティブアプリと比較すると動作が重い

ネイティブアプリは端末上で動作するアプリ、ということは先ほど説明しました。
一方、ハイブリッドアプリはWeb通信が必須になってくる関係上、ネイティブアプリと比較して動作がもっさりする場合があります。
最近はゲームのような処理の多いものでなければネイティブアプリとも遜色がないらしいですが、古いバージョンのスマホだとかなりもっさりする可能性もあるので注意が必要です。

Web技術でネイティブな機能を使ってみた

では、ここまでの話を踏まえて、さっそくスマートフォンのネイティブな機能を利用したハイブリッドアプリ作成を体験してみようと思います。
今回開発環境には、アシアル株式会社様が提供しているMonacaというWebサービスを使用しました。ローカルで開発環境を用意する必要がなく、クラウド上で全てが完結するのでかなり便利です。

f:id:rs_tukki:20180315173826p:plain

アカウント取得

まず初めに、Monacaの製品ページからアカウントを取得します。
Monacaは個人向けに無料プランを含む2プラン、企業向けに2プラン用意されていて、無料版でもリリースビルドまでは問題なく開発することが出来ます。
ですが、無料版だとそのビルドの回数が1日3回までに制限されていたり、Monacaが用意したプラグインしか使用できなかったりするので、いつか有料版に移行するのもありでしょう。

今回はひとまず無料版で作成します。

プロジェクトの作成

アカウントを作成したら、ダッシュボードを確認してみます。
f:id:rs_tukki:20180316095853p:plain
最初にダッシュボードを開くと「はじめてのMonacaアプリ」というプロジェクトが既に作成されています*2が、まずは自分で新たにプロジェクトを作ってみましょう。
「新規プロジェクトの作成」をクリック。
f:id:rs_tukki:20180316100949p:plain
Monacaではいくつかのサンプルアプリや、UI、JavaScriptフレームワークを利用したテンプレートがいくつかありますので、こういったサンプルを参考にしつつ開発を進めることになると思います。
今回はひとまず「No Framework」で作成します。作成したプロジェクトを開くと、早速編集画面が出てきました。

f:id:rs_tukki:20180316102443p:plain

編集画面については、ほぼほぼ一般的なIDEと同じ見方です。私は普段Eclipseを使っていたので、画面に関しては簡単に理解できました。
画面右にはプレビューが表示されていますが、スマートフォンのネイティブな機能以外の動作は保存したものが即反映されるので、コーディングもしやすいと思います。

プラグインの有効化

さて、ここからスマートフォンのネイティブ機能を利用できるようにしていきます。
今回は、現在位置をGoogleMapに表示するアプリの作成に取り組んでみましょう。

まず、メニューバーから「設定->Cordovaプラグインの管理」を開き、現在位置を取得するためのプラグイン「Geolocation」を有効化します。
f:id:tech-rakus:20180316163620p:plain

プラグインに関しては無料版でもかなりの数があり、他にもカメラ、バーコードリーダー、バイブレーション機能などを この画面で有効にするだけで利用することができますので、調べてみてください。

Monaca側での設定はこれで完了です。

APIキーの取得

さて、続いてGoogleMapを表示させるために必要な、Google Maps APIの承認キーを取得します。
Googleアカウントでログインしてから、APIのページの右上にある「キーの取得」をクリックして32文字のAPIキーを確認してください。
f:id:rs_tukki:20180318234509p:plain
このキーをコードに埋め込むことでMapが表示できるようになります。
ひとまずは無料で利用できますが、読み込みの回数によっては課金が必要になりますので、リリースなどを行う際は注意してください。

コード作成

さて、では早速コードを書いていきましょう。
まずは表示部分から。

index.html
<!DOCTYPE HTML>
<html>
<head>
    <style>
       #map {
        height: 400px;
        width: 100%;
       }
    </style>
  ~中略~
    <script src="./script.js"></script>
    <script src="https://maps.googleapis.com/maps/api/js?key=ここにAPIキーを入力&callback=getMapLocation"></script>
</head>
<body>
    <div id = "map">
    </div>
</body>
</html>

スクリプトとして読み込むのは後述のjsファイルとGoogleMapsAPIです。
callback=getMapLocationAPIを読み込んだ際に最初に実行するメソッドのこと。

特に引っかかるところはないと思いますが、一つだけ注意点が。
Mapの表示部分

    <div id = "map">
    </div>

には必ずCSSなどで表示領域を確保しておかないと、仮にScriptが正しくてもMapが表示されません。
私はこんなくだらないことで数時間も悩んでしまいました...

script.js

そしてここからJavaScriptのコーディングを開始します。
今回は、Monaca公式ドキュメントに乗っているものを参考にしました。

var Latitude = undefined;//緯度
var Longitude = undefined;//経度

// 初期処理
function getMapLocation() {
    navigator.geolocation.getCurrentPosition(onMapSuccess, onMapError, { enableHighAccuracy: true });
}

// getMapLocation()での位置情報の取得に成功したら呼ばれる
var onMapSuccess = function (position) {
    Latitude = position.coords.latitude;
    Longitude = position.coords.longitude;
    getMap(Latitude, Longitude);
}

// 取得した位置情報をもとにMapを生成する
function getMap(latitude, longitude) {
    var latLong = new google.maps.LatLng(latitude, longitude);//位置情報の設定
    var mapOptions = {
        center: latLong,
        zoom: 15,
        mapTypeId: google.maps.MapTypeId.ROADMAP//Mapの表示形式。この場合通常の道路地図になる
    };
    var map = new google.maps.Map(document.getElementById("map"), mapOptions);
    var marker = new google.maps.Marker({
        position: latLong
    });
    marker.setMap(map);
}

// 位置情報の取得に失敗した時に呼ばれる
function onMapError(error) {
    console.log('code: ' + error.code + '\n' +
        'message: ' + error.message + '\n');
}

最初に呼び出すgetMapLocation()で、「Geolocation」プラグインを利用して現在位置を取得しています。成功するとonMapSuccessgetMap(latitude, longitude)と処理が進んでいき、最後に現在位置を示したMapが表示されるようになります。 関数の意味が分かれば、こちらも内容自体はさほど難しくないでしょう。

実行!

さて、では早速このアプリを試してみたいのですが...
当然ビルドやリリースはまだ行っていないので、スマートフォンで機能を試すにはデバッグ用のアプリが必要です。
Monacaのデバッガーは、Android,iOS共に無料でインストールができます。

f:id:rs_tukki:20180319001836p:plain

そして、インストール後に自分のアカウントにログインし、先ほどのtestプロジェクトを起動してみると...

f:id:rs_tukki:20180319084052p:plain

見事、自分の現在位置がMapに表示されました!

おわりに

ハイブリッドアプリがどれだけ簡単に作成できるかお分かりいただけたでしょうか。
当然、プラグインは今回紹介したもの以外にもさまざまありますし、HTMLやJavaScriptも難しい言語ではないと思いますので、これから何かアプリを作ってみたい!という初心者の方には最適かと思います。(これ前回の記事でも言ったな…)
皆さんも、ここから手軽にスマホアプリの開発に着手してみてはいかがでしょうか?

参考

ネイティブアプリの意味や定義 Weblio辞書
開発コスト削減&サクサク動く!今話題の”ハイブリッドアプリ”って? | 起業・創業・資金調達の創業手帳
ハイブリッドアプリとは? - Qiita
ハイブリッドアプリ制作で動作が重くならないために気をつけること|意識の高い時に雑記
Get an API Key  |  Maps JavaScript API  |  Google Developers
位置情報の取得 プラグイン | Monaca Docs

*1:webアプリでありながら、カメラやGPSなどスマホ本体の機能を利用するアプリのこと、という見方もあるそうです。

*2:「test」は私が作成したものです。

初心者向けSwiftプログラミング勉強会に参加しました

はじめに

こんにちは。ラクスエンジニアのstrongWhiteです。
今回は初心者向けSwiftプログラミング勉強会に参加したので、勉強会の内容や参加した感想を記事にしようと思います。

Swiftとは

本題に入る前にSwiftについて簡単に触れておきます。
Swiftとは、iOS向けのアプリケーションを開発するためのプログラミング言語で、Apple社が開発しました。
iPhoneiPadをお持ちの方で、ふだん何気なしに使っているアプリはこのSwiftによって作られています。
SwiftはXcode(統合開発環境)を使って記述していきます。

f:id:strongWhite:20180317201755j:plain:w400

参加した勉強会

ふだん私は自宅でプログラミング学習をしているのですが、たまたまSwiftに関する勉強会を調べていたところ、Swiftのスの字も知らない初心者でも気軽に受講できそうな勉強会を見つけたので、思い切って参加してみることにしました。

カフェサロンで学ぶ!超初心者向けのswiftプログラミングレッスン♪

  • 開催地:大阪 心斎橋レンタルオフィス salon HAJIMARI
  • 日時:2018年1月21日(日) 14:00〜18:00
  • 持ち物:ノートパソコン(Mac OS)、電源コード/電源アダプタ(又はバッテリ)
  • 参加費:2,000円

いわゆるもくもく会とは違い、講義形式で簡単なアプリを作成していきます。
Xcodeの設定やプロジェクトの作成から丁寧に教えてもらえるので、「アプリについて興味はあるけどどうやって作ればいいかわからない」という人にはオススメの勉強会でした。

会場の雰囲気

会場はレンタルオフィスのカフェスペースだったので、大学の講義室のような堅苦しい感じはなく、ゆったりと心を落ち着かせながら勉強できました。
会場の管理人さんからお菓子とコーヒーを出していただいたので、プログラミングで詰まった時はうまく気分転換させることができました。
カフェスペースでコーヒーを飲みながらMacを立ち上げている様は何だかすごくエンジニアっぽいなと感じました(笑)

f:id:strongWhite:20180317210602j:plain:w400

作成したアプリ

勉強会の開催日がバレンタインデーに近かったこともあり、「プレゼントボックスをタップするとバレンタインメッセージを送れる」アプリを作成しました。
会場ではシミュレータで動作確認を行っています(iPhoneなどの端末があれば実際にアプリをインストールすることも可能です)。

f:id:strongWhite:20180317223747g:plain:w400

画面や構成要素(プレゼントボックスなどのパーツ)が少なく、複雑な挙動もしないのでプログラム自体は数十行程度の簡単なものです。
Swiftに触れて日も浅い人にはちょうどいい難易度ではないでしょうか。

参加した感想

今回の勉強会で作成したプログラムはさほど難しくなかったので、少し物足りなかった印象です。
講義自体も最初の2時間ぐらいで終わってしまったので、後半は参加者との交流にあてる形になりました。
主催者側はむしろ後半の参加者との交流に重きを置いていたらしく、積極的に参加者との意見交換を促していました。
社外のかたと積極的に関われる貴重な機会でしたので、技術談話が盛んに行いました。

最後に

自宅でのプログラミング学習は何かで詰まったり、思うように理解が進まなかったとしても自分ひとりで解決しないといけないので結構つらいです。
分厚い参考書を読んだり、Webサイトで調べたりいろいろ右往左往しないといけないと思いますが、勉強会に行くとわからないことは気軽に質問できるのでいいです。
すぐにでも知識を身に付けたい人は参考書を買うよりも勉強会に行った方がいいかもしれません。

参考

「openSUSE」で始める初めてのLinuxデスクトップ

MasaKuです。もうすぐ社会人1年目終了です。
近況ですが、先日大阪で開催されたオープンソースのイベントOSC OSAKA 2018に参加しました。

www.ospn.jp

イベントの中で「openSUSE」のセッションがあったのですが、Linuxデスクトップを使ったことがない私のような初心者でも扱いやすそうなWindowsライクな画面で興味を持ちました。
また、発表者さんの展示ブースの方にも訪れたんですが、openSUSE Leap42.3のインストールディスクを頂いたので、古くなったノートパソコンにインストールして使ってみたいなと思いました。

f:id:MasaKu:20180319211310p:plain
openSUSE の公式マスコット「Geeko(ギーコ)」です。可愛いですね。

openSUSEとは

"Slackware”系Linuxディストリビューションで、主に欧州で人気のようです。
2017年7月より"Microsoft ストア”でもリリースされています。

f:id:MasaKu:20180318191907p:plain
デスクトップ画面

デスクトップは上図のような感じで、普段からWindowsマシンを利用する方はすぐに操作に慣れることができるのではないでしょうか。
また、仮想デスクトップや、「Alt + Tab」の画面切り替えなど、様々なデスクトップ効果が使えるため、WindowsMacでそのような機能を多様される方でも使いやすいのではないかと思います。

OSC OSAKA 2018の会場で聞いた話ですがopenSUSEはかなり初期から仮想デスクトップ機能を導入していたようです。

プライベート用としてのLinuxデスクトップの利用

私は業務でもプライベートでも、Windowsマシンを使っています。
openSUSEをプライベートで利用する場合、普段行っていることがどこまでできるのか、ということをリストアップしました。

  • 文章作成:googleドキュメントが利用できる
  • プログラミング:AtomLinux環境でも利用できる
  • 動画視聴:YouTube等の動画サイトが利用できる

FireFoxが標準搭載されているため、Windowsで利用してたクラウドサービスがそのまま利用できます。
環境を選ばないことの素晴らしさを改めて実感しました。
今のところ、プライベート利用する上では目立った問題は見つかっていません。

強いて問題点を上げるなら、トラブルシューティングがほぼ英語記事のため、問題が起きた場合は英語と向き合わなければならないという点があります。
日本語のトラブルシューティングを記事にして発信していく事で、わずかでもオープンソースの発展に貢献できるんじゃないかと思います。

パッケージ管理ソフト「YaST

LinuxディストリビューションはどのOSも類似機能があるため特徴が見つけにくいようですが、openSUSEの最大の特徴は「YaST」というパッケージ管理ソフトです。
YaSTとは、 Yet another Setup Tool (もう 1 つのセットアップツール) の略で、システム全体の設定を行なうことができるように目指して作られています。
Windowsのコントロールパネルのように見えますが、GUILinuxの操作ができるツールです。
ミドルウェアのインストールもYaSTで行うことができます。

f:id:MasaKu:20180318192253p:plain
YaSTのトップ画面

YaSTを利用したLAMP環境の構築

驚きだったのが、YaSTのソフトウェア管理メニューを利用することで、LAMP環境が一発で構築できてしまいます。

構築手順は以下の通りです。

  1. メニューの中からソフトウェアを選択しソフトウェア管理を選択
  2. 検索バーにLAMPと入力
  3. 検索で見つかった「patterns-openSUSE-lamp_server」を選択して了解ボタンを押下

f:id:MasaKu:20180318194956p:plainf:id:MasaKu:20180318192443p:plain
YaSTでのLAMP環境のインストール手順

あっという間にPHPが実行できる環境が出来上がりました。

YaSTを利用したApacheの起動

インストール完了後にApacheの動作確認を行います。
Apacheの起動もYaSTで行うことができます。

  1. メニューの中からシステムを選択し、サービスマネージャーを選択
  2. Apache2を選択して有効に変更し、開始を押下する
  3. OKを押下して、変更を確定する

f:id:MasaKu:20180318193037p:plainf:id:MasaKu:20180318193041p:plain
Apacheの起動方法

これでApacheの起動が完了です。

FireFoxlocalhostもしくはApacheを起動しているコンピュータのIPアドレスにアクセスするとApacheが起動したことを確認することができます。

f:id:MasaKu:20180318193053p:plain
Apacheの起動確認。「It works!」と表示されていれば起動成功

Apacheの設定

PHPを利用するためにはapacheを設定する必要がありますが、こちらもYaSTで設定することができます。

  1. ネットワークサービスを選択し、HTTPサーバを選択
  2. ウィザードに従ってサーバの設定を行う

f:id:MasaKu:20180318193836p:plain
PHPを利用できるようにするための設定

重要なのはSTEP2でPHPを設定することです。
それ以外は設定する必要はありません。

設定が完了したら以下のプログラムを作成して/srv/www/htdocs/に配置して確認してみましょう。

<?php
  phpinfo();

f:id:MasaKu:20180318193805p:plain
ApachePHPが使える状態になっていればphpinfo()が起動して画面が表示される

おわりに

いかがでしたでしょうか。
Linuxはサーバとしてしか利用したことがなかったため、Linuxデスクトップがここまで利用しやすいものだとは思いませんでした。
OS無しのノートパソコンを一台購入して、openSUSEを入れてしっかりと使ってみたいという気持ちにもなりました。
Linuxデスクトップに興味がある方や、古くなったパソコンを再利用してみたい、という方は利用してみてはいかがでしょうか。

参考サイト

「openSUSE Leap」がWindows 10の“ストア”に登場 ~「SUSE Linux Enterprise Server」も - 窓の杜
KDE4のデスクトップ効果の解説
さくらのVPSにopenSUSE Leap42.2が提供されたのでLAMPな環境を構築してみる

cVimを使ってブラウジングを快適に

はじめに

以前調べることが多い時期があり、効率的にブラウジングするため、cVimというgoogle Chromeで利用できる拡張機能を導入しました。cVimを使うとVimライクにブラウザを使うことができる他、ショートカットを自分で設定することができます。この記事ではcVimを使うとできることを紹介します。

やりたいこと

私がツールを導入しやりたかったことを記載します。

  • できるだけマウスを使わずにブラウジングをしたい
  • command + fのような2キーのショートカットを1キーで行いたかった
  • タブの複製や特定のページを開くといった、存在しないショートカットを使いたい

cVimのダウンロード

ダウンロードページから追加ボタン押してダウンロードします(私は追加済みのため「CHROMEに追加済み」という表示になっていますが)。 f:id:kuwa_38:20180318122758p:plain

cVimでできること(ショートカットキー)

cVimに元から備わっているショートカットキーについて幾つか紹介します。

  • fでページ内のリンクにショートカットを割り振る
    • 恐らくcVim(や似た拡張機能Vimium)を使った際に一番便利な機能です。下記の場合は続けてuを押せばラクスのホームページが開かれます f:id:kuwa_38:20180318122942p:plain
  • jで下、kで上にページスクロール(矢印キーの上下と同じ挙動)、dで下、uで上に半ページ分スクロール
  • ggでページの最上部へ移動、Gでページの最下部へ移動
  • /でページ内検索、Enterで検索文字列を確定後nで次の検索対象、Nで前の検索対象へ移動
  • giでページの一番上の検索欄にフォーカス

cVimでできること(コマンド)

:でコマンドが打てます。例えば:tabnew [URL]で「[URL]を新規タブで開く」、:tabnew [検索文字列]で「新規タブで[検索文字列]を検索した結果を開く」ことができます。また、:でコマンドモード起動した後、文字を入力するとその文字から始まるコマンドを表示してくれます(下記はtを入力した場合)。候補はtabshft + tabで移動できます。 f:id:kuwa_38:20180318123032p:plain

ショートカットのカスタマイズ

:でコマンドを打てると先ほど記述しました。とは言えコマンドを打つくらいならマウスで操作する方が早いという話です。ここではショートカットキーやコマンドを設定する方法をご紹介します。

ショートカットなどのカスタマイズはcvimのマーク > Settingsから設定できます。

f:id:kuwa_38:20180318123104p:plain

cVimrcと書かれた枠に設定を記述していきます。因みにHelpのリンクを押すと、cVimのショートカットキーやCSSの設定方法や例が載っていますので詳しく知りたい方はご参照下さい。

f:id:kuwa_38:20180318123140p:plain

ここでは例として、「ラクスのホームページを新規タブで開く」を設定してみます。

1.cVimrcに設定を記述

map [任意のキー] [挙動]で任意のキーに特定の挙動を設定できるので、下記のように設定します。これでaキーに:tabnew https://www.rakus.co.jp/が割り当てられます。

map a :tabnew https://www.rakus.co.jp/

2.画面下部のsaveボタンから設定を保存

これで設定は完了です。あとは新規のタブを開いて(設定前に開いていたタブだと設定が反映されていないためリロードが必要)、aと押せば下記のような画面が表示されるはずです。さらにEnterを押せばラクスのトップページが開かれるはずです。

f:id:kuwa_38:20180318123218p:plain

上記の例はコマンドを実行するものであったため、ショートカットキーを押したあとにEnterを押す必要がありましたが、cVimで用意されているショートカット(fjkなど)ならキーを押しただけで特定の挙動を実行できます。

設定例

最後に現在の私の設定を紹介します(使い始めて間もないのでそこまで設定してませんが...)

f:id:kuwa_38:20180318123238p:plain

unmap x

  • unmap [キー]と設定することで特定のキーをショートカットで使えなくします
    • Commandと間違ってxを押すとcVimに登録されている「現在のタブを閉じる」(closeTab)が実行されてしまうので無効にしました(タイポしなければいい話なんですけどね)

map w

  • Command + wの「現在のタブを閉じる」をw1つでできるようにしています
    • したかったことの1つ「2キーのショートカットを1キーで行いたい」を実現している設定です

map e :duplicate

  • eと押した後にEnterを押すと「現在のタブを複製する」を実行できます
    • したかったことの1つ「存在しないショートカットを使いたい」を実現している設定です

let hintcharacters "asdfgjklwertuioxcvnm"

  • fでページ内にリンクを割り振る際に使用できるキーを設定しています

set noautofocus

  • 開いた際に入力欄にフォーカスされるページだと、ショートカットを使う前に入力欄からでる(escを押す)必要があります。面倒なので、入力欄にフォーカスしないように設定しています

終わりに

この記事ではcVimについてご紹介しました。ここではCSSなどの設定には触れませんでしたが、他にも色々と設定ができるので気になった方は調べてみてください。

参考

クラウドサービスのエンジニアが読んでほしい!技術書・ビジネス書 2018

id:radiocat です。最近読んだ書籍は カイゼン・ジャーニー です。

先月、「ITエンジニアに読んでほしい!技術書・ビジネス書大賞 2018」が発表されました。

www.shoeisha.co.jp

今年の大賞は以下の通り決まったようです。

技術書部門

機械学習入門 ボルツマン機械学習から深層学習まで

機械学習入門 ボルツマン機械学習から深層学習まで

  • 作者:大関真之
  • 発売日: 2016/12/01
  • メディア: 単行本(ソフトカバー)

ビジネス書部門

職場の問題地図 ~「で、どこから変える?」残業だらけ・休めない働き方

職場の問題地図 ~「で、どこから変える?」残業だらけ・休めない働き方

  • 作者:沢渡 あまね
  • 発売日: 2016/09/16
  • メディア: 単行本(ソフトカバー)


この企画は翔泳社さんの主催で毎年開催されています。その年の旬な技術書を知ることができるので楽しみにしているエンジニアの人も多いのではないでしょうか?

というわけで、このイベントにあやかって弊社社内でもおすすめの書籍についてアンケートを取ってみました。開発部の新人から部長まで役職や職歴を問わず、特にテーマや制限も設けず、現時点で人におすすめできる書籍を1人最大5冊まで選んでもらいました。ただ、この記事のタイトルの通り弊社はクラウドサービスの会社でWeb系のエンジニアが多いため、本家の投票結果よりはジャンルが少し限定されてしまう点は念頭に置いていただければと思います。題して「クラウドサービスのエンジニアが読んでほしい!(と思っている)技術書・ビジネス書 2018」です。



RAKUS Developers に最も支持されている1冊

まずは最も多くの票を集めた技術書・ビジネス書をそれぞれ紹介します。

技術書部門:リーダブルコード

本家の技術書・ビジネス書大賞でも2014年に大賞に輝いた書籍が全体で最多の票数を集めました。初版は2012年ですが、いまだに新人からベテランまで多くのエンジニアが拠り所にしている不動の名著です。

  • 投票者のコメント

プログラマにとっては、教科書的な本だと思いました。

言わずもがなエンジニアは全員読んだほうがよい本。

ビジネス書部門:トヨタ生産方式

カイゼンのバイブルとも言える不動の名著がビジネス書のトップでした。初版は1978年で、業界を選ばず40年間読み続けられており、IT業界でもアジャイル開発を中心としてカンバンなどの形で取り入れられています。立場を選ばずマネジメントにも開発の現場にも支持されている1冊と言えます。

トヨタ生産方式――脱規模の経営をめざして

トヨタ生産方式――脱規模の経営をめざして

  • 投票者のコメント

何十年も前に考えられた方式「かんばん」が今のソフトウェア開発に生きているという点は感慨深い。

自身のソフトウェア開発プロセスを考えながら読むと、まったく製造業に限定されないことだと分かって驚く。

RAKUS Developers が選ぶオススメの5冊

次に、惜しくもトップの座は逃しましたが、多くの票を集めたベスト5を投票者のコメントと合わせて紹介します。どの本もトップの1冊に劣らない名著で、開発チーム内で話題になって薦め合ったり、読書会の題材になったりしたことで票が集まったようです。

技術書:達人プログラマー

新装版 達人プログラマー 職人から名匠への道

新装版 達人プログラマー 職人から名匠への道

エンジニアが基本とすべき考え方や視点がたくさん含まれており、経験を経てから読んでも新たな気付きがあるため手元において数年おきに読みたい本。

初心者の自分にとっては「銀の弾丸は無い」ということに改めて気付かされる一冊でした。

技術書:デザイン組織のつくりかた

UIパーツのデザインやリサーチ、UX設計など広範囲に渡っているデザイナーの仕事を1人でこなすのは現実的ではなく、ユーザーの利用とビジネス上の要求を充たすためのデザイン組織をどのようにして組み立てていくのが良いか、示唆に富んだ内容。

技術書:SCRUM BOOT CAMP THE BOOK

SCRUM BOOT CAMP THE BOOK

SCRUM BOOT CAMP THE BOOK

スクラムとは何か・どういった流れで進んでいくのかが漫画を交えて分かりやすく説明されています。

スクラムをやったことが無い人向けにスクラムがどういうものかを説明した解説書の中で最もわかりやすく、それでいて重要な要素がしっかり説明されている。

ビジネス書:「残業しないチーム」と「残業だらけチーム」の習慣

「残業しないチーム」と「残業だらけチーム」を比較しながら様々なケースを例に書いてあり読みやすいです。

すぐに実践出来ることが多いので読んですぐに試せます。

ビジネス書:入社1年目の教科書

入社1年目の教科書

入社1年目の教科書

  • 作者:岩瀬 大輔
  • 発売日: 2011/05/20
  • メディア: 単行本(ソフトカバー)

配属されて間もない頃は相談や質問の仕方で戸惑う場面もあるので参考になりました。

社会人の心構えについて大事なポイントを丁寧に解説されています。

RAKUS Developers のひとりひとりが厳選した1冊

ここまで紹介した書籍以外にもその人の立場や仕事内容によって、おすすめの書籍はまだまだたくさんあります。アンケートでは合計で100冊近くの書籍が投票されました。そこで、せっかくなので投票者ひとりひとりの推しが特に強かった1冊を、選んだ人の立場や仕事内容ごとに分類してピックアップしてみました。

若手エンジニアが選んだ6冊

前出の『リーダブルコード』や『入社1年目の教科書』も若手の票が多く集まった書籍でしたが、他にもたくさんの名著が選ばれました。これから社会人になる人にもオススメできそうです。

7つの習慣

適切な内省で自身の成長させるフローが明確かつ説得力ある形で記載されており、技術にかぎらず自身のキャリアパスなり日々の行動のヒントとなる

99%の人がしていないたった1%の仕事のコツ

99%の人がしていないたった1%の仕事のコツ (たった1%のコツシリーズ)

99%の人がしていないたった1%の仕事のコツ (たった1%のコツシリーズ)

  • 作者:河野 英太郎
  • 発売日: 2012/03/12
  • メディア: 単行本(ソフトカバー)

仕事に取り組むための姿勢やとるべき態度が記載されています

レバレッジ・リーディング

レバレッジ・リーディング

レバレッジ・リーディング

忙しい社会人でも多くの本を読むべきなので、そのノウハウを紹介している本書はとても有用です。

エンジニアを説明上手にする本

エンジニアを説明上手にする本 相手に応じた技術情報や知識の伝え方

エンジニアを説明上手にする本 相手に応じた技術情報や知識の伝え方

  • 作者:開米 瑞浩
  • 発売日: 2016/12/02
  • メディア: 単行本(ソフトカバー)

顧客/オペレーター/経営者/新人...前提知識がそれぞれ異なる人にうまく説明するにはどうすればいいかがわかりやすく掲載されています

プリンシプル オブ プログラミング

「達人プログラマー」「プログラマが知るべき97のこと」等の名著のエッセンス(=プリンシプル)が凝縮されています。

現場で使えるデバッグ & トラブルシュート Java

実践的なトラブルシュート対応方法(Javaのみ)が書いてある本。初心者向けにJavaリソースの仕組みなども学べる。

熟練エンジニアが選んだ4冊

経験を積んだエンジニアからは、さらに熟達を目指すテーマの書籍が選ばれています。経験と領域は選びますが側に置いて長く活用できそうな書籍ばかりです。

Java言語で学ぶデザインパターン入門

増補改訂版Java言語で学ぶデザインパターン入門

増補改訂版Java言語で学ぶデザインパターン入門

  • 作者:結城 浩
  • 発売日: 2004/06/19
  • メディア: 大型本

言わずとしれた名著でJavaで仕事をするなら読んでおきたい本。

カンバン仕事術

カンバン仕事術

カンバン仕事術

カンバンのやり方をよく理解することができた。

情熱プログラマー

情熱プログラマー ソフトウェア開発者の幸せな生き方

情熱プログラマー ソフトウェア開発者の幸せな生き方

  • 作者:Chad Fowler
  • 発売日: 2010/02/26
  • メディア: 単行本(ソフトカバー)

プログラマーにとって大切なことが詰まっていて、読むと前向きになれる。定期的に読み返したい。"

40歳を過ぎたら、働き方を変えなさい

40歳を過ぎたら、働き方を変えなさい

40歳を過ぎたら、働き方を変えなさい

  • 作者:佐々木 常夫
  • 発売日: 2017/05/24
  • メディア: 単行本(ソフトカバー)

色々と省略しましょうとか、若手に任せましょうとかは共感できました。

スペシャリストが選んだ4冊

社内でも特に技術志向の強いのエンジニアが選んだ書籍を集めてみました。選んだ本のタイトルからもその志向が垣間見える気がします。そして何よりも投票者のコメントがみんなアツすぎて記事を編集するほうも圧倒されてしまいました。

入門 コンピュータ科学 ITを支える技術と理論の基礎知識

コンピュータサイエンスの教科書。学生時代に情報学部ではなかった人はあまり体系的に学ぶ機会がないので読んでおいた方がいいというか読まないとどこかでITエンジニアとして頭打ちになる。

アーキテクチャを考えるとき、トラブルシューティングするとき、より良い設計やソースコードを判断するときなど、あらゆる場面の基礎となる知識が含まれる。

UNIXという考え方

UNIXという考え方―その設計思想と哲学

UNIXという考え方―その設計思想と哲学

  • 作者:Mike Gancarz
  • 発売日: 2001/02/01
  • メディア: 単行本

良い設計を考えるきっかけになった本。様々なプログラミング原則やプラクティスはここに帰着する。

どのプログラミングハウツー本を読むべきか迷ったらまずはこの1冊を読むことをおすすめする。

テスト駆動開発

テスト駆動開発

テスト駆動開発

  • 作者:Kent Beck
  • 発売日: 2017/10/14
  • メディア: 単行本(ソフトカバー)

原理主義的なテストファーストをするかどうかは別として、自動テストを書くことで得られる心理的な安心感や、高速なフィードバックループ、動くものを作ってからリファクタリング、というTDDの良さを感じてほしい。

本書前半の多国通貨を実際に写経することで、タスクを細かく(執拗なまでに細かく)分割し、自動テストに支えながら1つずつやっつけていく気持ちよさをぜひ味わってほしい。

すごいHaskellたのしく学ぼう!

すごいHaskellたのしく学ぼう!

すごいHaskellたのしく学ぼう!

  • 作者:Miran Lipovača
  • 発売日: 2012/05/23
  • メディア: 単行本(ソフトカバー)

Haskell言語の入門的読み物として代表的な本です。

実際にアプリを作れるところまではいきませんが、ファンクターやモナドといったHaskellで中心的な概念を読みやすく説明してくれています。

読んでいると何となく自分もHaskellで何か作れそうな気がしてきます。

デザイナーが選んだ4冊

デザイナーからのオススメもその仕事に沿った特徴的な書籍が選ばれました。Web系エンジニアとしても抑えておきたい本が並んでいます。

ユースケース駆動開発実践ガイド

要求からドメインモデルとユースケースを作い、ソフトのあり方を段階的に明らかにしていくICONIXプロセスについての本。 実践を想定した具体的な内容で、「こうしましょう」でなく「こうすると失敗しやすい」が書かれているので心強い。

エンジニアのための図解思考

自分の頭の中の整理の方法や考えかたなど図示するテクニックが載っているので、業務で実践しやすい。

SOSの猿

SOSの猿 (中公文庫)

SOSの猿 (中公文庫)

「自社開発した株の発注システムが誤動作して300億円の損失を出した原因を調べる」...いや、怖いです。 これを実は顧客より、UIのせいにされるんですが、UIデザイナの友人などは身に染みると申しておりました。

問題解決ラボ

固い頭を柔らかくする本

マネージャーが選んだ5冊

最後にマネージャーからもオススメの書籍を選んでもらいました。組織の方向性を示してエンジニアを束ねる視点で選ばれているのがわかります。これからマネジメントを学ぼうとしているエンジニアも読みたい書籍の数々です。

ケン・ブランチャード リーダーシップ論

リーダー、管理職等マネジメントを担うメンバは読んでおくべき基本書。

サーバント型リーダシップ、重要ですね。

1分間マネジャー―何を示し、どう褒め、どう叱るか!

管理職としてメンバーと接する時に1分という短い時間で大きな成果を得るためにを考えさせられた。

本自体は古いが1分間振り返りなどためになるものがあった。

なぜ、あなたの仕事は終わらないのか

なぜ、あなたの仕事は終わらないのか

なぜ、あなたの仕事は終わらないのか

  • 作者:中島聡
  • 発売日: 2016/06/01
  • メディア: 単行本(ソフトカバー)

タスクの進め方でお悩みの方、段取りが悪くてタスクが上手く進めれない方へ 時間術、仕事術についてわかりやすく書いています。エンジニアの著書でもあり日々の自分たちの状況とマッチする話も多いと思います。

Inspired: 顧客の心を捉える製品の創り方

[asin:B00TCM8TB4:detail]

正しい製品とは何かを考えさせられ、また正しく製品を作る方法が解説されている。

製品にはエンジニアリングはもちろんのこと、その他にもプロダクトマネジメント、UX/UIデザイン、プロジェクトマネジメント、システム運用、プロダクトマーケティングが必要で開発で関われる範囲の広さを知ることができると共にキャリアプランを考える際に参考にできる。

Joy, Inc.

ジョイ・インク 役職も部署もない全員主役のマネジメント

ジョイ・インク 役職も部署もない全員主役のマネジメント

アジャイルの理想型のイメージが掴めた

世の中にこれほどまでにJOYを突き詰めた会社がある事に驚き。その会社が口コミだけで仕事が舞い込み、ビジネスが機能しているのはまさにwin-winな関係性。素晴らしいの一言。

おわりに

手元のアンケート結果をながめてみると紹介したい本はまだまだたくさんありますが、これだけでも30冊になったので今回はここまでにしたいと思います。30冊もありますが、知らないタイトルは無いくらいどれも著名な書籍ばかりだと思います。また、投票した人の仕事内容に合わせて分類してみるとそれぞれ選ばれた書籍に特徴があったのも興味深い結果でした。自分の興味のある分野の本で未読のものがあれば読んでみてはいかがでしょうか。そして機会があればまた来年も実施してみますのでお楽しみに。

Node.js + Express + Socket.ioで遊んでみた

はじめに

id:d_shrです。
担当している商材の機能を実装する上でNode.js, Express, Socket.ioについて学習する機会があったのでまとめてみようと思います。 Socket.ioのサンプルコードを参考に簡単にチャットアプリの基本的な機能を作ってみました。
簡単にWebアプリケーションを作ってみたいという方やNode.jsやSocket.ioを学習し始めた方の参考になればと思います。

Node.js

Node.jsについては過去の記事で紹介されているので割愛します。
Node.jsの勉強会でお手軽にWebアプリを作った話 - RAKUS Developers Blog | ラクス エンジニアブログ

知ってる?nodemailerを使ってメールを送る方法 - RAKUS Developers Blog | ラクス エンジニアブログ

Express

ExpressはNode.js向けの軽量なフレームワークです。
ちょっとめんどくさい外部からの要求と内部ロジックをマッピングする基本的なルーティング機能が簡単にできたり、express-generatorによってアプリケーションの雛型が簡単に作れる便利なやつ。
詳しい説明や使い方は公式サイトに書かれています。

Socket.io

サーバとクライアント間の通信で非同期かつ双方向の通信を実現するためのプロトコルであるWebSocketを手軽に利用できるモジュールです。 Node.jsのnpmで提供されています。
詳しい説明や使い方は公式サイトに書かれています。

チャットを作ってみた

Node.js, Express, Socket.ioを利用して作ってみました。

実装した機能は2点です。
1. メッセージの送受信と表示
2. ログイン機能(Nodeサーバにリクエストがあるとログイン画面へ)

1. メッセージの送受信と表示

チャットの基本的な機能。
Socket.ioのGet startedをとりあえずやってみました。
チャットのサンプルコードでメッセージの送受信をどのように行うか説明されています。

クライアント側の処理
  • メッセージの表示や入力欄

f:id:d_shr:20180313144146p:plain

<!-- メッセージの表示 -->
<ul id="messages"></ul>

<!-- メッセージ入力欄 -->
<form action="#" id="chatForm">
  <input id="m" autocomplete="off" />
  <button>Send</button>
</form>

受信したメッセージを表示する部分と送信するメッセージの入力欄です。

  • メッセージ送信や受信メッセージの表示ロジック
<script src="/socket.io/socket.io.js"></script>
<script src="https://code.jquery.com/jquery-1.11.1.js"></script>
<script>
  var socket = io();
  var userName = '';
  $(function () {

    // メッセージを送信する
    $('form').submit(function(){
      socket.emit('chat message', $('#m').val());
      $('#m').val('');
      return false;
    });

    // 受信したメッセージを表示
    socket.on('chat message', function(data){
      var chat = data.userName + " : " + data.message;
      $('#messages').append($('<li>').text(chat));
    });
  });
</script>

通信を行うための基本的な操作は以下の2つです。
socket.emit('event', data);
イベントの発火、接続している全員(送信者含む)へdataを送信します。
socket.on('event', callback);
イベントの検知、送信されたdataを受信します。

ここでは、入力されたメッセージのSubmitをイベントchat messsageとしてサーバへメッセージが送られます。
イベントchat messsageを検知すると、サーバで処理され送信されてきたメッセージを受け取り表示します。

サーバ側の処理
  • サーバにアクセスすると実行される部分。
// モジュールを読み込む
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

// Nodeサーバにアクセスがあるとindex.htmlへ遷移
app.get('/', function(req, res){
 res.sendFile(__dirname + '/index.html');
});

必要なモジュールをrequireで読み込み、index.html(クライアントの処理)へ遷移します。

  • メッセージの送信ロジック
// メッセージ送信処理
socket.on('chat message', function(msg){
  io.emit('chat message', msg);
});

クライアント側から送信されてきたメッセージをサーバで受け取り処理するところです。
接続しているクライアントへメッセージを送信します。
以上がチャットの基本的なメッセージのやりとりの処理になります。

2. Nodeサーバにリクエストがあるとログイン画面へ遷移

f:id:d_shr:20180313144150p:plain

理解を深めるために、データのやり取りをもう少し複雑にしてみようと思いつきで実装してみた機能。
実装したもの以下のとおりです。

  • ユーザ名を入力してログイン
  • ユーザ名を表示してメッセージを識別
  • データのやり取りにユーザの情報を追加
クライアント側の処理
  • ログインフォーム
<!-- ログインフォーム -->
<form id="loginForm">
  <div>
    <input id="username" name="username" type="text" class="form-control" placeholder="ユーザ名" autofocus />
    <button id="btnLogin">ログイン</button>
  </div>
</form>
  • ログイン処理
<script src="/socket.io/socket.io.js"></script>
<script src="https://code.jquery.com/jquery-1.11.1.js"></script>
<script>
  var socket = io();
  var userName = '';
  $(function () {
    // ログイン画面表示
    $('#loginForm').show();
    $('#chatForm').hide();

    // ログイン処理
    $('#btnLogin').on('click', function (e) {
      userName = $('#username').val();
      if (userName) {
        // チャット画面表示
        $('#loginForm').hide();
        $('#chatForm').show();
        // ユーザ情報をサーバへ通知する
        socket.emit('login', {
          userID: socket.id,
          userName: userName
        });
      }
      e.preventDefault();
    });
  });
</script>

主に追加したものはログイン時の処理です。
ログインフォームとチャットフォームの切り替え処理も入れたりしています。
socket.emit()で送信者のsocketのidと入力されたユーザ名を送信します。

サーバ側の処理
io.on('connection', function(socket){

  var loginUsers = []; //ログインユーザ

  // ログイン処理
  socket.on('login', function(userInfo){
    loginUsers[userInfo.userID] = userInfo.userName;
  });

  // メッセージ送信処理
  socket.on('chat message', function(msg){
    userName = loginUsers[socket.id];
    io.emit('chat message', {
      userName: userName,
      message: msg
    });
  });
});

ログイン時の処理とメッセージ送信時のデータを追加してみました。
ユーザの情報としてソケットIDをユーザID、クライアント側でログイン時に入力された値をユーザ名を持っています。 メッセージの送信時には、送信したユーザとそのメッセージを紐づけて、クライアント側へ送信します。
これでログイン機能、ユーザ名による識別を実現し、よりチャットっぽくなりました。

おわりに

学習したNode.js, Express, Socket.ioを使って実際にアウトプットしてみたことをまとめてみました。
環境構築と実装がすごく簡単ですぐにできます。
チャットについては、もう少し機能拡張したりコード自体をキレイにしたいと思います。

参考


  • エンジニア中途採用サイト
    ラクスでは、エンジニア・デザイナーの中途採用を積極的に行っております!
    ご興味ありましたら是非ご確認をお願いします。
    20210916153018
    https://career-recruit.rakus.co.jp/career_engineer/

  • カジュアル面談お申込みフォーム
    どの職種に応募すれば良いかわからないという方は、カジュアル面談も随時行っております。
    以下フォームよりお申込みください。
    forms.gle

  • イベント情報
    会社の雰囲気を知りたい方は、毎週開催しているイベントにご参加ください! rakus.connpass.com

人生初の勉強会参加!勉強会の選び方と参加した感想

はじめに

先日、初めて勉強会に参加したのでそのことについて記載します。初めてだったため、どんな勉強会に行けばいいのか(行きたいのか)、そもそも勉強会ってどんなものかも分かっていませんでした。この記事では、行った勉強会の内容に加え、どういった基準で選んだか、実際に行ってみてどのように感じたか、どのように情報をキャッチアップしたかについても紹介します。

参加した勉強会

私が参加した2つの勉強会と、その概要について記載します。

最新技術てんこ盛り!新年なにわTECH 祭り2018(AI・IoT編)

  • 分野:AI、IoT、Deep Learnig
  • 開催:株式会社パソナテック
  • 発表時間:25〜50分
  • 登壇者の発表を聞く聴講型
  • スケジュール:
    • 12:50〜13:00:開会挨拶
    • 13:00〜17:50:発表
    • 17:50〜18:00:閉会挨拶
  • AIやDeep Learnigの業務利用に関するお話が多めでした。ある程度AIやDeep Learningの知識はある前提で、どのように業務適用をしているかについての発表が多かった印象です

Mobile Act OSAKA #3

  • 分野:iOS、アンドロイド開発
  • 開催:フェンリル株式会社
  • 発表時間:5分のLT & 5分の質疑応答
  • 登壇者の発表を聞く聴講型
  • スケジュール:
    • 18:45〜18:50:開会挨拶
    • 18:50〜20:00:発表
    • 20:10〜21:20:懇親会
  • 発表のテーマは様々だった印象です。また、企業の方だけでなく、学生さんも登壇されており、自由な(いい意味で緩い)雰囲気でした
  • こちらもある程度、前提知識はあることが前提で発表されている人が多かった印象です

勉強会を選んだ理由と参加してみて

参加した2つの勉強会を「選んだ基準」、「参加前に考えていたこと」、「実際参加して感じたこと」、その理由を記載します。もちろん、勉強会の内容(私の場合、iOSやアンドロイドといったモバイル開発、AIやDeepLearningの業務利用)に興味があり聞いてみたかったことが大前提としてあります。

料金

  • 参加前

    • 料金が安い方がいい
      • 結果的にどちらも無料の勉強会に参加しました
      • 勉強会を探しているうちにあまり気にしなくなりました(見ていた勉強会の殆どが無料か少額だったからかもしれませんが)
  • 参加後

    • 無料でなくてもいいかなと最近は考えています
      • テーマや日程で絞るとそこまで数があるわけではないためです
      • 自分の糧になるので、払ってもいいと感じるようになったためです

形式

  • 参加前

    • 聴講形式がいい
      • ハッカソンやハンズオンなど手を動かすタイプは前提知識が必要そうだったため敷居が高かったためです
  • 参加後

    • 次はハンズオンに挑戦したい
      • 聴講形式は前提知識がないと聞いても分からないことが多い印象です。事前に調べるか、一度行って重要そうな単語は調べて次に望むといいかもと思います
      • ハンズオンでは前提知識がない人がある程度実装できるようになることが目的になっている印象です。聴講形式も良かったですが、その日中に「xxxができるようになった」という状態になるのは達成感がありそうです

懇親会

  • 参加前

    • 分からなかったため、ある勉強会とない勉強会に参加
  • 参加後

    • 懇親会はあった方がいいと感じた
      • 発表内容が専門的で分からなくても、世間話から入り自分の興味のある分野を聞けます
      • 分からない内容はその場で質問したりと柔軟に動けます(調べて分かることは後で調べる方がいいでしょうが)
      • 技術的な面のみだけでなく、他社の活動などの情報を得られることが良かったです

短時間or長時間

  • 参加前

    • 分からなかったため、以下の両方に参加してみました
      • 会社終わりに短時間
      • 休日に1日ガッツリ
  • 参加後

    • 休日の方が合っていると感じた
      • 会社終わりに短時間:
        • 会社終わりの疲れた状態では、集中力が高い状態で聞けなかった発表もありました
        • 情報のキャッチアップが主目的なら短い時間で色々な情報が得られるため適していそうです。特にMobile Actの場合は懇親会もあったので、興味ある内容を直接聞く事もできる点も良かったと思います
      • 休日にガッツリ:
        • 疲れていない状態で参加できたため、集中できた点がよかったです
        • LTでは伝えきれないような深い(詳細な)内容まで聞けたように思います

情報のキャッチアップ

参加前に一番悩んだと言っても過言でないのが、情報のキャッチアップでした。私の情報のキャッチアップの方法と登録しているサイトについて記載します。

  • 情報のキャッチアップは基本的にtwitter
    • IT勉強会@近畿をフォローして情報をキャッチアップしています
      • 1日に大体20ツイート程度勉強会の情報を発信してくれているようです
      • 個人的には、多すぎて追えないということもなく、情報が少ないということもない良い感じの量なので情報のキャッチアップに利用しています
  • 何のサイトに登録すればいいの?
    • 何かに登録しないといけないという印象はないです
      • 勉強会参加に登録が必要であったため登録している状態です
    • 今のところconnpassDoorkeeperに登録しています
      • twitterでキャッチアップして、必要であれば登録、でいいと思います

その他

  • 名刺を持って行きましょう
    • 受付で身分証明の代わりに渡すところもあります
  • 勉強会の資料はアップされることがあるので、その場合は後で見返すことも可能です
    • 私が今回参加した2つの勉強会は資料がアップされているものもありましたので、興味がある人は見てみてください

終わりに

参加した2つの勉強会と、新人の視点から行く前に抱えていた懸念事項と実際に行ってみて感じたことについて述べました。まだ2件しか参加できていませんが、(例え分からない内容が多くとも)勉強会は行っておいて損はないなと感じています。次はハンズオンにも参加してみたいと思います。

Copyright © RAKUS Co., Ltd. All rights reserved.