難易度が高い技術とは?

難易度が高い技術ってなんですか?

って質問よく受けるんですが

 

動画配信? 非同期通信? 高負荷システム?

ディープラーニング? c#!? elixir!?

 

いやいや

システム移行(リニューアル)が一番難易度高い。

大規模システム

大規模システム移行 インテグレーション

それはなぜか?

 

下記のような多岐にわたるエンジニアリングを要求されるため。

固有の技術知識ではなく、採用しない技術との比較も含め広範囲に渡る。

 

ーーーーーーーーーーー移行時チェックリストーーーーーーーーーーー

・移行が必須ということはそれなりの負荷に耐えられる環境であること。

・過去のデータをサービス停止時間を最低に抑えて移行させる移行工程表を用意すること

・環境、インフラ構成が変わるとプログラミングが動作しなくなるなどの状況が起こる。新規システムへ対応させておくこと。

・現環境の情報、仕様などが残ってる事はすくないため、サーバーログイン出来たとしても何を確認するかpsから確認するとか、netstat、どんなところに通信してるかとかから少しずつ全容解明させていく必要があること。

・最適の技術へ移行させ運用開発陣がついてこれるシステムでないとならないこと。

・最適は最新ではなく安定性、将来性がある技術を選定していること

・他社システム系との接続がある場合、その連携が新しい環境でもスムーズに動くこと

・移行後、放置されやすい旧システムの適切な削除。セキュリティ対策。バックドア。乗っ取られるなど基準ルールから外れたために事故が起こるリスクがあるため適切に処置しておくこと

データベースの情報だけでなく、ログなどの保存方針など

・移行後のそのシステム利用者へ影響ある事項の通知。連絡が完了していること

・移行時ウォームアップ処理の適用がされていること

ウォームアップとはデータベースなどで行われる手法。DBはアクセスがされることでメモリにのることになる。通信が多いシステムの場合、切り替えした瞬間に一気に通信が開始され、メモリにはいり安定するまえにDBが破綻するケースがある。

2017年現在ではKVSなどキャッシュサーバーも多くなってきたため、キャッシュサーバーのウォームアップも考慮する必要がある

・移行失敗時の切り戻しの設計。ゲームなどだと、30分で負荷で動かなくなり戻す事になるなどの状況が起こる。その際、どこまでのユーザーデータを救うか。切り戻しにも失敗するケースもある。(移行に失敗して、そのまま終了したサービスすらある)適切に移行、切り戻しのテストが行われていること。(テストが必要無いレベルまで移行リスクを取り除くこと)

 

こういった事前の活動、当日の対応、事後対応を経て安定したサービスが持続されていくことになる。

2017年 zozotownがシステム移行するため、現リソースとは別に40名のエンジニア募集を実施した。40名で1年? 中々の大規模移行ですね。

https://www.st-komuten.jp/recruit/40engineers/

 

無事完了することを願ってます!

 

 

カテゴリー: MYSQL, Web/IT, インフラ、ミドルウェア, セキュリティ, データベース, プログラミング, 開発全般

乱立するクラウドサービスに対応するモバイルデバイスのあり方

クラウドサービスという大きな流れの中でiOS11という大幅アップデートをアップル社は発表した

ios11は2017年秋リリースに向けてベータ版として事前に公開された。

iOSやwatch OS、macOSのベータ版ダウンロードは下記からできる

 

iOS11の進もうとしている道

明らかにiPad(タブレット)機器をパソコン化させようと進めている。
しかし、大きな間違いを犯した可能性があると考える。

  1. パソコン化を進めたOSでスマートフォンデバイスのOSに採用する戦略

  2. マルチタスクや端末ローカルでのファイル操作機能という時代遅れの戦略

 

1.まずPC版に最適化されたOSをスマートフォンOSとして導入したことで失敗したWindowsフォンという素晴らしい事実があるにもかかわらず、その道を踏み込んだ。

現状のiOS11(beta2)の状況ではあるが、iPhone7+に入れて明らかにパフォーマンスは落ち、不安定な状況は増した。秋までにどこまで改善できるかだが、iPad向けの機能を多く搭載したOSを搭載することはMicrosoftがWindowsOSにこだわり、モバイルファーストでのOS開発が出来なかった状況と同じ構図になる可能性がある。

 

2.確かにローカルでのファイル操作は悪くはない。

しかし、これはAndroidが当初からやれていた技術。
マルチウィンドウもAndroidではすでにできている技術。(マルチタスクとは違うものではあるが)

マルチビューとローカルでのファイル保存という機能の目的は、メールに添付されたファイルをメモにドラッグする。ブラウザに表示されている画像をメールにドラッグして貼り付けるなど、

今の時代のコンピュータ上の作業は「参考情報」を開き、「自分の作成場所」にコピーするというシーンは確かに多い。

この問題の解決はできているが、今一番重要な解決すべきものはそこではない

 

多くのクラウドサービスを使う時代へ対応したデバイスであること

クラウドサービスは当然だがiCloudだけではない。Appleの独占領域ではない!
Evernote、Google Drive、Dropbox、GMAIL、写真、動画・・・・数え切れないクラウドサービスが展開されている時代

ユーザーにとって、どこの会社のクラウドサービスかは重要ではなく、どういう情報を見たいかというところにある。

 

例えば、「ベトナム旅行計画」で整理したいと思ったら、
写真は写真アプリ、旅行日記はエバーノート、日程表はスプレッドシート、空港チケット情報はメールデータといった、それぞれのアプリを起動し、情報にアクセスする。

1クリックが負担である時代にそれぞれのアプリから一度ホームに戻り、別のアプリを起動し、対象のデータを検索する。しかも、その情報にアクセスはできても情報をまとめたことにはならないのだ。

 

つまり、今後のモバイルデバイスに求められる一番重要なことは

多くのクラウドサービスの存在をみとめ、その情報にシームレスにアクセスできる状況をつくりあげること。

 

一つその意味ではAndroidは先にいっている。

デスクトップ(背景壁紙)領域をデベロッパーに開放し、複数のサービスの直接のファイルを指定したショートカットを置くことができる。Googleドライブにある「ベトナム日程表」というスプレッドシートへの直接起動ショートカットと、Dropboxの「ベトナム旅行スクラップ画像集」というフォルダへの直接起動ショートカットといった形で。

デスクトップ(背景壁紙)領域にある程度情報をまとめることができたのはウィジェットとしてデベロッパーにこの部分を開放したことにより実現できた。(操作方法が定まっていないが、Dropboxの指定したフォルダへのショートカットなどはウィジェットから作成ができる)

 

※iOSはブラウザリンクをホーム画面に置くことはできるがこれはあくまでブラウザが起動するだけ。
直接アプリ内のデータへのアクセスにはならない。

 

多くの乱立したクラウドサービスをモバイルという一番ユーザーに近いところにあるデバイスでは適切に情報を整理出来る状態が求められる

まだクラウド乱立の争いは終わらない。
だからこそそのクラウドに分散されたデータを統合する環境をosレイヤーに期待したかった。

その点では iOS11の設計思想に期待をしていた分、非常に残念なものとなってしまった。

それどころか、PC化戦略をすすめるOSでiPhoneを提供する戦略によってアップル自体がなくなってしまわないか、それほど大きな問題だと感じている。

 

カテゴリー: Android, iPad, iPhone, iPhone, iPhone/iPadアプリ, IT進化論, TAIMEI, クラウドサービス, モバイル タグ: , , , , , ,

[dots講演議事:前半]エンジニア出身!現CEO兼CTO小俣泰明が語る、20代エンジニアが今身に着けておくべきスキル勉強会!!

2017年3月の勉強会。

たくさんの方に来ていただき好評だったため、公開します!

 

終身雇用がなくなった今、どこの会社でも必要とされるスキルを身につけることが、生涯安定した人生を送れる秘訣。キャリアは仕事をたくさん経験することで積めるが、それはゴールではないし、実務期間が短いことはネガティブでもない。自分自身の成長を考えたときに『変化できるか』の方が重要な要素。
今回は、【この数年先のエンジニアマーケット予測】と【エンジニアとしてこれからの未来を切り開くために必要な技術・スキル】について小俣氏にお話いただきます。
アルサーガパートナーズ株式会社 CEO/CTOの小俣泰明氏はもともと日本HPやNTTコミュニケーションズなどの大手ITベンダーで技術を担当し、システム開発やインフラ構築などのノウハウ・経験をしています。その後スタートアップベンチャーでのエンジニア経験、CTO経験、起業経験、多くのことを経験し、2012年に創業をした会社は、3年で180名規模の会社へと拡大し、IT業界でも大変有名なエンジニア・経営者です。
2016年に立ち上げたアルサーガパートナーズ株式会社はまだ少数精鋭のエンジニア集団ですが、未経験からエンジニアになっている方も多数。小俣氏が直々に技術指導をして、“強い”エンジニアを育てています。あれだけ多くの経験を積んでいる小俣氏はなぜ、今“強い”エンジニアを育成しているのか。その想いも聞いていただける勉強会です!

 

 

まず弊社サービスの紹介!!!:『ネイルマップ』

いきなり宣伝!?ステマかよ!

ネイルマップ

いえいえ!!!!!違います。

 

これは未経験の学生エンジニアが一人で全てを1ヶ月半で作りました。
iOSのみ。ただしサーバーサイド含む。( Androidもその後同じ人員がほぼ1ヶ月でリリース)
(それも理系でも無い普通のインターン学生)
つまり3ヶ月かかって開発するエンジニアに対して倍の能力を得ていることになる。
金額に換算すると50万円月給の人なら、150万円か75万の違い!!!!
単純計算でも75万円もの価値を生み出したことになる
技術力の差は圧倒的なコスト(利益)の差になる。
つまり報酬に直結するポテンシャルがある

 

いきなり結論!
今、一番重要なこと

スキルアップスピードを最大化できる環境に身をおくこと。

 

もしくは自分でその状況を作ること。(人間、自分で自分にストレスを与えるような課題を与えることは難しい)
もしくは自分のやりたいサービス作りをすることを見つける。楽しいことなら続けられるから。
(でもこれできる人は僕が今まで多くの人と面接した中で、1%程度くらいしかいない)

 

よくある事例を上げてみます

■会社に所属することで安定を求めると・・・

メリット、デメリット
・会社名でモテる(有名な会社な場合)
・もしかしたら40歳くらいで幹部などになって好きなことができるかもしれない。
・教育体制が整っている(名刺交換からはじまり、ロジカルシンキング、PMBOOK・・・・ITIL etc…)
・まぁ終身雇用の時代は終わったといっても終身雇用?
デメリット
・ぬるい
・ルーチンワークになりがち
・頑張ってもそこまで給与や報酬に影響がすくない
報酬が少ない状況やルーチンワークは個人の成長スピードは明らかに遅くなる。
ネイルマップの彼もこのような会社であれば、このようなアプリを開発することは無理だったといえる

■自分のスキルアップで安定を求めると・・・

メリット、デメリット
・一生転職で困ることがなくなる。IT業界は技術力がある人間は引く手あまた。
  技術力あるのに声がかからない!って人は是非僕にこっそりメッセージください^^;
    (自分は俗にいう就活をしたことが無い)
・会社への不満などを感じなくなる
   依存していないので、そもそも会社に不満があれば引く手あまたな自分にあう会社に移籍すればいい。
デメリット
・常にスキルアップしていかなくてはならない。
→これって人生の目的ができるんである意味、目的がない人より幸せじゃない?って自分は感じています。

 

楽にスキルアップすることはできない。そもそも1度スキルアップすれば終わりというものでも無い。
常にスキルアップを続けないとならない。
それはITサービスが進化し続けており、数年で開発手法から変わっていってしまう状況にあるため。

『そんなこともわかってる、だから勉強会にも参加してる。』

開発スピードをあげるためには
『設計力』と『度胸』と『コミットメント』
少しの『コーディング力』

・設計力に必要なもの

フルスタックな知識(これは一番は経験ですが、後ほどどこまでの範囲があるか説明します)
大規模アクセスサービスの開発経験

・度胸

完成なんて無い。そこでいったん完成と宣言できる力
作ったら最後ではないし、その後も改修しつづけられるわけなので。
ITサービスにおけるUIは2年で廃れる。
サーバーサイドシステムも3〜5年で廃れる。
3年くらい持てば良いというくらいの気持ちで作る。未来永劫使えるシステムなんてIT業界の技術が変わるので意識する必要無い。
どうせ、3年後にはレガシーな開発物だとディスられることを最初から覚悟しておく。

  • 個人的には過去のソースを引き継ぐ際にディスることってあんまりしたくない。文化的に良くないと思ってます
  • 絶対運用引き継ぐときは数年前のシステムの開発を引き継ぐため、レガシーでボロボロと言われるに決まっている。
  • それは一切気にしなくていい。

・コミットメント

ステークホルダーとの握り
上司とバグがある状況などの認識をもってもらう。バグが出たことを否定する上司、会社風土は絶対ダメ!!!!
改善フェーズで対応するものなどを事前に握る
リファクタの期間が後から必要になることを事前に握る

 

・コーディング力

対象のプログラミングの最低限の理解度があればいい。
現在のトレンドとしてプログラミング言語だけを覚えるというより、開発手法を覚えるレイヤーに来ている。

  • フレームワークやデザインパターンなどコーディングルールや規約系までに及ぶフェーズに入っている
  • 開発手法にはデプロイやGitフローの知識なども含まれる

 

次回に続く・・・

 

小俣泰明 勉強会 @dots
https://eventdots.jp/event/614029

 

小俣泰明 勉強会 @dots

カテゴリー: TAIMEI, 人間的成長, 技術力

iPhoneの各国ローカライズ対応

iPhone7がFeliCa対応で、国内スマホAndroid買う意味少なくなってきましたねー。
海外はAndroidは低価格、iPhoneは高額ということで購入者層が分かれているけど国内はXperiaとかiPhoneと変わらない高額Androidしかない。そこまでしてOS不安定なAndroidを買う意味はFeliCaだけだったなと。
しかも
AppleWatch2もFeliCa対応!FeliCaのためにiPhone7は買う必要が無い。iPhone5以降をもっていておサイフケータイだけ使いたいユーザーはAppleWatch2を購入するという手段もありますね。(裏拳タッチで改札通る)
各国ローカライズな対応をしなかったアップル。
そこがAndroidの唯一の戦える場所だったのに。
国内スマホメーカーは相当厳しくなりそう。

日本の製造メーカーが勝つにはどうしたらいいのだろう・・・。

 

カテゴリー: Android, iPhone, iPhone, TAIMEI, モバイル タグ: ,