(O+P)ut

頭の整理のために、Slerで働く若手インフラエンジニアが、【 (O+P)ut = OutPut 】していく場です。

【日付跨ぎ対応版】Excelでタイムチャート自動描画

Excelにてタイムチャート、または、ガントチャートを描画する際には マクロ または 条件付書式 で行うのが一般的です。
細かいことをしようとするとマクロの方がよいですが、更新後すぐに描画する使いやすさから条件付書式を採用する方も多くいらっしゃるかと思います。

条件付書式を用いたタイムチャートでよく見るのが

=AND(作業開始時間<=タイムチャート上の時間+"0:0:01",作業終了時間>タイムチャートの時間+"0:0:01"))

という数式を、タイムチャートの描画エリア全体に適用するやり方です。

例えば、

23:58 23:59 0:00 0:01 0:02
1 23:58:00 23:59:00
2 23:59:00 0:01:00
1 0:01:00 0:02:00

上のような表を作成し、右側のエリアに描画したいとします。
左下の1,2,1は作業時間で、開始時間と作業時間を用いて終了時間は

=開始時間+TIME(0,作業時間,0)

で算出し、23:58...0:02 も 左のセル+TIME(0,1,0) で時刻を出しています。

上の表の左端のセルがA3だとすると

=AND($B4<=D$3+"0:0:01",$C4>D$3+"0:0:01")

という条件で
適用範囲を

=$D$4:$H$6

とすると、
f:id:mtiit:20171114152804p:plain
上記のようになります。

最後の一行がうまく反映されていないです。

表示形式を日付にすると一目瞭然で、0:01というのが24:01と認識されていないことが原因となります。

1 1900年1月0日 1900年1月0日
2 1900年1月0日 1900年1月1日
1 1900年1月0日 1900年1月0日

そこで、タイムチャートの開始時刻 23:58 よりも開始時刻が小さければ1日を足す処理をしてあげると、この問題は解決します。

例えば、

23:58

という開始時刻をD1におき、そことの比較で1日を足す(日付をYEAR MONTH DAYで取得し、時間を出す)、下記の条件式に変更すれば

=IF($D$1-$B4>0,AND(DATE(YEAR($B4),MONTH($B4),DAY($B4)+1)+$B4<=D$3+"0:0:01",DATE(YEAR($C4),MONTH($C4),DAY($C4)+1)+$C4>D$3+"0:0:01"),AND($B4<=D$3+"0:0:01",$C4>D$3+"0:0:01"))

f:id:mtiit:20171114154522p:plain
上のように、日付が変更した場合も問題なく対応が可能です。

今回は1分毎のタイムチャートですが、何分でも考え方は同じとなります。
0時前後でうまくいかないという同じ悩みを持たれた方は、ぜひご参考ください。


【電子コミック】eBookJapanのアカウントを共有する

f:id:mtiit:20171028180907p:plain

先日、eBookJapanさんでマンガを購入したので複数端末で共有しました。

ebookJapanは、専用のアプリ eBiReader があるのでiPhone等からでも利用がしやすく、PCからでもWebブラウザから快適に利用可能です。

アカウントにログインする際は、専用のIDかYahooIDが必要です。私は、専用のIDを用いました。専用のIDといっても、メールアドレスですが

基本的には、上記IDでログイン情報が管理されているのですが、デバイス情報というものも併せて管理しているようです

ここで注意が必要なのは、複数のiPhoneでアカウントを共有する場合です。

同じデバイス名だと、ログインではじかれてしまいますので、デバイス名を変更して同事象を防ぎます。

例えばiPhoneなら「設定」→「一般」→「情報」→「名前」でデバイス名を変更できます。デフォルトだと"iPhone"となっているためバッティングする場合があります。

参考までに、ログイン情報を見た場合が以下になります。同じiPhoneでも名前を変えればしっかり別々に管理されます。

f:id:mtiit:20171028181932j:image

 また、読書設定で 読書情報の同期 を設定できるのもうれしいところでした。使用感としては全く不満がないので、今後もここでマンガを購入していこうと思っています

以上です。eBookJapanでマンガ購入を検討している方はご参考ください。

 

 

 

【R言語】二次元配列の可視化手順

2次元配列(行列)を可視化する場合に使えるimage関数を実例を示しながら紹介します。

まず、元となる2次元配列ですが
R言語にてデフォルトで入っているサンプルデータAirPassengersを用います。アメリカの航空会社から提供されたデータで、1949年から12年間の国際線旅客数の毎月の合計が入っています。

> str(AirPassengers)
 Time-Series [1:144] from 1949 to 1961: 112 118 132 129 121 ...

といった具合の、12年x12月の計144つの値の可視化を順を追って説明していきます。コードのコピペで動作させることも可能です。

まず、こちらを2次元配列に格納します。

> airpass <- AirPassengers
> m_airpass <- matrix(airpass,ncol=12)

行列m_airpassの値の入り方は以下のようになります。行と列の入り方を逆にする場合は byrowオプションを使いますが、今回はこのままでいきます。
f:id:mtiit:20170920230958p:plain

これをそのままimage関数にて可視化したものがこちらです。
f:id:mtiit:20170920232527p:plain


少し見にくいですよね。その理由として、下記の2点があるかと思います。
・image関数のデフォルトでは、値が小さいものほど色が濃くなっている
・x軸、y軸の値が入っていない。

この2点の修正と修正結果は以下となります。

> image(1:12,1949:1961,max(m_airpass)-m_airpass,xlab="",ylab="",axes=FALSE)
> axis(1,1:12)
> axis(2,1949:1961)

f:id:mtiit:20170920232823p:plain
max(m_airpass)から値を引くことによって強制的に値を反転させています。そして、軸の表示をimage関数と分けて行うことで、表示したい値を画像に追記することができます。

image関数による可視化は以上です。ご参考ください。


【街コン】卓球コンに行ってきた話する?【感想】

先日、初めての街コン(卓球コン)に行ってきました。

f:id:mtiit:20100823192117j:plain

開催場所は、東京都区内ですが、最寄り駅としては乗降人数2万人/日くらいの少しこじんまりしたスポーツセンターのようなところです。*1

まずは、男女比ですが、男性が8人、女性が4人でした。

この時点で あれ? と思ってました。

なぜなら、案内のところには 男女比1:1 と明記されていたからです。

司会進行のお姉さんが、「女性陣は到着が遅れているので、先に始めちゃいましょう」といって街コン自体が始まり、最後まで現れなかったです。
勘を働かせれば、「最初からこの人数で全員だが、あたかも遅刻という体裁をとってるのかな?」とか思えちゃいますが、その辺の真相はわからないですね。この手の運営スタッフの方がこの記事を見ていたら教えてほしいレベルです(笑)

全体の流れとして、

  • 自己紹介タイム
  • 卓球タイム
  • 連絡先交換タイム

です。

自己紹介タイムですが、区切りも何もないところで順番に男女で事前に記入した自己紹介カードを交換しながらお話しする感じですが、なにせ男女比がおかしいので半分の男性はぼーっとしていました。やっぱり男女比をそろえるってのは、街コンだとかなり重要な気がしました。

f:id:mtiit:20170826160007p:plain
(待ってる間は暇というか、苦痛でした。。。)
(私が司会なら、うまいこと男性同士でも話す場を作りますね。)

 

卓球タイムでは、2グループに分かれて進め方も本当に自由に丸投げされました。経験者の割合によっておそらく異なるんでしょうが、1グループは本気で試合をしていて、もう一つのグループではしりとりをしながらラリーを続ける、といった具合です。こういう時に、参加者の雰囲気を感じ取って、こういう風にして遊ぼう~って決めれるリーダーがいるといいですよね。ちなみに、男性8人のうち経験者は6人、女性4人のうち経験者は3人でした。割と多くて意外でした。

そして最後の、連絡先交換タイムではLINE等々を交換する時間です。趣味コンのいいところかもしれないですが、同性とも仲良くなれて、むしろそっちの方が収穫だった気がします。一応、気になった人に連絡先を渡すための用紙は用意されてましたが、皆さんスマホを片手に自由にやっていました。少人数ならではって感じがしました。

 

さて、個人的な総論ですが、、、

次はもう少し人が集まりそうな場所での開催地に行きたい です。

やっぱり少人数すぎると、異性でタイプの人がなかなか見つからないですよね。街コンのいいところは、直接連絡先をぐいぐい聞きに行かなくてもスタッフを通して後でこっそりってのができるところだと思うので、まずはそういう人が現れるためにも分母は必要だと思っちゃいました。男女ともに、20代が半数、30代が半数といったところで、個人的には非日常な集まりに楽しめました。解散した後も、ごはんを食べに行ったりして本当に新しい友人ができたような気持ちです。

 

ただ、男女比問題があったので、次回からはこの運営会社さんのは避けてみようかな?と思ってます。別に発表してもいいんですが、一度の出来事で批判めいたことを書くのもどうかと思うので今回は伏せておきます(笑)

 

街コンへの参加を検討している方は、ご参考ください!

 




 

 

*1:例えば、新宿は80万人/日くらいで、宇都宮駅が4万人/日くらいです。

【宇宙兄弟】×【プラネタリウム】 ”南波六太がやってきた”を見てきた感想(※ネタバレあり)

2017年8月17日、池袋のコニカミノルタプラネタリウム“満天”in Sunshine Cityに 「Space Dreamers 〜宇宙兄弟 南波六太がやってきた!〜」を見に行ってきました。

f:id:mtiit:20170817154213p:plain

私は、宇宙兄弟の原作は読んでないですが、アニメ99話+映画エピソード#0 はがっつり見た、といったところで、宇宙兄弟プラネタリウムとコラボするということでかなり楽しみにしていました。

 

あらすじは、以下です。

ムッタが宇宙飛行士として月へ向かう、少し前―――。
月を眺めながら物思いにふけるムッタの元に、いつも聞いているラジオ番組「モーニングレディオ」から、なんと公開収録の依頼が。ISSとの中継コーナーではせりかとも話せるとあって、快くその依頼を引き受けたムッタを待っていたのは、かなり見覚えのある顔をした、自称“DJパープル”。公開収録に集まった人々の「どこからが宇宙なの?」「宇宙人はいるの?」といった宇宙に関する素朴な疑問に、ムッタが宇宙飛行士ならではの視点で答えてくれる。

 

アニメ版ではムッタはバックアップクルーで月行きは決定しておらず、せりかさんもまだISSには行っていません。そういう意味では、アニメの最終話よりかは、後の設定ということですね。では、以下が所感です。

ネタバレ要素もありますので、閲覧する際はご注意お願いします。

 

 

 

 

電話で、ムッタにラジオのオファーがあるところから始まります。

ここは、アニメを見た人ならピンとくる声です。私は、「あれ?同じ声優さんなのかな?」くらいにしか思ってなかったのですが、電話の主(DJ)とムッタが対面すると、ムッタも気づきます。そうです、紫三世 がDJ役でした。ムッタとせりかから 紫さんですよね? ってつっこみが入りまくりますが、あくまで知らんぷりを続ける流れはおもしろかったです。

 

DJ紫の進行のもと、ムッタは子供たちからの質問に答えていきます。

最初に、いろんな子供たちにフォーカスがあたる中で、ある一人の女の子に少し違和感を感じました。なぜなら、その女の子に飲み物を与える父親が、わざわざ口元まで持っていってあげていたからです。その時は「過保護な親っていう設定なのかな?」くらいしか思いませんでしたが、この前フリは後半にて回収されることになります。

 

質問するそれぞれの子供は、わざわざラジオの現場に行くくらいに宇宙が大好きのようで、興味深い質問も多く、それに対してムッタも真剣に回答します。ISSが400km上空を飛んでいる、なども視覚的にわかりやすいようにCGを駆使した演出になっており、見ていて爽快感がありました。

質問の途中に、ISSにいるせりかさんと中継がつながり、せりかさんは原作通り「ALS( 筋萎縮性側索硬化症)に効く新薬を作成するために、日々取り組んでいます。」というメッセージを聴衆に伝えます。それを聞いて、さっきの親子にまたフォーカスがあたります。

ラジオイベントは終わり、最後にエンディングが流れます。そのエンディングの中で、せりかさんがALSに効く新薬の発見が進んだことが触れられたり、質問した少年・少女の その後 が 一枚絵 にしてぱらぱらと流れます。その中で、「ALSに効く新薬の発見のニュースを聞いて涙を流す夫婦」という一枚絵が挟まれました。

 

なるほど。

お父さんとラジオイベントに来ていた少女はALSという設定だったようです。

 

スクリーンには最後に、「これは架空の話だが、宇宙に興味を持ってくれれば増えるほどこの話が実現するのも近くなります」といった趣旨のメッセージが表示されました。誰かの役に立ちたくなる話です...

  

全体的な感想ですが、とても満足でした。一応、宇宙兄弟のストーリーを最初に解説しているので、まったく知らない方がいってもそこそこは楽しめるとは思います。ただ、紫さんや、せりかさんの強い思いなどを知ってると、より入り込めると思います。

原作が好きな方は、行って間違いなし、そう思えたプラネタリウムでした。

【雑学】地球はビリヤードボールになれるのか

f:id:mtiit:20170817171732j:plain

何事にもルールや規格というものがありますが、サッカーボールや野球ボールにももちろんルールがあります。

例えばサッカーボールの公式規格は

  • 球形である。
  • 外周は68-70cmとする
  • 重さは410-450gとする
  • 空気圧は0.6-1.1気圧とする
  • 革皮または適切な材質である
とあります。「球形である」って...
なかなか曖昧で笑えます。
ちなみに、サッカー競技規則を見にいってもこれ以上詳しい記述がない。

f:id:mtiit:20170817171443p:plain

そんな中で、ミリ単位の誤差が勝負を左右する ビリヤード の球には、「球である」以上にしっかりした規則があります。以下は、ビリヤードの中のスヌーカー*1用ボールに関する規格です。
 
直径52.5ミリメートルの大きさに規格化されており、0.05ミリメートルの誤差が許されている。
いいですよね。厳密で、こういう記述は好きです。
 
さて、ここからが本題ですが、「地球の球のなめらかさは、ビリヤード球の規格にも通るほどである」といった文章を昔どこかで読んだ記憶があります。それを、ここで検証してみよう、というのが本記事となります。
 
まず、地球は完全な球体ではないです。
なぜなら、地球はくるくると回っているため、赤道部分が遠心力で少しふくらんでいます。よく、ミカン型と例えられたりしますね。
f:id:mtiit:20170817173121g:plain
ざっくり、球の円周?は40000キロと言われますが、
 
赤道の全周:40070.368キロメートル
子午線の全周:40003.423キロメートル
 
というのが現在の観測値です。
 
今回は、この値を元に検証を進めます。
 
上記二つの全周ℓを持つ球体がいると仮定すると、半径rは r = ℓ/2π  となりますよね。円周と半径の関係、懐かしい公式です。
 
この公式を元に 半径 r を出すと、
 
赤道の全周を元にした球の半径:6377.398キロメートル
子午線の全周を元にした球の半径:6366.743キロメートル
 
となります。
 
この半径の誤差をパーセントで表すと、
(6377.398-6366.743)/ 6366.743 → 0.167%
 
となります。
 
ビリヤード球は、52.500mmに対して0.05mmの誤差が許されているので、その誤差をパーセントで表すと、
0.05 / 52.5 → 0.095%...
 
中心から表面への誤差は許容外に見えます、、、
 
なんて、ここまで計算していて気づいているのですが、おそらく前提として、地球は 完全な球体 であり、ヒマラヤ山脈の頂点 と マリヤナ海溝 の凸凹 を考慮した場合、ビリヤード球の規格にも合致する、ってことがその本では言いたかったのかもしれないですね。
 
上記の考え方で、指摘等あればお知らせください。何か間違えてる気がしないでもないので・・・
 
以上、地球がビリヤード球の規格に通るくらい球体なのか論争、でした。
 
 

*1:15個ある赤球とカラーボールを交互にポケットに落としていく、といったものでイギリスでは大変人気があるようです。

【Linux】指定した列を特定の単語で検索し、表示する【awk】

タイトルの通りで、grepコマンドを用いると行全体で検索がかかってしまう、それを避けたい時に使うワンライナーが以下となります。

cat ファイル名.csv | awk 'BEGIN{FS=","} $3 ~ /hoge/ {print $0}'

上の場合、csvファイル、つまり区切り文字が カンマ(,) なので field separator を "," としています。カンマ区切りされた行の3列目に hoge という文字列が含まれていれば 行全体を表示することができます。$0 は行全体という意味なので、任意のX列目が欲しければ $X としてください。

以上、かなり短い かつ とても簡単 ではありますが、Google検索で探そうとするとなかなかヒットしなかったので、キーワードをちりばめながら備忘録程度に書いてみました。