2016/12/26

PlayScalaによるWebアプリケーション - Scalaテンプレート

PlayScalaによるWebアプリケーション開発では、テンプレートを使う事が出来ます。
Webサイトでは、上の方のヘッダーが同じものがよくありますが、
Scalaではテンプレートを使う事により効率的にページがつくれます。

テンプレートでは、ヘッダーと全体の枠組みを書きます。

・テンプレートのファイル - main.scala.html
@(title: Stringl)(content: Html)
<!DOCTYPE html>
<html>
  <head>
    <title>@title</title>
  </head>
  <body>
  <div class="container">
  <nav class="navbar navbar-inverse navbar-fixed-top">
  <!-- この中にヘッダー部分のHTMLを書きます -->

  <nav class="">
  </nav>
@content
  </div>
  </body>
</html>

テンプレートを利用する側のページでは、下記のように呼び出して使います。
@main と書くことにより、main.scala.html がテンプレートファイルとして読み込まれます。

・一般のページのファイル - fDetail.scala.html
@title = {"ページタイトル"}
@main(title) {
 
  <h1>Home page</h1>
  <!-- ここにホームページの中身を書きます -->
}

のようになっています。

2016/12/14

PlayScala コレクション型 Array,List,Map

Scalaで良く使われるコレクション型について見ていきます。

(1)Array型
Array型は配列として扱う。メモリ上で連続して扱われています。
同じ種類の大量のデータを効率的に扱う事が出来ます。

・データを指定して宣言
scala> var a = Array(10,20,30,40,50)
a: Array[Int] = Array(10, 20, 30, 40, 50)

Array型の要素は、添え字を指定して取得する事も出来ます。
scala> a(0)
res1: Int = 10

・ループで回す
for文を使ってループする事も出来ます。
scala> for(i <- 0 to a.length - 1) { println(a(i)) }
10
20
30
40
50

(2)List型
List型は連結リストのような構造になっています。
Array型と比べてデータの追加、削除が早いというメリットがあります。

・定義
scala> var m = List("abc", "def", "hij", "klm")
m: List[String] = List(abc, def, hij, klm)

・値の追加
リストの末尾に追加されます。
scala> m = m :+ "xyz"
m: List[String] = List(abc, def, hij, klm, xyz)

・ループで回す
for文を使ってループする事も出来ます。
scala> for(l <- list) { println(l) }
abc
def
hij

(3)Map型
Map型はキーと値が対になっています。

・定義
scala> var map = Map("a" -> 10, "b" -> 20, "c" -> 30, "d" -> 40)
map: scala.collection.immutable.Map[String,Int] = Map(a -> 10, b -> 20, c -> 30, d -> 40)

・値の取得 
キーを指定して値を取得します。

scala> map.get("a")
res32: Option[Int] = Some(10)

・値の追加
以下のようにしてキーと値のセットを追加します。
通常のmapでは追加した順番が保証されないようです。

scala> map + ("e" -> 50)
res27: scala.collection.immutable.Map[String,Int] = Map(e -> 50, a -> 10, b -> 20, c -> 30, d -> 40)

・ループで回す
forループで回していきます。
scala> for (d <- map) println(d)
(e,50)
(a,10)
(b,20)
(c,30)
(d,40)

forループで、キーと値をセットで回す事も出来ます。
scala> for ((k, v) <- map) { println("key:%s, value:%d". format(k, v)) }
key:e, value:50
key:a, value:10
key:b, value:20
key:c, value:30
key:d, value:40

2016/11/17

感激の、営業電話お断り。

社員がお客様から、「ここ最近システム入れ替えの営業電話が多い」との情報を頂きました。

その時は「インプラスによくやっていただいていると言ってお断りしている」と言って下さったそうです。

なんと、なんと有り難いことでしょう!

涙が出るほど嬉しいです。

さらにお役立ち出来るよう、気合いが入ります!

本当に、ありがとうございます。

2016/09/25

PlayScalaでのWebアプリケーション Windowsでの環境構築

WindowsでPlayScalaを使うためには、JavaとPlayFrameWorkをセットアップします

1.Java SEダウンロード
こちらのサイトからJavaをダウロードします
http://www.oracle.com/technetwork/jp/java/javase/downloads/index.html

[JDK Download]を押すと、「Java SE Development Kit 8 Downloads」のダウンロードページに飛びます。

32ビット場合は[Windows x86]を、64ビットの場合は[Windows x64]を選択します。
Version 8 Update 101がダウンロードされます。
ダウンロードされたExeファイルを実行すると、JDKのインストールが始まります。


2.PlayFrameworkのダウンロード
こちらのサイトからPlayFrameworkをダウンロードします
https://www.playframework.com/

[Download]ボタンを押すと、ダウンロード出来るファイルの一覧が出てきます。
activatorになる前の最新バージョンである、Play 2.2.6をダウンロードします。
ダウンロード出来たら、C:\play に展開します。


3.パスの設定
[コントロールパネル]->[システム]->[システムの詳細設定]->[詳細設定]->[環境変数(N)]を開きます。

変数のPathに
C:\Program Files\Java\jdk1.8.0_101\bin と
C:\Program Files\Java\jdk1.8.0_101\lib と
C:\play\play-2.2.6 を追加します。


これでJavaとPlayFrameWorkのセットアップが完了しました。

2016/09/12

PlayScalaでのWebアプリケーション 作成(2)

Play Newコマンドでプロジェクトファイルを作成すると、以下のようなフォルダ・ファイルが出来ます。

+----build.sbt     ビルドの設定ファイル ビルド時に読み込む依存関係など
+----app
|       +----controllers  コントローラーが入ります
|       +----views     ビューのファイルが入ります
+----conf
|       +----- application.conf  アプリケーションの設定ファイル
|       +----- rotes       ルーティングファイル
+----project
|       +----- build.properties  sbtのバージョンを書くファイル
|       +----- plugins.sbt    読み込むプラグインの情報
+----public
|       +----images    画像ファイルが入ります
|       +----javascripts  JavaScriptが入ります
|       +----stylesheets  スタイルシートが入ります
+----test


こうして出来たプロジェクトに、コントローラーやモデル、ビューを作ってプロジェクトの開発を進めていくことになります。

2016/09/05

PlayScalaでのWebアプリケーション 作成

Play Scalaでアプリケーションを作る際は、Playコマンドを使います。

・作成
Play Javaで作成
$ play new testPrj1 play-java

Scala で作成
$ play new testPrj1 play-scala


・アプリケーションの実行
$ cd testPrj1
$ play run


・アプリケーションのクリーン
 プロジェクトのソースファイルを修正した時などに使います。
 フォルダに残っているゴミがクリアされます。
$ play clean


・アプリケーションのコンパイル
 コンパイルのみで実行しない時に使います。
$ play compile

2016/06/02

カイゼンの余地は宝の原石

6月に入りました。2016年度、半期の最終月です。

今年度はここまで、比較的順調に推移しています。しかし、景気回復基調にある今だからという危機感も忘れてはいけません。これから5年先10年先に繋がるような意識が必要です。

不景気やピンチになったときなど、助け合えるパートナーになっていることが肝要で、そのためには、謙虚に、誠実に仕事をして、高品質に徹底的こだわり、お客様に喜んで頂けるよう、丁寧な仕事を提供して行きましょう。

高品質は同時に高い生産性をもたらします。利益率を追求する我々は、「5Sの徹底」などで「不必要なムダ」を排除し、高品質な製品サービスの質をいかに上げるかを、常に考えていきます。

アンケートが訪問より効率が良いという記述もありましたが、それぞれ良い点があり、どちらも互いをカバーできるものではありません。訪問は、面談で同じ時間を共有することが大切で、移動時間は「必要なムダ」(ムダという表現は不適当ですが)です。
さらに言えば、1回の訪問の成果をいかに高めるかという意識や、移動時間をどう活かすかで、何倍ものリターンが得られるはずです。

逆に、社内でものを探す時間や、ファイルを探す時間、同じコードを2回書く時間などは不要なムダとして、排除していかなければなりません。

必要なムダ、不要なムダをしっかり区別して、どんどん磨き上げていきましょう。カイゼンの余地は身の回りにまだまだ沢山あり、その余地は利益へと変わっていく宝の原石です。

仕事環境を整備・改善し、良い仕事をしていきましょう。
今月も一歩一歩、前に進んでいきます。

(社内メッセージ)

2016/05/06

1つ1つ積み重てきた結果

2016年は、早くも5月になりました。

連休はゆっくり休んだり楽しんだりできましたか?
私は生後7ヶ月になった息子とゆっくり過ごせて、とても満喫&充実なゴールデンウィークでした。
この素晴らしい体験を、みんなにも早く実体験してほしい!とますます思うようになりました。大変な分、幸福感も非常に高く、間違いなく人として成長できます。

さて、社会人の我々が関係するイベントとして、5月1日のメーデーがあります。労働者の日として、労働者の権利を主張する日になっているようで、増税反対なども唱えながら、基本的には毎年「賃上げ要求」のデモ行進です。

労働組合評議会などの誰かが作った組織が主催したものに参加して、企業に対して賃金アップを大声で訴えながらぞろぞろ歩く。企業(主に大企業)に対するものですが、労働基準法と同じく、高度経済成長期の名残と思ってみているのですが、とても違和感があります。奴隷制度の反乱というか、自分たちの力で変えていこうという意思が見えません。

会社は社員が集まってでできていて、社員そのものの姿であり、自分たちの成長がイコール会社の成長で、その社員が幸せになるためにある。そもそも、会社は人の役に立つという存在意義を持ちます。

きっと、五月病も、このような明確な意味や使命をもたないまま働き始めた結果ではないかと思います。

我々は、目的意識や使命をしっかり持ち、皆で幸せになれる会社を目指しましょう。

6月で半期の成績が出ます。インプラスでは、売上は目標ではなく結果現象としてみていますが、目安としての目標は設定していますのでまずまずです。しかし、同じぐらいで良いと考えていると必ず力が抜けるので、少しパワーをかける意識を持つ必要はあります。

利益率に直結するのは「品質」です。ダブルチェック(テスト)も品質のために重要なことです。皆で知恵を出し合って決めてきたことはきっちりやって(絶対勝手にやめない!)、引き続き高品質戦略で攻めていきます。年度末には目標値を超えて、しっかり利益配分しましょう。

高い品質も利益率も、絶対に小手先でできるものはなく、1つ1つの積み重てきた結果です。

今月も成長の方向へ、一歩一歩前に進んでいきます。

2016/03/31

FlexSlider実装に必要なファイル

FlexSliderはとっても便利な jQuery プラグインです。あちこちのホームページでよく見る、画像をスライドさせたり、ぐるぐる回したりできるものです。
楽してカッコイイWebページが作れます。

しかし、いざ実装しようとすると、ちょっと迷うことがあります。
FlexSliderをダウンロードすると、沢山のファイルが展開されるのですね。

「これ、全部要るの?」

FlexSliderの使い方のWebページは沢山あるけど、どのファイルを実装対象のWebサイトにアップロードしたら良いか、ほとんど書いてないです。

答えは、「全部は必要ありません」

デモページなども入っていて、全部だと容量が4MB近くあり、全てをアップロードするのはムダです。

基本的なスライダー Basic Slider を使う場合しか実証していないので、他のスライダーやカルーセルを使う場合は足りないかもしれません。あしからずご了承くださいませ。

【必要なファイルは3つです】
  1. jquery.flexslider-min.js
  2. flexslider.css
  3. fonts フォルダ

専用のフォルダやに入れると美しいですが、初心者の方は、ルートディレクトリか、実装するページと同じフォルダに全部入れちゃえばOKです。

fontsフォルダをアップロードしてやらないと、「左右の矢印(進む・戻る)が表示されない」とググることになります。fontsフォルダ内のどのファイルが必要かまではチェックしていませんので、興味のある方は調べてみて下さい。ちょっと頑張れば左右矢印に独自の画像を指定できるので、そのときはfontsフォルダは要らないかもね。

【html内の記述 <header>部】

  1. <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
  2. <link rel="stylesheet" href="flexslider.css" type="text/css">
  3. <script src="jquery.flexslider-min.js"></script>
  4. <script type="text/javascript" charset="utf-8">
  5.   $(window).load(function() {
  6.     $('.flexslider').flexslider({
  7. animation: "fade",
  8. slideshowSpeed: 6000,
  9. animationSpeed: 800
  10. });
  11.   });
  12. </script>

フォルダに格納した人は、href や src にそのとおりに指定してください。
1行目は、googleさんが提供してくれている Query の読み込みです。
4行目以降は、実装例です。

7~9行はFlexSliderのオプションです。
これ以外にも様々な設定ができますので、詳しくはググって下さい。
この例では、表示をスライド(デフォ)ではなくフェードにする(スライダーじゃないじゃん、というツッコミはナシで)、表示間隔(ms)、アニメーションする時間(ms)を指定しています。オプションは、カンマでどんどん増やすことができます。

【html内の記述 <body>部】

  1. <div class="flexslider"><ul class="slides">
  2. <li><img src="OCCHIALI01.jpg" /></li>
  3. <li><img src="OCCHIALI02.jpg" /></li>
  4. <li><img src="OCCHIALI03.jpg" /></li>
  5. </ul>
  6. </div>

1行目はおやくそく。
2~3行目が表示したい画像ファイルの羅列です。何行でも書けるみたい?
リンク(aタグ)で括ると、それぞれの画像からリンクできます。詳しくはググって~。

css で div.flexslider の高さ(height)と、下マージン(margin-bottom) を指定をしてやると良いでしょう。(flexslider.css ファイルの .flexslider のところです)
高さが決まっていないと表示中にぺこんと動いてかっこ悪いのと、下マージンがデフォルトでは広すぎます。

楽にカッコイイWebページを!
GoodLuck!

inoue

2016/03/28

トラブルや課題は私たちのチャンス

「トラブルや課題」は私たちにとってのチャンスです。解決やお役立ちのための、新たなサービス商品をつくりだしたり、新しいアプローチをしてみるきっかけになります。

今回発覚したプロジェクト進捗の停滞にしても、お客様でのウィルス感染にしても、どうしたら、問題解決に役立てるかを考えることができます。
例えば、感染予防サービスセット商品として対策ソフトと教育指導をセットで提供したり(ウィルス感染は人的要因が非常に大きい)、自らプロジェクトの推進役を引き受けて、プロジェクトマネジメントをサービスとして提供することなどができるでしょう。

お客様はそのような提案を待っておられます。もちろん、対価は頂戴しますが、納得頂ける、内容や満足、感動を提供できることが重要になります。

なので、「トラブルや課題」という名のチャンス、切っ掛けはムダにせず、さっそく、朝礼やMTなどで考えていきましょう。

さて、3月もついに最終週です。月次と同時に、四半期の良い仕上げとなるように考え、動いていきましょう。

2016/03/25

一生のおつきあい 2016/03/25

我々インプラスは、縁あって出会えた1つ1つのお客様と、一生のおつきあいをしていきたいと考えています。

私たちが開発したシステムがお客様に長く使って頂ける、こんなに嬉しいことはありません。お客様を現代社会を共に生きるのパートナーと位置づけ、友人だったらどうするかを意識しましょう。もちろん、自社の継続はお客様にとっても最重要ですので仕事に対する正当な利益は頂戴します。
大海を進むインプラス号の羅針盤である経営理念の通り、お客様の存在価値と我々の存在価値をを高めること、すなわち、お客様の会社が成長し良くなることと、我々の会社が成長し良くなることをめざし続け、一生のおつきあいをするにはどうするのかを考えて進んでいきましょう。

3月もあと1週間、同時に4半期の終わりでもあります。今月をふり返り、また、1~3月をふり返り、できた事、良かったこと、課題を再認識して「今からどう動くのか」を考えましょう。

2016/03/08

計画を立てる切っ掛けに 2016/3/8

3月に入り、世間では新年度の4月に向けた動きになっています。それに伴ったオファーも出てきて少し慌ただしくなっているかと思います。この時期に、お客様に対して、「新年度のシステム改善や増強などのIT投資はどのようにお考えか」を伺えると、我々の計画の見通しになる上に、お客様の方でも計画を立てる切っ掛けにして頂けることもあると思います。

また、連絡をしていなかったお客様とコンタクトが取れているようで何よりです。最低でも年に1度、いや、半年に1度は何らかのやりとり、コミュニケーションを取れるようにしましょう。それ以下になったら、お客様に、客と思っていないなどと思われてしまいます。我々を支えて下さっているお客様に対する姿勢が問われます。

各銀行さんから、そろそろ決算書が出来上がった頃でしょうから見せて下さいと連絡が入っています。今回も、優秀な成績表を見て貰えると思うと楽しみです。融資や借り換えなどのアプローチもあると思われます。PRO5の開発での先行投資もあるため、自己資本比率をにらみながらバランス良く金融機関を利用します。

第一四半期である1~3月は、ほんとうにあっという間に過ぎていきます。
お役立ちと成長は常に意識しながら、優先順位や生産性を考え、1つ1つ確実に前に進めていきましょう。

2016/02/02

現状維持はマイナス成長 2016/2/2

あたらしい事を導入する際、その時間や労力が全て追加されるようでは効果も半減してしまいます。すでに実行していた取り組みも、必要性があったから継続している場合と、惰性で継続してしまっている場合があります。もし後者なら「思考停止」になっている証拠です。本当に効果的かどうか、さらなる改善はできないか、効率が落ちない工夫…、常に考えていきましょう。

「責任範囲」が問題になることが時々あります。インプラスは「お客様に役立つ」ことを存在価値の1つとしています。我々は、できる範囲で精一杯役立つよう意識して仕事をしています。
しかし、お客様は1社ではなく、時間や人などの「資源」は限られていますから無尽蔵に対応することはできません。責任範囲と見合った対価を決め、その範囲内でできる限り喜んで頂くよう工夫しているのです。沢山サービスを必要とするなら、沢山お金が必要です。出張サービスはもちろん有償ですし、、緊急対応を求められるなら保守料を高額にする必要が出てきます。即対応を求めるならリモート対応の仕組みを必須としたりなども必要でしょう。

「他の新しい方法を見つけることをサボっている…。」これはエンジニアとしては致命的問題です。どんなことでも常に改善点を探す探求心、チャレンジ精神、こだわりを無くして、「自分は技術者です」とはとても言えません。
無駄な動きを惰性で続けているのに、自分で気付くことが出来ない、思考停止・麻痺状態。日常の業務や活動、生活においても、そのような行動を取っているのではないでしょうか。
子供用プールに水を入れるのに、水道から小さなコップで水を入れ続けている。その上「忙しい忙しい」と周りに言い続け、なぜか焦っている…。そんな状態です。
「さらに良くならないだろうか…」と、常に考えていれば、バケツやホースなどの効率が上がる道具を見つけたり、「バケツを作る」「樋をつくる」という思考も浮かんでくるはずです。
惰性や現状維持は、維持では無く「マイナス成長」。改善・成長の機会を失っているからです。インプラスの大切なキーワードの1つ「常に考える」は、「常に改善を考える」という意味です。
気づけて良かったと思って、今後は意識し続けよう。

1月が終わりました。計画準備ができあがり、あとの11ヶ月、前を向いて進むのみ。
方向は間違っていないか、さらに良くならないかを考えながら、年末ゴールに向けて一歩一歩、皆で進んで行きます。

2016/01/21

タイトスケジュール 2016/1/21

不具合が少ないという感想がお客様から出るのは素晴らしいことです。以前が多かったので…というのもありますが、努力の成果であり、確実に品質アップしているという証拠です。最初から不具合が少なく導入できたお客様では、このようなリアクションは起こりにくいのですが、いずれどこかでお客様が誰かと業務システムの話をしたときに、自社の不具合の少なさを知ることになります。ものづくりをする会社として、あらゆる角度から見て高品質戦略は絶対的に正しい道です。その品質をお褒め頂くのは至上の喜びですね。

人に教えるというのは、自分に対する最高の教育であるといわれています。伝えるスキル、聴くスキル、また、その人の特性や性格や強みにあわせて活かし、妥協できないところをしっかりと伝えるなど、多岐にわたる気遣いを要します。今回はさらに、体調を気遣う必要があります。しかし、気の使いすぎでは仕事にならないなど、驚異的なバランス感覚が必要ですので、3人で相談し知恵を出し合いながら、T君とも沢山話して意思疎通を深めてください。チームインプラスの仲間として、共に楽しく働き、成長し、会社に貢献してもらえる環境を作れるかです。

タイトスケジュールは、気の焦り、割り込み、優先順位の迷い、トラブルなど、自分を乱すイベントが発生します。「今何をすべきか」を定期でふり返り、全体を眺め、細部に集中するという、視点の切り替えとリセットが必要です。私も、マルチタスクで仕事を進めていると、脇道にそれ、すぐ戻れたら良いのですがどんどん進んでしまうことも多々あります。自制するためのツールとして、アクロノートのタスクリストを見えるところにおいて、脇道への進行を停止することができています。タイトスケジュールの道を進めていくのは、自制がキーワードかもしれませんね。

1月はあっというまに過ぎていきます。成果、足跡を、しっかりと残していきましょう。
しっかり考えられた計画も成果の一つです。
今年も、世の中に役立つチームとして、一歩一歩前進あるのみです。

2016/01/15

俯瞰視点で客観視 2016/1/15

新年度から、いそがしい話で本当に有り難いですね。
仕事(ToDo)の書き出し、優先順位、PDCAを意識しながらしっかりと計画&実践し、時には俯瞰視点で客観視して全体的なチェックをして方向の確認をしていきましょう。焦らず、1つ1つ丁寧に。

今年も、関わる全ての人が幸せになれる良い会社を目指して、前に前に、進んでいきます。