投稿

2月, 2017の投稿を表示しています

今週、Google Assistantがより多くの端末で利用できるようになるらしい

(この記事は下部英語記事の翻訳です) これまで、Google AssistantはGoogleの端末 Pixel Phoneでしか利用できなかった。 iPhoneで言うところのSiriであるこの機能はアプリとのインタラクトを可能にする。 LGはこの機能を搭載した最初のスマートフォンをリリースしたメーカーの一つだ。 GoogleはAndroid 6.0と7.0の端末に対してこの機能アップデートを今週中にリリースする。 GoogleのプロダクトリードであるGummi Hafsteinssonは、多くのAndroidユーザーがこのアップデートでGoogle Assistantが使えるようになると自身のブログで発表した。 しかし、他のバーチャルアシスタントもリリースされる。バルセロナで開催されたMobile World Congress tech showで、Lenovo MotoがアマゾンのAlexa assistantを搭載するMoto Z phoneを発表した。 MotoModとして知られるalternative back...(訳せなかった、、) アマゾンは今年の終わりごろにMoto Zを売る予定だ。 先月にロサンゼルスで開催されたCES tech showで、中国の巨大企業であるHuaweiが自身のスマートフォンに、ライバル製品であるAmazonのAlexa assistantを搭載することを発表した。 Google Assistantは、補足的な質問をすることにより会話を促進することが、他社製のバーチャルアシスタントとはわずかに異なる。 AIはGoogleにとって主要戦略であり、Google Assistantが多くのスマートフォンで利用できるようになることは自然な流れだと、IHS TehnologyのテクノロジーアナリストであるIan Foggは言う。 機械学習がGoogle Assistant AIを支えており、多くのユーザが使えば使うほどそのAIはよりスマートになるという。 最初は、USのEnglishスピーカーがこの機能を利用可能になる。オーストラリアとカナダとUKのユーザーはそのあとだ。 その他の言語についても続く予定だとグーグルは言っている。 参照サイト MWC 2017: Google bring

Android Wear 2.0 搭載のHuawei製スマートウォッチが発表

以前スマートウォッチを調べたときに2017年リリース予定のスマートウォッチとしてリストされていた製品の一つ。Huawei(ファーウェイ)製のスマートウォッチ。予定通りプレスリリースされたみたいなので情報を集めてみた。 ■ 以前の記事 Android Wear 2.0搭載のスマートウォッチ発売はいつ? 目次 発表モデル 発売日は? 値段は? スペックは? 買いか、見送りか 参考サイト 発表モデル 発表されたモデルは2つ。 Huawei Watch 2  Huawei Watch 2 Classic 外観は下部のリンク先を参照のこと。スタンダード(Classicでない)はベゼルが大きく、カラーバリエーションも多いとのこと。尚、近々ポルシェデザインも発表するらしい。 後述するが、先に発表されたLG Watch StyleとLG Watch Sportと機能性はよく似ているとのことだ。 発売日は? 日本での発売日は未定のようだ。以下の国では3月の初めに発売とのこと。 スペイン フランス ポルトガル イタリア ドイツ 中国 また、以下の国では4月の初めに発売とのこと 。 アメリカ イギリス ロシア オーストラリア 値段は? ともに329ユーロとのこと。 スペックは? OS: Android Wear 2.0 CPU: Qualcomm’s Snapdragon Wear 2100 processor(1.1Ghz) 4G対応 GPS搭載 NFC搭載(Android Pay) 1.2-inchディスプレイ、解像度:390x390 ゴリラガラス3 バッテリー容量:420mAh 光学心拍計 メモリ:4GB RAM: 768MB 防塵・防水(IP68) (swim-proofでないとの記載も、、、) Huawei Waatch 2だけ以下機能を持つ Bluetooth Wi-Fi 売りはバッテリーの持ちで、最大25日間時間表示と歩数計測できるとのことだ。 買いか、見送りか 下部の参考サイトの3番目に他製品との比較表があるが、スペックも値段もLG Watchとほぼ同じ。とすれば、あとはデザイン性やブランドで決めるしかないかなと思う。そもそも腕時計

[ITコンサル]2つのマネジャータイプ

コンサルタントでいると、マネジャーに大きく2つのタイプ、営業タイプとPMタイプに分かれると感じる。当然、その中間的な人もいるがあまり多くないように思う。 コンサルティング業界に入りたいと思う人に向けてまとめてみる。 目次 そもそもコンサルティング業界におけるマネジャーとは コンサルタントとマネジャーの関係 営業タイプのマネジャー PMタイプのマネジャー 結論、コンサルタントによって良いマネジャー そもそもコンサルティング業界におけるマネジャーとは コンサルティング会社では大きく3つのランク(職位)がある。私は比較的大きな外資系コンサルティング会社の経験しかないので、国内だったり、領域特化のコンサルティング会社では異なるかもしれないが。 また、私自身が以下の分類でコンサルタントのランクなので、マネジャーや、パートナーランクについては正確ではないかも(情報が不足しているかも)しれない。 コンサルタント 一般企業で言うところの平社員や、チームリーダー、係長レベルのランクで、主な業務は、調査、資料作成だ。 案件によるものの、基本的にクライアント先に常駐、1案件に100%アサインされ、案件が終わるごとに別案件へと移っていく。 主に、調査や作成した成果物の品質、ユーティライゼーション(案件へのアサイン率。案件と案件の間に空白期間を作ってしまうと下がる)で評価される。 マネジャー 一般企業で言うところの課長、部長のランクで、主な業務は、プロジェクトマネジャー、営業(既存顧客の継続、新規顧客の開拓)で、何かしらの社内プロジェクトの責任者になっていることも多い。 基本的には複数案件(2、3件が多いように思う)を掛け持ち、プロジェクトマネジャーとして各現場を移動しながら、コンサルタントの資料レビュー、ミーティングのファシリテーション、提案機会を見つければ営業としては提案書の作成、プレゼン等を行う。 主に、ユーティライゼーションと営業(売上)で評価される。 パートナー 呼び方は、ディレクターやプリンシパル等、企業により少々異なる。 一般企業で言うところの部門長、役員のランクで、主な業務は、プロジェクトでは最終責任者、重要顧客や特定領域における顧客のリレーション維持・開拓、また、会社における何かしらの戦略の一部を担っている。 営業

[ITコンサル]要件定義の初期段階における2つのアプローチ

ITコンサルをやっていれば当然システムの要件定義を行うことが多々ある。ここでは要件定義の初期段階で実施する、システムで解決すべき課題の洗い出し方法を紹介する。尚、課題を洗い出した後に解決方法を検討することになるので、実際にはシステムで解決すべきではない課題も洗い出される。例えば、人・組織が原因の課題などもこの段階で見つかることも多い。 目次 課題解決型アプローチと目標達成型アプローチ 目標(To-Be)と現状(As-Is)と課題(Gap)の関係 2つのアプローチの違い ITコンサルタントとしての実際の動き この後実施すべきこと 課題解決型アプローチと目標達成型アプローチ 課題洗い出しには大きく課題解決型と目標達成型の2つのアプローチがある。課題解決型アプローチとは、既に判明している、または、調査等により判明する課題を収集する方法。実際に行うタスクは調査(システム性能に問題はないか、過去報告書で述べられている課題の整理・精査 等)やヒアリング(エンドユーザ、システム管理者、システムオーナ等へ課題認識を確認)となる。 一方、目標達成型アプローチとは目標を設定し、現状を調査したうえで、目標と現状の差から解決すべき課題を洗い出す方法。実際に行うタスクは、中期経営計画や中期IT計画などの経営方針をブレイクダウンして目標を設定する、又は、部門長、部長、課長などの管理職レベルにヒアリングを実施し、次期に達成すべきことを明らかにしていく。現状の調査は課題解決型アプローチと同じように調査・ヒアリングを行う。目標と現状の差を明らかにする(分析する)方法はケースバイケースで多様なためここでは省略する。 尚、実際には両方のアプローチを組み合わせたハイブリッドなアプローチをとるのが一般的であるように思う。 目標(To-Be)と現状(As-Is)と課題(Gap)の関係 そもそもの構造をとらえると2つのアプローチの違いが見えてくる。構造は算数レベルに簡単なことで、以下の通り。 課題(Gap)= 目標(To-Be)- 現状(As-Is) つまり、課題解決型アプローチとは課題を直接取得しに行く(そして、課題+現状で目標を設定する)方法で、目標達成型アプローチとは前述の通り目標と現状の差から課題を洗い出す方法である。 2つのアプローチの違い

foliumを用いた地図表示を即時行う

イメージ
foliumというモジュールで地図表示が簡単にできるが、一旦htmlファイルに出力してからブラウザ表示する必要があってやや使いづらかった(Jupyterを使えばよいみたいだが)のでtempfileとwebbrowserモジュールを使って即時ブラウザ表示するプログラムを作成してみた。 ソース import folium import tempfile import webbrowser class fmap (folium.Map): def __init__ ( self , **kw): super (). __init__ (**kw) self .listtf = list () def show ( self ): tf = tempfile.NamedTemporaryFile( suffix = '.html' , delete = False ) map_osm.save(tf) webbrowser.open(tf.name) self .listtf.append(tf) def __del__ ( self ): list ( map ( lambda tf: os.remove(tf.name) , self .listtf)) map_osm = fmap( location =[ 45.5236 , - 122.675 ]) map_osm.show() time.sleep( 2 ) 実行結果 補足説明 そもそもfoliumとは何かというのはこちらのページを見るのが早い。 http://python-visualization.github.io/folium/quickstart.html こちらにもサンプルコードがある。 https://github.com/python-visualization/folium/tree/master/examples 作成したfmapクラスのshow()を呼ぶとブラウザで表示される。2秒待ちを入れているのは、プログラム終了と同時にデストラクタが呼ばれて、表示される前に作成したhtmlファイルが削

[ITコンサル]非機能要件定義で参考になる資料

ITコンサルとして非機能要件定義することも多いので、その際に参照する資料をまとめておく。と言っても多くはないが。。 そもそも非機能要件の難しい点は、クライアントと話をしても答えがない点で、例えば、機能要件定義であれば、業務課題をヒアリングする等で必要機能を抽出できてそれとなく形になるのだが、非機能要件は違う。例えば、ストレージは冗長化した方がよいか、性能はどの程度必要か、などとクライアントに聞いたところで「?」というクライアントがほとんどだ。特に会話する相手がエンドユーザであればなおさら。 大企業では、非機能要件が標準化されており、業務や他の要件と矛盾がなければそのまま採用すればよいので楽だが、そのような基準となるものがない場合には、ある程度、コンサルからフレームワークと要件レベルの想定を持っていきヒアリングする必要がある。 その場合に参考になる資料が以下の資料。 非機能要求グレード 非機能要件定義で最も利用されている(と感じる)資料。この資料を基に社内の非機能要件を標準化している例も何度か見たことがある。 ■非機能要求の見える化と確認の手段を実現する「非機能要求グレード」の公開 http://www.ipa.go.jp/sec/softwareengineering/reports/20100416.html 文書をよく読むと記載があるが、実は網羅されていない事項がある点に(私の経験上は)注意が必要で、例えばユーザビリティが考慮されていない。制約については知っておいた方が良い。 「政府情報システムの整備及び管理に関する標準ガイドライン」・「実務手引書」 政府系組織にてシステム開発時に参照が必須の文書だが一般企業でも参考になる。 ■第3篇第5章 2.1)ウ 非機能要件の定義 http://www.soumu.go.jp/main_content/000352683.pdf この文書自体は非機能要件だけでなく、システム開発における全てのプロセスを網羅している。 検索すれば大量に見つかるが、この枠組みで多くの調達仕様書が作成されており、実績が多いという意味ではかなり信頼性が高いといえる。 ただ、一般企業ではあまり考慮しなくて良い項目(中立性等)も含むため、利用にあたっては内容の精査が必要。特に、シ

[ITコンサル]公開されているセキュリティ関連資料

ITコンサルとしてセキュリティ関連の案件もたまにあるので、よく参照する資料をまとめておく。 目次 政府機関等の情報セキュリティ対策のための統一基準群 『高度標的型攻撃』対策に向けたシステム設計ガイド クラウドに関するセキュリティ スマートフォン利用に関するセキュリティ その他のITコンサル関連記事 政府機関等の情報セキュリティ対策のための統一基準群 サイトのトップページURL(平成28年版 )はこれ http://www.nisc.go.jp/active/general/kijun28.html 上記サイト内に配置されている以下資料が幅広い内容が記載されており セキュリティ施策の網羅性を確認したい場合には参考になる ■政府機関の情報セキュリティ対策のための統一基準(平成28年度版) http://www.nisc.go.jp/active/general/pdf/kijyun28.pdf 統一基準に対する具体的な施策を確認したいしたい場合はこっち。 但しボリュームがあるので統一基準で確認したい事項を特定の上、 こちらを参照するのが効率的。 ■府省庁対策基準策定のためのガイドライン(平成28年度版) http://www.nisc.go.jp/active/general/pdf/guide28.pdf セキュリティに関する要件定義をしたいならばこちらが便利。 要件定義の方法がステップを追って説明されているので、この通り実施すれば要件が漏れないようになっている。また、上記の統一基準との整合表もあり。 ■情報システムに係る政府調達におけるセキュリティ要件策定マニュアル http://www.nisc.go.jp/active/general/sbd_sakutei.html 『高度標的型攻撃』対策に向けたシステム設計ガイド 統一基準は組織などの観点も入ってますが、これは(表現は正確ではないが)もっと技術的な対策について詳しい。私の理解では、企業を狙う攻撃は高度化しており、特定の標的に絞って標的にカスタマイズされた方法で攻撃してくるため、基本的に1つの手法で守るのでは不足で、攻撃者の攻撃プロセスの則って、多段的に防御する必要がある。とい

アマゾン製ディープラーニングライブラリのMXnetをWindowsにインストールする

ふとMXnetというアマゾンのディープラーニングのライブラリがあることを知った。とりあえずインストールしてみたメモ。AWS使えば一番楽かもしれないけどとりあえずはローカルで環境構築。 因みにMXnetはPythonやC++やRなどで実行できるようですが、これはPython環境の構築についての記事です。 公式サイトで手順を確認 公式サイトのインストール手順はこちら↓ ■Installing MXNet in Windows http://mxnet.io/get_started/windows_setup.html このページによると二通りのインストール方法があるとのこと。 プリビルドされたパッケージをインストール(簡単) 自分でビルド&インストール(面倒) 2番目の方が最新&CPU最適されたバイナリがインストールできるんだろうけども、手順にあるVisual Studioのインストールってのが面倒(インストールバイナリのファイルサイズが大きく時間がかかる)なのは何度か経験済みなので、とりあえずで動作を見るだけならプリビルドされたものでいいや。ということで簡単な1番目の方法でインストールすることに。 インストール方法 手順のざっくり訳はこんな感じか 最新のプリビルドパッケージを ココ からダウンロードする。 但し、GPU版とCPU版があるから気を付けて。詳細は ココ パッケージを解凍して適当なフォルダ名を付けて(例えば D:\MXnet) フォルダを開いて"setupenv.cmd"ってファイルをダブルクリックして インストールできたことをテストするためにSampleをC++で実行してみて レッツトライ インストール手順に記載のリンクに飛んでプリビルドパッケージをダウンロードする。 https://github.com/dmlc/mxnet/releases 私はCPU版なので(とりあえず動けばいいので) 20160531_win10_x64_cpu.7z をダウンロード。 2017/2/7時点で最新Verが0.93のところ、Windows用のプリビルド版はVer0.70しかないようだ。。。 7zはWindowsでは解凍できないので、必要に応じて この

Android Wear 2.0搭載のスマートウォッチ発売はいつ?

普段PCで作業することが多い私は、時間を確認するのに敢えて腕を見るのが面倒すぎるので、腕時計を普段はしないのですが、スマフォのように様々な機能が搭載されるスマートウォッチは興味があり、たまに製品を調べていたものの、電池の持ちや機能性がいまいちで購入を見送ってきた。 しかしながら、Android 2.0の登場で、ローカルでのアプリ実行、(以前からできたのかもしれないが)単独でもWi-Fi接続、GPS搭載等、機能性が向上してきていることや、電池の持ちも調べる限りで2日くらいは持つ(Apple watchは当初1日しか持たないという噂だった)製品が多くなってきたようなので、これはそろそろ検討しようと思いちょっと調べた。 (恐らく自分は、イノベーター理論で言うところのアーリーアダプター辺りに位置しているような気がする) 目次 Android 2.0搭載のスマートウォッチはいつ発売? TAG Heuer Connected 2 LG Watch Sport and LG Watch Style Huawei Watch 2 Swarovski Android Wear smartwatch Misfit Vapor Casio WSD-F20 Garmin Fenix 5 series Hublot smartwatch Tissot Smart-Touch Apple Watch Series 3 Guess Connect(2016) Sony Wena Android 2.0搭載のスマートウォッチはいつ発売? そもそもこの記事を書いている2017年2月5日はまだAndroid Wear 2.0搭載のスマートウォッチは発売になっていないようだ。。。下で紹介する記事を読んでいると、2月9日にAndroid Wear 2.0が発表になるそうな。同時にフラッグシップモデルが発表になるようで、製品発売はまだ先のようだ。 とはいえ、近く発売されることは確かなのだから、今後発売される製品について調べてみても、日本語情報は少なく、結局、以下の英語記事が比較的まとまっていた。2016年の情報やAndroid Wear以外も書かれているけど、スマートウォッチの全体的なトレンドもわかるし読んで、纏めてみた。 ■ Best sm

tkinterで忘れがちなこと色々 其の4

イメージ
いつもPyrhonプログラムを作るときに調べながら作るけどもすぐ忘れてしまう。なのでメモを残しておこうと。其の4。 目次 tkinter.Frameを継承してカスタマイズGUIパーツを定義 スクロールバー付きテキストボックス(tkinter.scrolledtext) OK/キャンセル付きメッセージボックス(tkinter.messagebox.askokcancel) カラー選択パレット(tkinter.colorchooser.askcolor) tkinter関連の記事一覧 tkinter.Frameを継承してカスタマイズGUIパーツを定義 import tkinter class KeyValueEntry (tkinter.Frame): def __init__ ( self , root , default_val= None , key_kw= dict () , val_kw= dict ()): super (). __init__ (root) self .key = tkinter.Label( self , key_kw) self .val = tkinter.Entry( self , val_kw) if default_val: self .val.insert( 0 , default_val) def pack ( self , **kw): kw.update({ "expand" : True , "fill" : tkinter.X}) super ().pack(kw) self .key.pack( side =tkinter.LEFT) self .val.pack( side =tkinter.LEFT , expand = True , fill =tkinter.X) def get ( self ): return self .val.get() if __name__ == '__main__' : root = tk

tkinterで忘れがちなこと色々 其の3

イメージ
いつもPyrhonプログラムを作るときに調べながら作るけどもすぐ忘れてしまう。なのでメモを残しておこうと。其の3。 目次 メニューを付ける メニューを階層化する 定義済みの便利機能を利用する tkinter関連の記事一覧 メニューを付ける import tkinter if __name__ == '__main__' : root = tkinter.Tk() menu = tkinter.Menu(root) root.configure( menu = menu) menu.add_command( label = "Quit" , command =root.quit) tkinter.mainloop() 実行結果は以下の通り。 実行終了のためのQuitを付けただけの一番シンプルな例。普通のボタンと同じように、クリックするとadd_commandで登録したメソッド(この場合root.quit)が呼ばれる。 メニューを階層化する import tkinter if __name__ == '__main__' : def dummy (string): print (string) root = tkinter.Tk() menu = tkinter.Menu(root) root.configure( menu =menu) menu1 = tkinter.Menu(menu) menu1.add_command( label = "11" , command = lambda x= 11 : dummy(x)) menu1.add_command( label = "12" , command = lambda x= 12 : dummy(x)) menu1.add_command( label = "13" , command = lambda x= 13 : dummy(x)) menu2 = tkinter.Menu(menu1) men

tkinterで忘れがちなこと色々 其の2

イメージ
いつもPyrhonプログラムを作るときに調べながら作るけどもすぐ忘れてしまう。なのでメモを残しておこうと。其の2。 目次 gridでGUIパーツを配置する例 tkinter.Entry入力値の取得方法2通り tkinter.Entry初期値の設定方法 tkinter関連の記事一覧 gridでGUIパーツを配置する例 import tkinter if __name__ == '__main__' : root = tkinter.Tk() l1 = tkinter.Label(root , text = '左上' ) l2 = tkinter.Label(root , text = '左下' ) l3 = tkinter.Label(root , text = '右上' ) l4 = tkinter.Label(root , text = '右下' ) l1.grid( row = 0 , column = 0 ) l2.grid( row = 1 , column = 0 ) l3.grid( row = 0 , column = 1 ) l4.grid( row = 1 , column = 1 ) tkinter.mainloop() 実行結果は以下の通り。 grid(マス目状)にGUIパーツを並べる例。packの代わりにgridを呼べばいい。その際row(行)、column(列)を指定する。 tkinter.Entry入力値の取得方法2通り import tkinter if __name__ == '__main__' : def func (): print (var.get()) print (e.get()) root = tkinter.Tk() var = tkinter.StringVar() e = tkinter.Entry(root , textvariable =var) b = tkinter.Button( text = &

tkinterで忘れがちなこと色々 其の1

イメージ
いつもPyrhonプログラムを作るときに調べながら作るけどもすぐ忘れてしまう。なのでメモを残しておこうと。 目次 基本的な入力ボックスと実行ボタンの例 ボタンを左右に並べる パーツを右に寄せる paddingで見た目を整える Windowサイズに合わせたパーツの伸び縮みを設定 tkinter関連の記事一覧 基本的な入力ボックスと実行ボタンの例 import tkinter if __name__ == '__main__' : def func (): print (e.get()) root = tkinter.Tk() e = tkinter.Entry(root) b = tkinter.Button(root , text = "Exec" , command =func) e.pack() b.pack() tkinter.mainloop() 実行結果は以下の通り。 入力ボックスと実行ボタンの最小限GUIの例。テストプログラムで入力値で処理を変えたい時に作る簡易GUIで、ボタンにfunc()を登録しておき、その中でEntryのインスタンスeからget()を読んで入力値を読み取っている。 ボタンを左右に並べる if __name__ == '__main__' : def func (): print (e.get()) root = tkinter.Tk() e = tkinter.Entry(root) e.pack() frame_down = tkinter.Frame(root) b1 = tkinter.Button(frame_down , text = "Exec" , command =func) b2 = tkinter.Button(frame_down , text = "Quit" , command =root.quit) b1.pack( side =tkinter.LEFT) b2.pack( side