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

技術関連の覚書

案件でやったり自宅で試したことの覚書、自宅Redmineから移行

勉強会まとめ

社内プレゼンがあってその資料作りやらなんやらでずっとブログ放置状態でしたが

それを含めて、その間に行ってきた勉強会とかの話をまとめておきたいと思います。

【5/17】第1回 Alteryx User Group in 東京 - connpass

BIツールの勉強会でした。

BIツールとはビッグデータを扱った集計や地図データとの連携などこれらの出力を簡単にするためのツールです。

ログ分析はシステムの障害時に障害の原因究明やボトルネックとなる箇所を特定して改修するといった役割でした。

その後、アクセスログから購買動向などを分析するようになり、最近では大量のデータから行動分析なども行うようになりました。

Googleでもこの人にどんな広告を見せると購買につながるかを分析するような仕組みもあります。

大量の検索パターンからその人の興味を分析することもから最適な広告を表示するような仕組みであることは想像できます。

元になるデータと言うのをうまく加工しやすいものにしようとした場合、定型文の選択でのインプットになってしまいます そうした定型文を選択させる方式ではそこに無い選択肢は選べないため適切なデータが得られないといったデメリットがあり、 現在では自由に入力したものから加工してデータとして使える形にするといった技術が必要になっています。

どんなアウトプットにするかということは先に決めずに、とにかくデータを集めて必要なものを取り出して加工するという時代になってきたんですね。

久しぶりに

書いてみようと思ったけど、今日は飲み会でこんな時間になってしまった。

社内プレゼンのためしばらくそっちに専念してたのですが、元ネタがこのブログにできたので助かった。

前にも自宅PCのメモから拾ってきてたけどブログだと公開する分他人にわかりやすく書くことも意識するから参考にしやすい。

明日からまた再開。

人の成長について考えてみた

人というか生物の成長と言ってもいいかもしれないけど、成長の仕方というのはある程度パターンもあるのではと思った。

一応、技術関連のと言うタイトルなので、使ったものはjupyter使ってpythonでコーディングしています。

図式化することために

  1. まずは始めてみる。 その段階では何も知らない、何もできない所から何から始めればいいかしらべたり覚えたりするためなかなか成長が進まない。
  2. わかってきて急成長する
  3. ある程度たどり着いて後は緩やかに(最新情報への対応くらいの成長)なっていく。

図にするとシグモイド的な曲線かなと思い描いてみた。

f:id:boctok-ctpoba:20170504112713p:plain

これは理想的な成長で、人間は忘れ模するしサボリもする。

そのため、そこに揺らぎが出てくる。

その揺らぎを正弦波を使って補正してみました。

その揺らぎはその中で振動するけれどもやはり全体で見れば成長していくと考えるとこんな感じ….

f:id:boctok-ctpoba:20170504112403p:plain

ちょっと揺れすぎかと思って微調整。

f:id:boctok-ctpoba:20170504113937p:plain

スタート地点が0より大きいし、下がりすぎな点も気になる。

f:id:boctok-ctpoba:20170502233806p:plain

元々シグモイド曲線は無限小で0、無限大で1になる曲線 無限小から無限大まで描けば0スタートで1(極めたといえる所)にたどり着けるかなと言う感じになる。

人間って、生まれたときから0かというと、呼吸もすれば声を出して泣くことから始まっている。 そう言う点ではまったくの0ではない。

行き着いたかなと思ってもそこから先も成長する要素はあるので究極にたどり着くことはないと見るか 究極にたどり着くには無限の時間(つまり一生)成長を続ける事ができると見るか。

そういうことを考えても、1つの事をずっとやっているわけではないので、これをいくつも重ね合わせていくことになる。 3Dグラフか

matplotlibで3Dグラフを描画する - white wheelsのメモ

これ以上続けるととんでもない彷徨に生きそうなのでこのくらいにしておきます。 pythonでの図形描画に興味がある方はこっちの方を参照してみてください。

と、こんなことを考えて行っても何か考えているうちに思わぬ方向に進んでいく。

きちんと方向性を決めて、時代の変化も気にしつつ補正しながら進んでいくことですね。

DevOpsとElasticsearch勉強会の振り返り

2日連チャンの勉強会でしたが、この2つの共通点はユーザの視点でのIT活用という、ITが既に技術者だけのものではないということを感じさせる勉強会でした。

今後の展望について思うこと

従来のビジネスモデルではシステム開発と言うのは、要件が発生してから受託して仕様を顧客と詰めて(要件定義、設計、レビュー)製造(コーディング、環境作り、テスト)、受入(顧客テスト、納品)が終わった後に運用保守(トラブル対応、システム改修、ログ分析)が技術者の仕事になってました。

運用保守はシステムが動いている間続くためこちらの方を収入源としていたところが多いので、DevOpsのように開発だけやって運用保守を顧客に渡してしまう事を嫌う企業も少なくないです。

ただ、市場のニーズの変化はどんどん速くなっているのでログ分析などを外に頼んでそれをレポートにまとめてもらい(ログを収集した結果をExcelに落としてグラフ化したものが多い)それを持っていって上司に報告すると言うのは時間のロスと考えられてしまうのでしょう。

ベンダー企業のレポートも意図したものと一致しているとも限らないため、何度か再提出もよくある話です。

それならば、使いやすいツールがあればあとは自前で分析した方が速いとなればそちらを使うようになります。

運用保守にこだわる理由

開発と言うのは、実際に出来上がるまでわからないリスクの多いフェーズです。 赤字になる事も多々あり、この時点の赤字を運用保守で補うということが今までのやり方でしたし、今もそれで続けているところは多いです。

システムも一度動き始めれば5年、10年、中には40年(大型のシステムはそのくらい動いています)と使うので長期に渡り安定した収入があります。

トラブルがあれば契約によりますが、その対応で収入になる事もあります。

また、この点が最大の問題点でもあるのですが、10年動くシステムであれば、10年間新しい技術を覚える必要がないと考えるところもあります。 10年前がどのような時代かというと、

  • iPhoneが登場(今年が10周年)

  • JDKのバージョンが6(2006年リリース)

  • Git(初版リリース2005年)よりもSubversionが多かった、MS VisualSourceSafe(2012年サポート終了)もまだサポート内のため使われていた

  • Redmine初版が出たばかり(2006年)

  • クラウドコンピューティングという言葉が登場(2006年)

  • AWSでEC2サービスが開始されたばかり(2006年)

この時代で止まってしまうのもちょっと恐ろしい話です。

時代の変化

私の知り合いで、10年以上大規模案件に携わってきて抜けてきた方がいました。

20年以上前に作られたCOBOLのシステムのようですが、今COBOLでの新規案件は激減してCOBOLからの移行が主なプロジェクトになっているため、汎用機を使うような大型案件でもCOBOLJavaを知ってる人に対する需要が増えてCOBOLだけではなかなか仕事につけないと言っていました。 10年前でもCOBOLはそろそろ無くなるのではと言われてた一方で、まだまだ使われると言う意見もありましたが、当時はまだCOBOLは年寄り案件と言われるくらい古くからのシステム開発に携わってきたベテランエンジニアの案件で金額もよく、長期間の案件で定年までこれでやっていけるという思いで就業する人が多かったようです。*1

ちなみに、私はこの歳でCOBOL未経験者です。

ただ、COBOLが悪いとか、Javaがいいとか(Javaももう20年と言う古い言語になりつつありますけど)と言うわけでなく、需要に対していつでも応じられる体制は必要かと思います。

Javaだっていつ無くなるかわからないし、そもそもプログラミングと言うものが必要ない時代も来ないとも限りません。

しかし、どんな時代でも技術の最先端というものは技術者が作り、技術者が発展させて広めていくものなのでどんな時代になっても対応できる姿勢が大切だと感じました。

*1:5/5追記:こんな会社を見つけました。 COBOL会社概要 古いだけの言語でなく、特定業界でも需要があればオンリーワン企業としてやって行けそうです

第19回Elasaticsearch勉強会に行ってきました

第19回Elasticsearch勉強会­ #elasticsearchjp - Elasticsearch勉強会(Elastic Tokyo User Group) #elasticsearchjp (東京都) | Meetup

今回はカリフォルニアでElastic{ON}開催れたのでその紹介と、そこに行ってきたお二方のTLでした。

こちらでビデオも見られます

Elastic{ON} User Conference & Road Tour | Elastic

What is the Elastic{ON}?

Elastic{ON} Sanfranciscoでやったカンファレンス

スピーカーはオーガナイザでもあるJun Otaniさん、今日は喉を痛めながら1時間に渡る長い講演となりました。 お疲れ様です。

大まかに言うとこんなことを紹介 * 写真をいくつか紹介 * 2100人くらい来た * 普段は暖かいけど今回は曇ってて肌寒かった

  • IBM、indexの中身を暗号化する製品を作ってる

  • ASK ME ANYTHING ここにElasticsearch社員がいていろんな質問に答えてくれる

  • Elasticsearchの年表 Kibana、Elasticsearch、Logstash どこらへんでどのユーザグループが立ち上がったか どのバージョンから触り始めたかをシールで貼ってもらって可視化

  • アーケードゲームがおいてあって遊べるコーナーも

  • ご飯が美味しかった

  • Cause Awards ケースを紹介 犯罪に立ち向かうなど

e-cap keynote

  • ビデオ ようつべにある? keynoteの会場 後ろの画面にKibana

バレリーナが踊り続け、センサからデータを拾って手の動きや心拍をKIBANAで可視化

Community 85k members

100M Downloads 2016年

  • Since5.0 (今は5.3.1) 5からすべてのバージョンを揃える X-Pack,Logstash Elasticsearch kibana,beat

5から増えた機能

Numb3rs データ構造を小さくして効率を上げる 地図系の圧縮率が良くなって効率化 数字はポイント→レンジに Range型で保存、クエリも投げられる 数値が1つでなく、範囲で登録ということです

  • Elastic Tile Service 有償化されて認証がかかって地図が出なくなったためElasticからサービス提供

X-Pack ライセンスを取れば無償版もあるので、それから見ることができる

  • Heartbeart 死活監視 ElasticCloudを作るときに使っていた

  • Coming H1 2017 simple things should be simple

  • To tail a file

goで作られたツール WebServerをtailしてlogstashに投げる

Filebeat Modules もう出ているのでダウンロードして使える

  • デモ

Kibana Githubにあるでもログを読みこませる

filebeat.ymlに書いて filebeat実行

KIBANAで見れる ダッシュボードはテンプレートで提供 filebeat,Elasticsearch,KIBANAだけで動く

Elasticsearchに投げてパース

  • To Visualize

Time Series Visual Builder 5.4から

メーター、グラフ、最大最小の数値

上限下限、線グラフを設定 棒グラフ+線グラフ → 線を入れてノート出力

  • To train a model 5.4から

機械学習

異常値検知

データの波形をもとに学習 波形の以上を検知する

もともと入ってるデータに対して学習 薄いブルーが学習モデル 濃いブルーが実データ

学習モデルの幅が実データに近づく 学習モデルから外れた時が異常

オンラインのビデオがある

  • X-Packの有償版

Tryalは30日無料

  • Machine Learning 5.4から

To build

ElasticCloud Enterprise

AWSで提供しているElasticCloudをいろんなところで使える

Elasticsearch SQL クエリーをSQLで書ける SQLをクエリに変換して投げる仕組み

方言のサポートはしない トランザクション管理はしない

フィールドごとに重み付け→MATCH関数で書ける

JDBC,ODBCの提供は先の話

最初はSELECTだけ対応という話も

  • Kibana Canbas

インフォグラフィックス KIBANAのデータをリアルタイムに表示する(開発中)

グラフと一緒に絵が書ける レポート

  • Closing keynote ここでビデオ、スライドが見れる

Wallmart POSデータ→バッチ これをリアルタイムに取れるようにして楽に見る仕組み

kafka→kibana

Ciscoコマースサイト 数十billion

大学の論文 似たようなもの、盗作を探す

Elasticsearch6からどうなる? もうじきメジャーバージョンの話が出てるんですね Lucene7 Sequence Number Rolling Updgrades Chross-major version search

Kibana: New since 5.0

日本語メニューが出るはず*1

Beats

ElasticsearchのモニタリングにBeatを使う メトリックも

logstash パーシエントキュー ファイルに落として突然落ちてもデータが欠落しない

Elasticstack

設定ファイルのビジュアライズ

pipelines Visual Builder

ステータスコードを絵文字

アプロクエスト Elastic{ON} 日本語でブログを書いてある

5.4は何時頃出る? もうすぐ

GW中にブログを見たほうがいい(ということは…) DISCUSで聞いてみると何時頃かは聞けるかも

Beta Available Now I GA Spring 2017

interesting sessions????

LT

  • Elastic{ON} オープンな世界へようこそ

Future Architect Inc

前原応光(まえはらまさみつ)さん

もうすぐ GW

お出かけする? 意外に少ない(会場で手の挙がった数です)

天気が気になる

過去30年間のデータから天気を予測する ….とかではない

Elasitc{ON}

本日は個人的な感想&意見

いろんなスポンサー企業(のロゴ)

あれ?気になりません?

競合じゃね?

壁なんてない

elastic prelert

みたいなことが起こる

会社だけでなくて

どこでもディスカッション

活発なディスカッションが送れる

パーティ 開演終焉の挨拶なんてなくてあるのはエンジニアの交流のみ そこでもディスカッション

会社、人の壁を作らない みんな一体感があって面白い

おまけ

tinder(出合い系っぽいもの) やってみた 男性とマッチング

と言うオチで締めてくれました

楽しいセッションでElastic{ON}の熱気が伝わってきました

Acroquest Technology

白井智子(さとこ)さん

3日でブログ35本UPした会社です

営業という観点から顧客ウケしそうな心機能ベスト3の紹介

3位

Pipeline Visualizer

クエリを書くのは大変だけどこれを使えば自分で簡単に設定できそう

データ投入してみたけどエラーが出たり時間がかかるが何が問題かわからなかった

2位

kibana Canvas

プレゼン中のデータが勝手に更新されるのは画期的 経営層へのレポートを見栄え良くできそう

分析的なグラフや表だけじゃなく、見栄えある表現ができる

1位

X-Pack Machine Learning

これまで毎日グラフを人の目dめ見て変な挙動がないかを自動化できそう

事前に機会をトレーニングしたり正解データを準備したりしないでログを投入するだけで使えるのは魅力的

アラーム通知と連動に期待

いつ出るの?

多くの新機能が発表になり周りの顧客の期待も高まってます。

営業視点でのElastic{ON}レポートでユーザ企業でのニーズもわかりやすく説明していただけました

その他

Elastic{ON}に行くと大谷さんが着てたTシャツがもらえる その場でプリントして絵柄が選べるそうです*2

その後は例によって懇親会です

*1:英語、ロシア語、フランス語、中国語

*2:残念ながら写真はありません

GitHubとクラスメソッドの勉強会〜GitHub x AWSの最新DevOps事情〜 に行ってきました

こちらの勉強会に行ってきました。

classmethod.connpass.com

GitHubですが、私自身は個人利用しかしたことがなくビジネスでの活用には興味ありました。GitHub社の開発方法や、クラスメソッド社が実践しているGitHubAWSとの連携、GitHubEnterpriseのデザインパターンの紹介など興味深い話ばかりでした。

今回のテーマはDevOpsということですが、DevOpsというのは、一言で言うと 従来の製造から保守までを業者に任せるのではなく、作ってもらったものを自前で管理して使うと言うものです。 パソコンが普及して20年以上たった今、パソコンを使う業務というのは当たり前のことになり、サーバもクラウドサービスを活用することで、安全で便利な運用をできるようになってきました。 今後はより高い価値を提供していける企業が残っていく時代になっていくんだなと思える勉強会でした。

セッションの内容は資料が上がっているので、ここではダイジェスト版で

How we ship GitHub

  • DevOpsとは DevOpsとは何なのか、なぜ今DevOpsなのかといった事に触れていました。 「DevOpsとは無駄なく遅滞なく価値を届ける」であると言ってした。

  • アジャイルとは、 Scope、Resource、Timeの三角形であるが、それが今は逆になっているのではないか 従来のScopeが決まっていて、Resouce、Timeを割り当てると言った手法からTime、ResourceがあってScopeを作っていくということですが、市場の変化に対応するとこうなるということでした。

  • GitHubの開発管理 前提:Masterは随時デプロイ可能な状態を保つということで

  • Masterからフィーチャーブランチを作成してコーディングをしていく
  • できるだけ短い期間でのコミット
  • コミットしたものを他の開発者たちと議論しながら開発を進め
  • 動作保証がされたものを最終的にMasterにマージ

コミット時に議論をするときに使ってるのがhubotでCIの役割もしているそうですが、お遊びコマンドもいくつか紹介していました。*1

DevOpsとAWS

  • DevOpsとは 「安全に、早くリリースする仕組み」 そのために、 属人性の排除 デリバリの自動化 コードで整理する

  • 開発の効率化

  • 安全なリリース デプロイの自動化、フローを自動化して安全を確保

  • CI/CD バグを早期発見する手法でこれも自動化する仕組み

  • AWSサービス CodeXXXを使う コード管理、ビルド、デプロイをAWSのサービスで行ってます。 それぞれCodeCommit、CodeBuild、CodeDeployを利用 注意すべきは「デプロイとプロビジョニングは混ぜるな」だそうです。

GitHub EnterpriseとAWSを組み合わせたCDP

  • Managed Serviceを使う 安定性 他サービス連携 運用負荷軽減

要件に合わない時に自分たちで作る

  • GHEの設定はいじらない データとユーザ以外は最新版で上書きされるため

  • GHEをインターネットに繋ぎたくない セキュリティ面、社内LDAPを使いたい場合 →プライベートネットワークパターン

  • GHEのバックアップをしたい 不要なインスタンスは管理したくない →ManagedBackupパターン

他、いろいろなデザインパターンを紹介していただきました。

DevOpsと言ってもお客さんに提供する形は様々でそれに合わせたサービスを提供していくこと 世の中の変化に対して素早く対応していくことが今後は必要ですね

*1:写真撮影可能だったのですが、撮影してこなかったのが残念

ラムダ式

Javaでは8から追加されたラムダ式ですが、こんな感じに書けば実装できる。

( 実装するメソッドの引数 ) -> { 処理 }

これのどこが良くなったかというと、インタフェースで作った抽象クラスを実装するという処理を1行で書けると言う点になる。

ちゃんと書くと関数型インタフェースの実装ということで、1つのメソッドを持ったインタフェースの実装

関数型インタフェース

@FunctionalInterface // このアノテーションが関数型インタフェース
public interface LambdaIF {
    public abstract int add(int x);
}

これの呼び出しが

LambdaIF y = x -> x + 1;

のように書ける。

一番省略した形になってますが、Java8が出てもう2年経ってるので正式な書き方はあちこちに載ってます(手抜きだなあ…)

もうすぐJava9も出ますね。