日々の反省

学んだことをつらつらと書いていきます。

スマートフォンの仕組みを知ろう -スマートフォンはどんな技術で作られているのか?-

はじめに

突然ですがあなたはご自分のスマートフォンをお持ちですか?お持ちでない方の方が少ないのではないでしょうか。スマートフォンが家の鍵になったり財布の代わりになったり、生活の一部に溶け込んだ存在になってきました。これはこれからもどんどん加速していくでしょう。

一時期前に流行っていた、スマートフォンに似たもので言えば携帯電話でしょう。現在はガラケーと呼ばれ使っている方を見かけることがほとんど無くなりました。折りたたみ型が主流でしたね。懐かしいです。

さて、今回はこのスマートフォンとは一体どのような技術で構成されているのかを知ることで、実はICTを学ぶ上で必要なポイントが多々含まれていることを知っていただきたいと思っています。

スマートフォンは電話?パソコン?

スマートフォンという名前から「フォン=電話」であるとの理解が普通かと思います。しかし、実はスマートフォンを電話として利用するには「SIMカード」と呼ばれるどこの誰が携帯電話のネットワークに繋げようとしているかを特定するためのIDを保存したカードを携帯電話会社から発行してもらい、お使いのスマートフォンに装着する必要があります。

では、このSIMカードを装着していないスマートフォンはどのような扱いになるのでしょうか?スマートフォンの凄いところは、この状態であっても殆どの機能が使える所にあります。使えないのはお互いの電話番号を利用した通話やメッセージのやり取りくらいです。残りの機能は普通に利用することが出来ます。

後日別の記事で解説しますが、インターネットに接続出来れば特にSIMカードは入りません。電話の代わりにLINEやSkypeと言った会話やメッセージのやりとりが可能な仕組みを利用することができます。 スマートフォンには様々なアプリを入れることが出来ますね。これもインターネットに繋がっていれば新しいアプリを入れる事も可能です。ニュースを読んだり、ゲームをしたり、普段スマートフォンを利用する中で困ることは殆どありません。

こうなるとスマートフォンは電話というよりはパソコンの方が近い事になります。逆を言えばパソコンにSIMカードを使った携帯電話ネットワークへの接続と通話、メッセージのやり取りの機能を装備させればスマートフォンと同じになります。パソコンのようなマウスとキーボードで操作するタイプだと持ち運びに不便なので、タッチパネルを利用したマウス、キーボードの代わりになる仕組みを設けました。

スマートフォンを構成している技術とは何か

スマートフォンはパソコンと殆ど同じである事をなんとなく理解できましたか?つまりこれから学んでいくスマートフォンの仕組みを知るとパソコンの仕組みのほとんどを知ることが出来ます。 パソコン パソコンはスマートフォンのような使い方を想定して作られておらず、様々な仕事での利用や他の機器と接続しての利用などが想定されていることから少しだけパソコンの方が出来ることが多かったりします。ただその差は殆どなくなってきたと言えます。

ではスマートフォンはパソコンとは違いどのような使い方が想定されているかというと、やはり持ち運びですね。いつでもどこでもインターネットにつながり、様々なアプリを使って会話を楽しんだり、ゲームで遊んだり、時には仕事もできてしまいます。そのために大きさを小さくしてキーボードやマウスの代わりにタッチパネルを使った操作を可能にしました。

少しだけ掘り下げてICT、情報通信技術という意味ではどのような技術が使われているのかをザクッと考えてみます。ICTの技術には大きくハードウェア、ソフトウェア、ネットワークという3つに分けることができます。これらを組み合わせたデータベースやセキュリティといった領域もあります。また、ICTを利用したシステムを作るための考え方や、今や日本人の教育の中で必須になろうとしているプログラミングという考え方、作業というものがあります。

スマートフォンを知るだけでもこのハードウェア、ソフトウェア、ネットワーク、そしてデータベースやセキュリティといった技術を学ぶことができます。もちろんスマートフォンで利用されている技術だからです。まずはハードウェア、ソフトウェア、ネットワークという3つを今後掘り下げていきましょう。

ITを仕事にする上で必要な技術領域がつまっている

長年IT業界で仕事をしてきましたが、これから学ぶスマートフォンの仕組み、スマートフォンを作り上げている技術。これを学ぶことで必要な技術領域「ハードウェア」「ソフトウェア」「ネットワーク」の最低限知っておくべき知識をお伝えできるなぁと感じています。

ご存知の方もいらっしゃると思いますが「基本情報処理技術者」という国家資格があります。これはIT業界で技術者と活躍する方がよく最初に取得する資格です。この資格の良いところはシステム開発に携わるにあたっての知識を網羅的に学ぶことができる点です。ただ、網羅的であるがために専門家にならない限り覚えている必要がないものも含まれます。これは自身がどの技術に強くなりたいかが見えてきた段階で勉強すれば十分です。

ちなみに自分は「基本情報技術者」の試験は受けていません。ただ参考書を使って網羅的に勉強はしました。今はコンサルティングを生業にしているため深い技術知識はそれほど必要ありません。今振り返るとこの基本情報術者を学ぶことには意味があると感じています。そして仕事で必要になったとき、または自分自身で興味が深くなりもっと勉強してみたいと感じた時にそれぞれの技術領域を掘り下げて勉強してみるのが良いでしょう。まずはそのきっかけとなれるようにスマートフォンを題材にお伝えしていきたいと思います。

資料作成の基本 ー誰に何を伝えて、どうしてほしいのかー

重要なのはWHO/WHY/WHAT

資料を作成し始める前の話です。 まずはその資料を作る目的を明確にしていきます。

WHO:誰が読むのか? WHY:資料を読んでどうしてほしいのか? WHAT:何を伝えたいのか?

上記3つをまず考えることをおすすめします。 外資系コンサルの資料作成を伝える本などではよく出てくる内容です。

誰が読むのか?

資料を作成するにあたって、真っ先に考えなくてはいけないことは「誰がよむのか?」です。

ビジネスで言えば、経営層なのか担当者なのかで伝えなくてはいけないことが大きく変わります。

たとえ話

売上が低下していて、営業組織の活動に問題がありそうだ。という仮説のもといろいろと探っていくと 営業の役割分担がうまく機能しておらず、全然アプローチできていないお客さまとアプローチしなくても買ってくれる お客さまなのに、やたらと手厚く対応している状況が見えてきました。

このときの打手として「組織改編」が有効ではないかと浮かび上がってきました。 一方で営業プロセスが担当に依存しており、ノウハウの共有ができていないことも見えてきました。 こちらは打手として「営業日報の改善」が有効と思われます。

「組織改編」と「営業日報の改善」は前者をまず解決しないと根本対策にならないことがわかっています。 では「組織改編」について現場レベルで話していてもなかなか実行に移すことができません。 そのためまずは経営陣に対して、何が問題で、どうして組織改編が必要なのかをしっかりと説明する必要があります。 一方で、担当者には組織改編後に自分の仕事にどのような影響があるのかをきっちりと伝えてあげる必要があります。

同じ、「組織改編」を語る場合においても読み手に合わせた内容になっていないと意味がなくなります。

「営業日報の改善」は経営陣にとってはそれほど興味があることではない可能性があります。 しかし、推進していく上では経営陣からの落とし込みを期待したいところです。 担当者には営業日報がいかに大切なものであるかを理解してもらい、日々登録して貰う必要があります。

こちらも読み手に合わせて資料化する必要があります。

資料を読んでどうしてほしいのか?

誰が読むのかを意識するのが重要なのは分かっていただけたかと思いますが、次にその資料を読んだ後に、どのような行動を起こしてほしいのかをかんがえる必要があります。 さきほどの例の「組織改編」であれば、経営陣には「組織改編が必要な理由を理解して、組織改編を承認する」ことを期待しています。 担当者には「組織改編後の仕事の姿をイメージして、今後の取組に参加する」ことを期待しています。

このようにその資料を読んだ後に、読み手に「どう動いてほしいのか」を定義しておきます。 どう動いてほしいのかが変わると、書くべき内容が変わります。

何を伝えたいのか?

誰に、どうしてほしいのかが決まりました。ではどういう内容を伝えるべきなのかを考えます。 読み手の方が気にするポイントを十分に押さえられているか、行動に移すために必要な情報が揃っているか。など中身として伝えるべき内容を網羅的に考えます。 ここでは実際の資料のアウトラインを意識しなくても大丈夫です。

「組織改編」について経営に上申する場合であれば、「なぜやる必要があるのか」「どのように行うのか」「いつおこなうのか」「いくらかかるのか」など、5W2Hに当てはめたような内容が必要になるでしょう。 担当者向けには組織改編後に起こる業務の変化を伝えてあげるのが有効になります。

最後に

資料作成する上で、必ず最初に考えるべき内容を簡単に述べました。 詳しい内容は書籍を読めば良いですが、正直、実践あるのみです。

よくわからない資料だなぁと言われやすい方は、この内容をまずまとめてみることから入ってみてはいかがでしょうか。

CRMを再考する

モノづくり以外の話が多くなりそうな予感。

データがとても重要と言われ始めてだいぶ年月が経ちますが、なぜ重要なのか。 その中の一つであるCRMという考え方を振り返ってみようかなと思います。

目次

CRMとは

CRMは「Customer Relationship Management(顧客関係管理)」の略です。
お客さまとの関係を構築し、より良い関係を構築していくための考え方ですね。

お客さまを深く理解することで、提供するべきサービスや商品をよりお客さまにあったかたちに改善していくことができます。
これによりお客さまに満足いただき、継続してご利用いただくことで、企業としての収益も上がっていくことでしょう。

このようにお客さまとの関係をより良く保つためには、お客さまをよく知る必要があります。

CRMがなぜ重要か

いつの時代でも同じですが、お客さまは常に変化していると捉えるべきでしょう。
そのためお客さまが喜んでくれるサービス・商品も変化していくべきです。

サービス・商品そのものは変わっていなくても、お客さまに知っていただく段階での知り方に変化があったりもします。
たとえばテレビCMからWeb広告への転換であったり、テクノロジーの変化によりお客さまも変わっている可能性があります。

お客さま、およびお客さまになりえる方々の出来る限り多くのことを知る。
そしてお客さまを理解することが、企業存続においてとても重要であると言えます。

CRMは端的に考えるとお客さまを知ることにつきます。
お客さまを知ることができれば、様々な打手を作ることができます。 自分たちにとっての優良顧客を増やしていくために、お客さまをよく知るためのCRMがとても重要になるのです。

CRMを成功に導くKPI

ではCRMの効果はどのように測るのでしょうか。
CRM自体はすぐに効果が出てくるというよりは、それなりに年月をかけて取り組むことで効果を期待できるものです。

最低限以下を押さえておくことで、効果を測ることができます。

  1. LTV(顧客生涯価値)
  2. リピート率
  3. 解約/離反率
  4. 顧客単価
  5. アップセル率/クロスセル率
  6. NPS

LTV(顧客生涯価値)

LTVは「Life Time Value(顧客生涯価値)」の略です。

一般的には「お客さまの生涯の中でどれだけのお金を自社に向けて利用いただけるか」を測るものです。

つまりは一人のお客さまが自社のサービスや製品をどれだけ好んでいただけているかを知ることができます。

なので、お一人の売上金額でなくても、継続的にお付き合いできていることを測るその他の指標をLTVとしておいても構いません。

リピート率

定期購入でよく使われますが、いわゆるリピート購入で同じ商品を繰り返し買ってくれているのかを測ります。

これはいろいろと応用できて「繰り返し関係を持っているのか」という視点で指標を置くと良いです。

解約/離反率

リピート率とは逆にどれだけのお客さまが離れていったかを測ります。

何かしらの理由があり離れている訳で、ここを深堀りできれば改善の打ち手が出しやすくなります。

顧客単価

1回の買い物でどれだけ購入いただけているのかを測ります。

小さな額でも繰り返し買っていただけている場合と、大きな買い物を数回行っている場合では対策も違ってきます。

アップセル率/クロスセル率

グレードの高い(価格の高い)商品の購入率と異なる商品の購入率を測ります。

商品を大量に抱える中で、売れ筋を測るのに適しています。

また、次の商品戦略の基点にもなりえます。

NPS

NPSは「Net Promoter Score(ネットプロモータースコア)」の略です。

お客さまが自社や自社製品に対してどれだけ満足いただけているかを測ります。

一般的には10段階で「企業や製品を友達や同僚に薦める可能性があるか」を問います。

1~6を「批判者」、7~8を「中立者」、9~10を「推奨者」としてとらえることで

どれだけ満足してもらえているのかを測ります。

NPSは「推奨者の割合」から「批判者の割合」を引くことで算出します。

下支えする情報システム

CRMを実践していくためには様々な情報システムを活用していくことが望ましいです。

お客さまのことをよく知り、より満足してもらわなければ企業が存続していくことはできません。

そのためにお客さまのコミュニケーション機会を創出したり、その結果からお客さまをしるためのデータ分析をするなど お客さまの情報を適切に扱える仕組みを導入するべきです。

最後に

CRMの考え方は昔から存在しており、知っている人は多いと思います。

うっすい情報ですが、再度考えるきっかけになれば。

Rails + deviseの日本語化

はじめに

Railsには I18nという国際化対応の機能が備わっています。便利です。

application.rbへ設定を追加

config/application.rbを以下のように変更して日本語をサポートするようにします。

config.i18n.default_locale = :ja

日本語用のYAMLを取得

下記リンク先のja.ymlをconfig/locales配下に保存します。 github.com

cloud9上であれば下記コマンドでどうぞ。

wget https://raw.github.com/svenfuchs/rails-i18n/master/rails/locale/ja.yml -P config/locales/

モデルの日本語化

たとえばUserモデルを日本語化する場合は以下のようにconfig/locales/ja.ymlに追記します。

    models:
      user: ユーザー
    attributes:
      user:
        id: ID
        created_at: 登録日時
        updated_at: 更新日時
        birthday: 生年月日
        email: メールアドレス
        salon_id: サロン
        password: パスワード

独自メッセージの多言語化

多言語化を視野に入れて開発する場合にはメッセージやラベル、ボタンなども多言語対応が必要です。 こちらもja.ymlに追記しておいて、t関数で表示させることができます。

  label:
    login_btn: ログインする

上記をerbファイルで表示するには以下のように記述します。

      <div class="form-group">
        <%= f.submit t("label.login_btn"), class:"form-control btn btn-primary" %>
      </div>

t関数にlabel.login_btnのようにyamlのパスを指定するとメッセージを取得します。これを例えばen.ymlに転記しておけば英語対応が可能です。

Deviseの日本語化

deviseを日本語化するには別途devise用の日本語ファイルが必要です。 下記リンク先に様々な言語用のyamlが紹介されています。

github.com

それでは日本語用のファイルを取得しましょう。cloud9なら以下でどうぞ。

wget -O config/locales/devise.ja.yml https://raw.githubusercontent.com/tigrish/devise-i18n/master/rails/locales/ja.yml

動作確認

サーバ起動中であれば再起動後に日本語化されていることを確認してください。

さいごに

今回は国際化対応についてでした。ロケールに応じた言語・通貨・日付の変換を自動的に行ってくれるのでぜひ活用して国際的なビジネスを行いましょう。まず英語学ばないと!

【書籍紹介】サンプルコードを動く状態にして読み進めると一通りRailsを使ってできることがわかります。自分は辞書的な使い方でわからないことがあったときにまず開いてみる一冊です。

Rails5でdeviseを利用したログイン認証を実装しておく

はじめに

何度も実装しているけど、コピーして済ましてきたdeviseの利用方法をまじめにまとめておくことにしました。

Gemfileの編集

まずはdeviseを追加します。

gem 'devise'

インストールしましょう。

bundle install

Deviseのインストール

それでは関連ファイルをインストールします。下記コマンドを実行します。

rails g devise:install

自分のcloud9の環境ではエラーが発生したため、解消するのにapplication.rbの以下の設定を削除しました。

module Workspace
  class Application < Rails::Application
    # Settings in config/environments/* take precedence over those specified here.
    # Application configuration should go into files in config/initializers
    # -- all .rb files in that directory are automatically loaded.

    # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
    # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
    # config.time_zone = 'Central Time (US & Canada)'

    # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
    # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
    # config.i18n.default_locale = :de

    # Do not swallow errors in after_commit/after_rollback callbacks.
    config.active_record.raise_in_transactional_callbacks = true
  end
end

上記のconfig.active_record.raise_in_transactional_callbacks = trueをコメントアウトします。

Deviseの設定

上記のインストール完了時点で英語のメッセージが表示されます。順番に対応していきます。

ActionMailerの設定

ActionMailerのデフォルトURLを変更してね。と言われているので変更します。 今回はGmailを利用するためconfig/environments/development.rbに以下のように追記しました。

Rails.application.configure do
  
(省略)
  
  # mailer setting
  config.action_mailer.default_url_options = {:protocol => 'https', :host => '[プロジェクト名].c9users.io' }
  
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.smtp_settings = {
    :enable_starttls_auto => true,
    :address => 'smtp.gmail.com',
    :port => '587',
    :domain => 'smtp.gmail.com',
    :authentication => 'plain',
    :user_name => '[メールアドレス]',
    :password => '[パスワード]'
  }
end

Cloud9を利用しているのでURLも変更しています。

ログイン後のページの作成

次にログイン完了後のページを作成しておきます。 今回はportalコントローラを作ってみました。

rails g controller portal index

ログイン後のページは認証後でないとアクセスできないようにするため コントローラに以下を追記します。

before_action :authenticate_user!

これによりログインしていない状態でアクセスするとログインページに遷移します。

flash messageの設定

ログイン成功/失敗時のメッセージ表示用にタグを追加します。 今回はapp/views/layouts/application.html.erbに以下のように記述しました。 BootstrapのCSSも追加しています。クローズボタン付きのアラート表示になります。

<% if notice %>
  <p class="alert alert-success alert-dismissible">
    <button type="button" class="close" data-dismiss="alert">
      <span aria-hidden="true">&times;</span>
      <span class="sr-only">close</span>
    </button>
    <%= notice %>
  </p>
<% end %>
<% if alert %>
  <p class="alert alert-danger alert-dismissible">
    <button type="button" class="close" data-dismiss="alert">
      <span aria-hidden="true">&times;</span>
      <span class="sr-only">close</span>
    </button>
    <%= alert %>
  </p>
<% end %>

Viewの生成

最後にDeviseのViewを生成して、カスタマイズ可能な状態にします。

rails g devise:views

モデルの作成

modelを作成します。今回は特にカスタマイズせずUserモデルを作成します。

rails g devise User
rake db:migrate

利用するモジュールを変えたい場合はマイグレーションする前に、マイグレーション用のファイルで コメントアウトされている各モジュール用の記述を変更してください。同時にmodelの変更もお忘れなく。今回は詳しく書きません。

ちなみに公式ドキュメントには以下のようにモジュールが説明されています。

  • Database Authenticatable: hashes and stores a password in the database to validate the authenticity of a user while signing in. The authentication can be done both through
    POST requests or HTTP Basic Authentication.

  • Omniauthable: adds OmniAuth (https://github.com/omniauth/omniauth) support.

  • Confirmable: sends emails with confirmation instructions and verifies whether an account is already confirmed during sign in.

  • Recoverable: resets the user password and sends reset instructions.

  • Registerable: handles signing up users through a registration process, also allowing them to edit and destroy their account.

  • Rememberable: manages generating and clearing a token for remembering the user from a saved cookie.

  • Trackable: tracks sign in count, timestamps and IP address.

  • Timeoutable: expires sessions that have not been active in a specified period of time.

  • Validatable: provides validations of email and password. It's optional and can be customized, so you're able to define your own validations.

  • Lockable: locks an account after a specified number of failed sign-in attempts. Can unlock via email or after a specified time period.

あー英語orz
なんとなく理解しましょう笑

Viewの編集

それでは次にログイン状態に応じたリンクの表示を定義します。 app/views/layouts/application.rbに以下を追加します。

  <nav class="navbar navbar-default">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#gnavi">
        <span class="sr-only">メニュー</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <% if user_signed_in? %>
        <a href="/portal" class="navbar-brand">Logo</a>
      <% else %>
        <a href="/" class="navbar-brand">Logo</a>
      <% end %>
    </div>
   
    <div id="gnavi" class="collapse navbar-collapse">
      <ul class="nav navbar-nav navbar-right">
      <% if user_signed_in? %>
        <li><%= link_to current_user.name, edit_user_registration_path, :class => 'navbar-link' %></li>
        <li></li>[<%= link_to 'ログアウト', destroy_user_session_path, method: :delete  %>]</li>
      <% end %>
      </ul>
    </div>
  </nav>

実際に必要なのは一部だけですが、ロゴとメニューを出してログイン済みであれば編集画面へ遷移する名前のリンクとログアウトを表示するようにしています。

ログインページの用意

ではログイン用のリンクを置くページを作ります。Welcomeコントローラを作成します。

rails g controller welcome index

app/views/welcome/index.html.erbにリンクを追加します。

<center>
  <div style="padding-top:50px">
    <p><%= link_to 'ログイン', new_user_session_path %></p>
  </div>
</center>

ログインページではログイン後とはちがうレイアウトを適用したいのでコントローラを編集します。 app/controllers/welcome_controller.rbを以下のように編集します。

class WelcomeController < ApplicationController
  layout "welcome"
  
  def index
  end
end

layoutにwelcomeを指定したのでapp/views/layouts/welcome.html.erbを作成します。

<!DOCTYPE html>
<html>
<head>
  <title>Lorica Task</title>
  <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
  <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
  <meta name="viewport" content="width=device-width,initial-scale=1.0" />
  <%= csrf_meta_tags %>
</head>
<body>
<% if notice %>
  <p class="alert alert-success alert-dismissible">
    <button type="button" class="close" data-dismiss="alert">
      <span aria-hidden="true">&times;</span>
      <span class="sr-only">close</span>
    </button>
    <%= notice %>
  </p>
<% end %>
<% if alert %>
  <p class="alert alert-danger alert-dismissible">
    <button type="button" class="close" data-dismiss="alert">
      <span aria-hidden="true">&times;</span>
      <span class="sr-only">close</span>
    </button>
    <%= alert %>
  </p>
<% end %>
<div class="container">
<%= yield %>
</div>
</body>
</html>

config/routes.rbを修正してrootに指定しておきましょう。

Rails.application.routes.draw do
  root 'welcome#index'

 (省略)
end

動作確認

ここまでで一通りは完了です。deviseではユーザの登録・認証を簡単に実装することができます。 あとはサーバを動かして動作を確認してみてください。

その他

コントローラのカスタマイズを行いたい場合は以下のコマンドでコントローラを作成できます。今回はUserモデルを利用しているので「users」を指定しています。

rails g devise:controllers users

生成したコントローラを利用するためにはroute.rbの設定が必要です。

devise_for :users, :controllers => {
 :sessions => 'users/sessions'
}

上記の例ではログイン時のコントローラを変更しています。

さいごに

参考にしたのは以下のサイトです。それにしてもRailsは便利です。さっさとアプリを作って使って作ってを繰り返すには最適ですね。

github.com

[*Rails*] deviseの使い方(rails5版) - Qiita

事業計画で大切なことって何?

世の中には事業計画書の書き方についての本・セミナー・ネット記事などたーくさん情報が出ています。 で、結局何が大切なんだろう?と調べて見た結果、、

  1. なぜその事業をやるのですか?
  2. 誰の何を解決できるのですか?
  3. 何をやるのですか?
  4. あなたは誰で何ができるのですか?
  5. 競合は誰であなたの事業は何がすごいんですか?
  6. その事業はどうやって大きくなるのですか?
  7. 誰からお金をもらって誰に払うのですか?
  8. お金の調達はいつ何のためにやるのですか?
  9. 3年後の収支はどうなるのですか?
  10. どんな体制でやるのですか?
  11. 事業の課題とリスクは何ですか?

多いですね笑
いちおうこれに答えられると事業計画としては成り立っています。事業計画書は見た方が「おーおもしろい」となってくれると仲間になったり、出資してくれたりします。人を集めてプレゼンでお話出来る場合もありますが、大抵は独り歩きするものと思った方が良いです。なので、それぞれ簡潔に分かりやすいキーメッセージが入っていると伝わりやすいのです。

最近は事業計画書や企画書などがネット上で公開されていたりもするので参考にしてみるのも良いかと。
ただしプレゼンを前提にしているものも多いのでご注意を。

Amazonさんで検索してみましたがどんどん出版されているんですね… きっと同じこといっている…はずです!

amzn.to

Cloud9上でScala+Playframeworkの環境を作る

はじめに

Cloud9はやっぱりすごい。今回はScala+Playframeworkの環境を作ってみます。
Railsもいいけど本格的に複数人で開発していくにはScalaが良さそう。な気がしたり。
元々Javaエンジニアなのでなんかいいかな?と思ったり。ということでやってみました。

Activatorを使えばとても楽ちんですね。

Cloud9でWorkspaceを作る

Blankプロジェクトで作成します。 f:id:yonemaru:20160914010932p:plain

JDKのインストール

今回はJava8を使いたいのでリポジトリを追加してごにょごにょと。

sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get -y install openjdk-8-jdk
sudo update-alternatives --config java

Cloud9の場合は最初にJREが入っているので起動バージョンを1.8に変更します。

Activatorのインストール

公式ページからmini-packageのダウンロードリンクをコピーしておきます。
バージョンは適宜読み替えてください。展開してパスを通しておきます。

cd ~
wget https://downloads.typesafe.com/typesafe-activator/1.3.10/typesafe-activator-1.3.10-minimal.zip
unzip typesafe-activator-1.3.10-minimal.zip 
mv activator-1.3.10-minimal/ activator
export PATH=~/activator/bin:$PATH
cd workspace

~/.bashrcに「export PATH=~/activator/bin:$PATH」を追加しておくほうが良いですね。

Play+Scalaアプリケーションの作成

「appl」は適当な名前を入力してください。以下のコマンドを実行します。

activator new appl play-scala
cd appl

起動時の設定

例によってCloud9なのでPort番号を指定して起動しましょう。

activator run -Dhttp.address=$IP -Dhttp.port=$PORT

最初はかなり時間がかかりますがこれで起動できました!
毎回記事上は環境作って終わってますが、この次のステップも書く予定です。(いつになるかは不明!)