makotan _at_ gmail dot com

サンタの配送の仕組みをふんわり考えた

あるクリスマスイブの日にサンタの配送は一体どのくらいの人数でやってるのか気になったので計算してみた

 

一戸の配達に20分かかって、6時間以内に配達を完了する必要がある場合

サンタの人数は国内だけで15,000人弱(ただしトナカイ除く)

世界規模でやるとサンタの人数はさらに激増しそうだなぁ〜って思った

ただ、国内に限っていえば多分ヤマト運輸の方が凄いので、ヤマトの仕組みをそのまま使えばサンタは楽になりそう

ちなみに、子供のプレゼントの平均の値段を5000円としたところサンタが贈るプレゼントの国内での総額は452億円になったので、このプレゼント+配送を世界規模でやれるって相当(以降自主規制

 

メリークリスマス!

だいぶ前から型がある気がしてたことに今頃気がついた事

ソフトウエア開発をやってると色んな「型」があって、適用対象の得手不得手とか色々あるなぁと。

複数の「型」を使い分けれる人もいれば、一つの「型」でなんとかしようとする人も居たりして、色々だなぁと。

ソフトウエア開発を始めた頃に知った比較的優秀な「型」から離れなくて原理主義的な人が居ると思えばあっさり離れて次の「型」をマスターしちゃう人とか居て、人それぞれ違ってて面白いなぁと

じゃあ自分がよく使う「型」ってなんだろうって思っってぼんやり考えたら

  • 業務フロー
  • データモデル
  • ルール

ってこの3つしかなくて、相変わらずシンプルだなぁと(まぁおかげでUIが苦手なんですけどw)

他の人をみてると各自いろんなやり方を工夫してるんだけどまだ「型」って呼べるほど確立した状態じゃない人も居て、苦労してるなぁ〜って見てて思ったり

そんなこと言わずに教えろよって言われそうだけど、自分もどうやって覚えたのか既に覚えてないし(割としっかりナビゲーションはしてもらった気がする)、ドメイン嗜好指向な人たちと話がずれるし(むちゃドメイン指向だと思うんだけど用語が違うらしい)ということで諦めてる

 

今年のある日そんな事を考えてた

 

若手に勧めてるこれ勉強した方が良いよネタ

周りに居る自分より若い人に時々勧めてる(別に強制はしてない)のでメモとして

SQL

今主流の言語とかライブラリが完全に廃れても安定して使われてそうだから

LISP

これがちゃんと理解で来てれば多分今後出てくる言語も対応できるはずっていう言語なので。たまに例外があるっぽいけど・・・しゃーないw

TCPUDPとその上のプロトコル

ネットワーク周りから離れられない悲しい僕たちの基礎知識

計算量とアルゴリズムとCPUとかコンピュータの構成

XXXをすると速くなるっていうのがCPUの進化で変わる現象が良くあるので基礎は大事

各種設計手法

設計手法も10年単位で変わっているので基礎として複数勉強した方が良い

各種開発プロセス

開発プロセスも20年単位で変わっているので基礎として複数勉強した方が良い

まとめ

この辺一通り理解してるぜ!っていう若手エンジニアは是非連絡してください

良さそうな転職先紹介出来ると思います

ブログの移行

完了した模様

といっても何か書くネタが出来たわけでもなく・・・

 

そろそろ秋だね〜

3連休でまたちょっと暑さが戻ってくる気はするけど酷くはなさそう

  

なんて天気ネタ書いてもなぁ〜

仕事のネタはNDAに色々引っかかりそうで書けないしw

  

最近プライベートでやってることは地味すぎてw

 

あっ、Factorioってゲームが楽しい

 

 って書けるのこれくらいか・・・

 

 やっぱり技術ネタかなぁ〜

 

最近特にネタは無い/(^o^)\

 

 

iPadで仕事をするために必要そうだなと思ったもの

目的

プログラミング以外の作業をiPadに変更する
プログラミングも出来れば・・・でも無理はしない

何故やりたいのか

  • パソコンが重い(開発用なら1.5kg~、iPadならキーボード込みでも0.5kg程度)
  • iPadは動作が軽い
  • 電源が大抵何処にでもある(iPhoneと同じだし!)
  • 緊急時の電源はモバイルバッテリーでもOK
  • 実は結構セキュア(指紋認証がデフォルト、忘れても何処にあるのかも探せる)
  • 開発の周辺で必要なコミュニケーションツールの殆どがiOS用で出てる

用意するもの

  • iPadとキーボード
  • パソコンとのデータの共有の為のソフトウェア
  • テキストエディタ
  • パスワード管理ツール
  • zip解凍ツール
  • terminal

パソコンとのデータの共有の為のソフトウェア

ここが最大の関門だった
簡単に思いつく選択肢はいくつか
dropbox,iCloud drive,box,onedrive,google drive...
iCloudだけは要注意でiCloud driveを全くの別アカウントにしたい場合、AppleIDが別になってしまい既に使ってるアプリが使えなくなるのでこの対策が必要(ファミリー共有とか)
googleのツールは複数アカウントに標準対応してるのでアカウントの切替で
あとはこの中で会社的に利用可能な奴を選ぶ
・・・無い場合・・・MaciPadなら仕方ないので最終手段としてAirDropを使う。知らない人との共有はOFFにしましょう!

それ以外のアプリケーション

迷った結果選んだ物リスト

テキストエディタ

.txtしか編集できないけど動作的にTextor

terminal

あんまり使ったこと無いけど、Termius

zip解凍ツール

iZip pro(何故かproを持ってた)

iOSの標準アプリ

ファイル(これがないiOSのバージョンだと多分無理)
iOSに対応してるファイル共有ソフトならファイルからの各種操作ができるので便利(なんだけどAirDropだと関係ない)

キューとかDBとか非同期とか分散とか

元ネタはさておき、過去見た色んな物をメモする

プログラムの中のメモリーキュー

プログラム上に用意したメモリー上のキュー
作るのは簡単だし使うのも簡単
モリーの容量制限があるので大量に詰まると大変なことになる
監視が面倒なので気をつけて使おう

サーバのインメモリーキュー

Redisとかそういうの
容量的にもインメモリーなので辛かったりする
とはいえ、意外と便利
絶対的に速度が必要で容量が大丈夫なときにはベスト

キューサーバ上のキュー

ActiveMQとかそっち系
2PCなキューとか作れるキューなのでDBとの同期とかもやる気になれば出来る(色々ハマるけど)
普通にキューを作るんなら多分一番楽だと思ってる

クラウド上のキュー

SQSとか
順序保証なにそれ?とか複数取得出来たりするので実装をだいぶ気をつけないとヤバそうなやつ
それに合わせて実装を頑張ればなんとか出来る
かなり大きいけどリクエストの上限があったり、容量制限がすっごい緩かったりする感じ
最近FIFOオプションとか対応してきてだいぶ良くなってる

ストリーム

最近多くなってきた感じのやつ
大量のリクエストを受け取れたり一定時間保持できたり再処理できたりするサービス
クラウドとオンプレの両方に同じようにある
シャーディング出来るので普通のキューで耐えれないほど大量のリクエストを処理する場合に有効な感じ

DBのキュー

キューというよりポーリングでの実装なのでこれをここに入れるのはちょっと違う気がする
ステータス管理しようが何しようが、普通に作るとDBのロックを使うのでDBへの負荷が結構になる
RDB使っていれば別のサービスとかサーバとか使わなくて良いので追加サーバをようしなくて良くなるのはだいぶ大きいメリット
ただ、この中では唯一と言って良いSQLで不要なメッセージを削除できる能力があるので上手く使うとそこはとっても良い

使い道とか

リクエストに投入する量とかコンシューマの数とかスケール性とかそれ以外の特性を決めると大体何を使ってどういう風に作れば良いのかが決まるはず
なので前提条件を決めずに特定の物をダメと言ったり代替案にするのもいまいちかなぁ〜って思う今日この頃