N+1問題
N+1問題ってご存知でしょうか?
N+1問題 / Eager Loading とは - Rails Webook
N件のデータをSelectした後に取得してきた1件ずつをfor文で回して再度Select処理して、N件が大きくなればなるほどパフォーマンスに影響を及ぼすやつですね。
1+n問題って言ったほうがわかり易くないか?と心の底から思っていますが。
SQLレベルだとJoinとかINとかサブクエリでSelectするとかっていうので対応できるので、まぁ作る時にきちんと気にしましょうね、という話。
ではこれがどんな時に問題になるのか、というと、ここのところAPIエコノミーみたいに流行り言葉になっていますが、APIが固定されていると問題起きがち。
一覧取得系のAPIと、詳細取得系のAPIが分かれて実装されていたりすると、クライアント側の実装によってはすごい負荷になります。
APIをリリースする側が大量アクセスで負荷が高くなったり、クライアント側で大量のアクセスが発生してブラックリスト入りしたりするので、結局公開側とクライアント側の双方で気をつけるべき話なんですが。
なんでこんな話をしているかというと、某S社のCRMの標準APIってgetlistとgetdetailを分けて実装になっており、先日Multi Thread Programmingのブログが上がっていて、そもそもの解決策ってそんなとこじゃないよなぁ、と思った次第。
Use ABAP Multi-“Thread” programming to deal with a real performance issue | SAP Blogs
コンウェイの法則と企業情報システムアーキテクチャ
コンウェイの法則とは
The organization of the software and the organization of the software team will be congruent, (中略)If you have four groups working on a compiler, you’ll get a 4-pass compiler
訳すと、
『ソフトウェアとチームの構成は一致する。4つのグループでコンパイラーを作れば4つのコンパイラーができる。』
もうちょっと意訳すると
「アーキテクチャは組織に依存する」
という話ですね。
以下の記事ではOSを例に挙げており、なるほどなぁ、と思ったり。
コンウェイの法則(Conway's Law) - Plan9日記
3機関が協業した複雑なMulticsに対して少数精鋭の研究者がシンプルに作ったUNIX。巨大化する商用UNIXと、原点回帰したPlan9。Microsoftの発展と、MS-DOSからWindowsへの流れ。オープンソース革命とLinux。
ソフトウェア開発においては、
開発チームの構成に依存してアーキテクチャが決まる為
逆に
アーキテクチャに応じて開発チームを構成すべき
とも言われたりします。
コンウェイの法則と企業情報システムアーキテクチャ
よくソフトウェア構成や開発について言及されるのですが、企業情報システムアーキテクチャにおいても同様だと思っています。
というかそういう例をクソほど見てきました。
旧来の企業情報システムは組織ごとにシステム化が進んできました。
財務会計、出納、外貨管理、人事、在庫管理、生産計画、生産管理、設計、受発注などなど。
1990年台後半からERPが流行り始め、システム統合が進みました。
ERPといえば
「ベストプラクティスがー」とか「BPRがー」とか言われますが個人的にはどうでもよくて、
アーキテクチャ観点での本質は
「組織間のデータの共用化」
だと思っています。
本来的に企業の組織は相互に影響し合う振る舞いが必要で、これまでバッチでインターフェース連携していたのが、ERPになって、データの連携が自動化・リアルタイム化されて、また、領域をまたいでデータが見られるようになった。
が、最近はSaasやSoEやSoRといった考え方で、部門ごとにシステムを切り出す方向にトレンドが流れている。
多分その流れは止められないのですが、これをIT部門が弱い企業で進めると、かなりカオスになります。(というか、なっています。まじで。)
システムを分ける、というものの、一度ERPで実現したシステム間の相互連携は必要で、個別システム化にあたってのポリシーがないと、ツギハギだらけの増築を繰り返したいびつな旅館みたいなシステムが出来上がります。
利用言語、OS、MW、基盤の乱立、システム間連携のトポロジー複雑化、言われるがままに仕様追加してスパゲッティ化した仕様やコード、再利用なんてとんでもない。
企業の場合、アーキテクチャに応じて組織を設計する、というのは難しい話。
組織毎のシステム構築の流れが進む今、全体を俯瞰して計画する従来のEAを推進するような役割とアーキテクチャに対する原則やデザインルールなんかを整備できない企業は、気がついたら90年代以前の手がつけられない情報システムの状態の再来を招くことになりそうです。
slackのSAPとの提携
周りの人何人かからコメントを求められたのでメモ。
SlackがEnterprise Gridのリリースと合わせてSAPとの提携を発表しました。
Enterpsise Grid自体は期待できますね。
BIツール連携みたいのも考えているみたいでエンプラIT屋として、Sharepointや糞手組みポータルに変わる社内コミュニケーション手段として胸躍るものが有ります。
記事中にも有りますが、企業知識ベースを意識したFacebookのWorkplace、MicrosoftのTeams、Jive、CiscoのSparkといった最近新たに出てきているトレンドかと。
ただSAPとの提携の話を合わせてリリースしたのはEnterprise Gridリリースの釣り感があります。
SAPとの提携とは
Enterprise Grid、関係ありません。
SAP的には、経費精算のConcur、人事管理のSuccess Factors(SF), PaasのHANA Cloud Platformの3クラウドサービスに係るchat botをリリースしたよ、という話。
Enterprise Gridと関係なく利用可能です。
botの詳細は以下参照。
まだベータ版のようですが、旅程の確認や経費精算のレシートアップロード、経費精算申請に対応しているよう。
Driving Conversational HR with the New SAP SuccessFactors Slack Bot | SAP Blogs
SF上でのアクティビティやアチーブメントの登録やフィードバック、レビューなんかができるそうな。
HCPに関する情報はまだなさそう。
Slack提携へのSAP屋としての期待
SAPとしてはSAP Jamやワークフロー関連のタスクリストなど、コラボレーション系のツールはあるものの統合は進んでいない印象。
ビジネスソリューションというよりもプラットフォーム型のソリューションで、既にFacebookやMicrosoftなんかはSNSで培ったノウハウを持っておりSAPが新たに入り込むのはどうかなぁ、というのが個人的見解。
餅は餅屋というか、SAPとしてSlackやそMicrosoft、Facebook等のソリューションと連携してワークフローやコラボレーションを実現していくような形にすすんでほしいなぁ、などと。
【Memo】ABAP CDSビューについての雑記
ABAP CDSとは
S4HANAがリリースされて冗長テーブルが排されて、テーブル構造がシンプルになった代わりにABAP CDSビューという、アノテーションで計算処理とか色々できるView機能がABAP CDSビュー。
ABAPの移送機能が使えるのでHANA単体のCDSよりも推奨される。
このあたりが参考によさそう。
Getting Started with ABAP Core Data Services | SAP Blogs
SAPエンジニアがABAP CDS取り組むべき理由
非正規化されてた集計テーブルとか多数の冗長テーブルを無くせたのは、CDS Viewで従来のDBでは重くてできなかった処理をDBにpushdownできたから。
それ故、標準を触る上でCDS Viewの理解は必須。
さらに、従来ABAP の内部テーブルでぶん回してたアドオン処理もDBに寄せれてアドオンも楽になるし、ついでにOdata化とかAnnotationでできるようになってるよ。
CDSビューとUIの関連
CDSは単にビューを作るものではなく、データモデリングを行うもの。
エンティティ間の関係性をCDSでモデリングし、そこにくっついてるAnnotationを元に、UIはFiori Smart Templateで自動生成しちゃう。
更新系だとBusiness Logicの実装にBOPFも必要。
参照系も更新系も(分析系も)同じモデルをベースに作ることになるイメージ
BOPF関連リンク
https://archive.sap.com/documents/docs/DOC-45425
https://blogs.sap.com/2018/05/01/where-to-find-learning-material-about-bopf/
https://sapyard.com/bopf-for-beginners-part-1-introduction/
データマネジメント観点でのCDS View
データの利活用って観点を入れた時に、上記の自動生成系UIとデータモデルが密結合になるアーキテクチャが良いのか、っていうのは正直疑問だなー。
非正規化してCDSで加工して見せるというのは大賛成だけど、CDSやUI生成ツールの特性に合わせて、データモデルが制約を受けるようなケースが有ると望ましくない。
DAとアプリケーションは切り離されるべき。
このあたりは検証しながら考えていきたい。
お料理とシステム構築
エンプラSIな現場で料理の話をしてたら、
「そういえばこの案件で料理するのテッキーな人ばっかっすねー」
って話になって走り書き。
料理には3つのプロセスがあるなー、と。
- 作るものを考える
- 作る工程や順序を設計する
- 実際に調理する
で、なんでそんなことを考えてたかというと、日本のSI業界に対して感じてた違和感がふと胸に落ちたところがあり。
システム開発のプロセスも大きく分けて3つ。
- 企画:どんなシステムを作るか
- 計画:どう作るかの計画作り
- 構築:実際に作る
ボリュームとしては圧倒的に後ろ2つが多いですね。
で、日本のSI業界は多重構造になっていて、大手SIやITコンサルファームの人たちは、実際にものは作らないので、計画と構築が予定通りに進んでいるかの管理をする。
所謂プロジェクトマネジメント的な。
今所属してる会社もそんな人たちで溢れてますし、そこをきちんとしないと評価されないよ、と言われています。
ただ今は技術的な革新期。
新しい食材がどんどん出てるような状態で、それを知らずに管理だけするような人たちが、いつまで価値を出し続けられるのかなー、と。
個人としては『新しい食材を知り』『新しい料理を考え』『美味しく調理できる』人になりたいもんです。
ウチの現場の管理屋な人たちが料理に興味ないのも、そんな志向の違いかな、とふと思ったので。
2015年買って良かったものメモ
2015年に買ってよかったものメモ。
これも今年中じゃないとまとめる気もしないだろう、と。
Amazonで買ったものを見返してた。
Bluetoothヘッドセット
ジムに通うようになって、ipodを別持ちするのも面倒と思い、iphoneで音楽を聞いたり動画見たりしながら運動するのに、Bluuetoothのヘッドセット。
値段相応だけど、それなりに使えてます。
マイク内臓とあるけど、多分マイクは入ってないので要注意。
iPhone6sカバー
iphone6以降、蓋付きのケースが主流になりつつありますが、個人的にあまり好きではなくて、前面ガラスを保護できて、蓋なしのケースが欲しかった。
前面が画面より少し高さがあって、画面を下にして机などにおいても傷がつかないカバーを探していて、これを発見。耐衝撃性もそれなりなので良い感じ。
iPhone6S /iPhone 6 ケース カバー Sライン シリコン TPU アップル Apple アイホン 6 【ブラック】【MiniSuit】【日本正規輸入代理店品】
- 出版社/メーカー: MiniSuit
- メディア: エレクトロニクス
- この商品を含むブログを見る
スマホ自転車マウント用ホルダー
チャリ通時のスマホマウント用に購入
6sに機種変して薄くなると、ホールド感が減ってしまいましたが、オプションで付いているスポンジを追加で貼り付けて底上げすれば、問題ありませんでした。
信号で停まった時にIngress活動などに。。。
※運転しながらのスマホ操作は禁止されています!安全運転!
ステム径に合わせて数商品展開されているので、事前にステム径を図って買いましょう。
MINOURA(ミノウラ) スマートフォンホルダー [iH-400 OS] オーバーサイズ 27.2mm/31.8mm/35.0mm
- 出版社/メーカー: MINOURA(ミノウラ)
- 発売日: 2012/07/17
- メディア: スポーツ用品
- この商品を含むブログを見る
モバイルブースター
iPhoneの電池を長持ちさせよう、そう考えていた次期が私にもありました。。。
が、Ingressとかチャリ乗りながらGPS動かしたりとかするとなると、そもそも浪費が激しい前提で、運用すべき、ということで。
最新は20100Ahですねー。
急速充電対応ですが、ケーブルも急速充電対応が必要なのでケーブル選びも注意しましょう。
みよーん、てなるやつ。
肩こりが酷く、この手の肩こり対策グッズは結構いろいろ試しているんですが、これ、会社と自宅用に2つ買いました。
肩甲骨剥がしに必携。
酸素系漂白剤
はい、お鍋の焦げ取り、服についた汚れの漂白、洗濯槽の掃除など、何でもござれ。
大掃除でも大活躍してもらいました。
他にFirestick TVとかはやっぱ買って後悔なかったけど、特に書き出すとしたらこんなもんかなー?