JavaのStreamでFizzBuzz

if文とfor文のないfizzbuzzです。

import java.util.function.Function;
import java.util.stream.IntStream;
import java.util.stream.Stream;

public class FizzBuzzMain {
	public static void main(String[] args) {
		// {\x->"Fizz", id, id}
		Function<String,String>[] fizz
		= Stream.generate(() -> Function.identity()).limit(3).toArray(Function[]::new);
		fizz[0] = s -> "Fizz";
		// {\x->"Buzz", id, id, id, id}
		Function<String,String>[] buzz
		= Stream.generate(() -> Function.identity()).limit(5).toArray(Function[]::new);
		buzz[0] = s -> "Buzz";
		// {\x->"FizzBuzz", id, id, ..., id}
		Function<String,String>[] fizzbuzz
		= Stream.generate(() -> Function.identity()).limit(15).toArray(Function[]::new);
		fizzbuzz[0] = s -> "FizzBuzz";

		//1~30の整数に、上のラムダ式を適用
		IntStream.rangeClosed(1, 30)
		.mapToObj(n ->
					fizzbuzz[n % 15].apply(
						buzz[n % 5].apply(
							fizz[n % 3].apply(String.valueOf(n))
						)
					)
				 )
		.forEach(System.out::println);
	}
}

Haskellでfizzbuzz

if文を使わないのがカッコいいと思っています。

C1カバレッジ100%なんてよゆーっすよ。

module Main where

import Data.Maybe   --Maybe, Just, Nothing, maybe
import Data.Monoid  --mappend

{-
fizz, buzz::[String]
fizz = cycle $ take 3 $ "Fizz" : repeat ""
buzz = cycle $ take 5 $ "Buzz" : repeat ""
fizzbuzz = zipWith (++) fizz buzz
answer n = zipWith (++) (map show (enumFromTo 0 n)) fizzbuzz
-}

fizz, buzz::[Maybe String]
fizz = cycle $ take 3 $ Just "Fizz" : repeat Nothing
buzz = cycle $ take 5 $ Just "Buzz" : repeat Nothing
fizzbuzz = zipWith mappend fizz buzz
answer::[String]
answer = zipWith (flip maybe id) (map show [0..30]) fizzbuzz

main::IO()
main = print $ answer

 

PC遍歴

まとめてみた

懐古厨のようなのでまとめてみた。

~中学時代

PC-9801 UV11/U2 (1991~1995)

時代は初代の金メッキPentiumな頃合いで、PC-9801 FAとかそのあたりのモデルが流行っていた時代だったと思いますが、父親が買ってきた最初のPCがUV11でした。
筺体はコンパクトで、3.5インチFDDを2機搭載していて、いろんなMS-DOS資産を楽しめるものでした。
父が1993年(私が小学生5年のとき)に後述するNX/Cを買った後は私の専用マシンになりました。
緑電子の40MBHDD(SASI接続)も付けてくれました。

PC-9801 DX2/U2 (1995~1997)

まぁ私のPCじゃなくて学校のPCだったのですが、思い出深い1台なので挙げています。
パソコン教室に整然と並べられたA1からH5までの40台のPCはいずれも同じスペックかと思いきや、技術科の先生や数学の先生やパソコン部の部員が手を加えているマシンが数台ございまして、特にH5は通称「部長席」と呼ばれ、ハイスペックな加工がされていました。
Logitecの540MBHDD、増設RAMモジュール(2MB)、インクジェットプリンタ(確かHP製)
私が使わなくなってからCPUアクセラレータも付けられていたような・・・

PC-9801 NX/C (1995~?)

父親が1993年に買ったノートPCです。
TFTカラー液晶搭載の贅沢品です。
20MB内蔵HDD搭載で、Windows 3.1を動かしていました。
一太郎や花子もグラフィカルに動きました。

PC-9821 V7/S5K (1995~2000)

私の専用機として最初に買ってもらったのがこれです。
Pentium 75MHzという中途半端なCPUが積まれていたので、学校先輩からは「いつオーバークロックするの?」と言われていました。
ジャンパピンでベースクロックを50MHzから60MHzに変更すると、同じ石のままでも90MHzで動作するという技が知られていたのです。
FM音源が搭載されておらず(その分値段が押さえられていたわけですが)、ゲームなどやりたかった私は音源ボードを買うことを余儀なくされました。
最初に買った音源ボードはPC-9821-118という音源ですが、当時残念ながらMS-DOS用のドライバがなく、またそのようなドライバを自作する技術も無かったので、返品してPC-9801-86にしました。
なお、86ボードは2016年現在まだ所有しています。5インチFD、3.5インチFD両方のドライバもあります。
搭載メモリも8MBで、Windows95を動かすにはパワー不足だったので、お年玉で16MBのEDO-RAMを買って増設しました。

現役時代に手を加えたのはこのくらいですが、大学生になって秋葉原にしょっちゅう行くようになったころにジャンク屋で133MHzや166MHzのPentiumを買ってきては載せ換えたりして遊んでいました。
そんなことをしているうちにブートしなくなってお亡くなりになりました。

~高校時代

VAIO PCG-766/BP (1998~2002)

私の専用機の2台目です。ノートPCにしました。
解像度がSVGA(800×600ピクセル)と、2016年現在からは考えられない低解像度でした。
そしてHDDが3GB。Windows98搭載でしたが、当時ゲーム等はCDで配布されていて一本当たり数十MB~数百MB程度。
あっという間に空き容量が無くなってしまいました。
外部接続するMIDI音源を買ったり、外付けCD-Rドライブを買ったり、いろいろと繋げていたら、
最終的にかなり場所を取るノートPCになってしまいました。

PC-9821 AP? (2000~2000)

譲り受けたPC。メモリとHDDを抜いて、V7に増設したりして筺体は処分しました。確か。
石は486SXだか、486DXだか。

~大学院時代

PC-9821 Cb (2001~?)

譲り受けたPC。リモコンが使えてテレビが映るのが画期的でした。
石は486SX 20MHzか33MHz。Windows3.1で遊びました。

PC-9821 V200 (2003?~現在)

譲り受けたPC。流星タイプと呼ばれるものです。
当初Windows95が入っていましたが、いつだかWindows98SEに入れ替えました。
ここ10年くらい触っていません。動くのかな??

自作1 (2002~2005くらい)

初の自作PC。地元のPCショップでケースから検討を始めて、次のようなスペックで組みました。

ケース 星野金属 Pandora
CPU Intel Celeron 900MHz(Socket 370)
メモリ PC133-SDRAM 256MB
HDD IBM 40GB
OS Windows XP Home

メモリが256MBというのは当時でもやや非力で、途中512MBを増設して768MBにしていました。
あとCeleronというのはやはり諸々するのにパワー不足でした。

自作2 (2004~2012)

自作1がかなり貧弱だったので、耐えきれずに組み立てた2台目です。
秋葉原ショップの通販サイトで買いました。

ケース ノーブランド ミドルタワー
CPU Intel Pentium4 2.4GHz(FSB800MHz, Northwood)
メモリ PC3200-DDR 512MB →すぐに1GBを増設
HDD Seagate 120GB →すぐに500GBを増設、最終的に2TBを増設
OS Windows XP Professional

本格的なゲームをすることがなかったので、オンボードグラフィックでずっとやってきていましたが、特にストレスなく利用できていました。
社会人になって、周囲はCore2 Duoみたいな高速CPUが出てきたにも関わらず、
まだいけると、2012年まで使っていました。

社会人~

Mac mini (Mid2007モデル) (2008~2010)

自作3 (2012~現在)

2012年になるとWindows XPを見る機会も少なくなってきて、時代遅れ感が出てきました。
ということで、ガンダムのゲームもやりたかったということもあって1台作りました。

ケース アビー smart J02R ピュアホワイト
CPU Intel Core i5-3570K(ivy bridge)
メモリ PC12000-DDR3 8GB
HDD IntelSSD 120GB + 自作2のストレージ
OS Windows 7 Ultimate

なおグラフィックはオンボードです。

Lenovo IdeaPad Flex 10 (2013~2015)

社外イベントなどに顔を出すようになって、ノートPCが無いと結構困ったので買った1台。
安くてOffice付きなのは良かったのですが、いかんせんスペックが低くて、作業時のストレスは大きかったです。
次のVAIOを買ったので数千円で売ってしまったけれど、売らずにOffice2013だけメインPCに流用させてもらえばよかった。
映像の外部出力がHDMIしかないのですが、RGBしか繋げないプロジェクタもまだ多くあるため、変換器を買ったりと、
結局あとからいろいろと出費しました。

VAIO 13 Pro mk2 (2015~現在)

現在の外への持ち出し用。
久々のVAIOです。15年ぶりくらいに戻ってきました。
ストレージはSSDなので快適です。
RGBとHDMIの両方が使えて、さらにLANポートもあるのでとても便利。
タッチパネル式にしたけれど、あまり使っていません。

男性で育児休業を取得しました(後編)

慣れない満員電車

育児休業を終えて、4月の第一週に一日だけ東京の事務所に出社しました。
年が明けてからは、歩くペースもずっと子供に合わせていたので、駅構内をせかせかと歩く人々とペースを合わせるのが大変でした。
4月と言えば新社会人をあちこちで見られますが、彼らを見て一目で新社会人だとわかるのは、彼らが真新しいスーツやカバンに身を包んでいるからというのもありますが、なんとなくのんびりしているというのもあるのかもしれない・・・
私自身の歩くペースが、新社会人らしき集団と一緒でもストレスなかったので、なんとなくそんなことを思いました。
そして電車の混雑も苦痛でした。
私はそこそこの遠方から都内まで通うので、私が乗車する駅ではまだ車内も空いていて必ず座れますが、ずっと座っていても電車が混んでくると普段感じない窮屈さを感じました。
昨年末まで普通に乗っていたのに。
慣れってすごいですね。

保育園送迎の日々

4月の最初2週間ほどは子供の慣らし保育期間でした。
そこで少し問題になったのが、その期間の保育園送迎をどうするか、ということです。
最初から十分な慣らし期間を考慮して休業期間を決めておけば問題にはならなかったのですが、育児休業期間が決まったのは2年前のことで、当時住んでいた町も今の町ではなかったので、充分考慮することができなかったというのが言い訳です。

そこで、3月初めに慣らし期間のスケジュールが明らかになった時点ですぐに上司に相談しました。
相談といっても、大筋は12月に総務部門も交えて話をつけていたので、在宅勤務と有休をどう使うかの確認程度でしたが。
私の場合は、会社制度上は4月1日から復職でしたので、慣らし保育は有休、半日有休、在宅勤務の組合せで乗り越えました。

保育園の送り迎えが終わるとまた子供と一緒の生活なので、気分はまだ育児休業の延長でした。

やっぱり体調を崩した

保育園に入園して4日目、さっそく子供が38.5度の高熱を出しました。
いろんな人から、保育園入園直後はすぐに体調を崩すよと言われていましたが、うちの子もすぐに洗礼を受けたようでした。
そこで2日間ほどお休み。
私は半日有休予定であったのを全日有休に切り替えたりして対応しました。
週明けには回復してまた通い始めましたが、その週末に、こんどはウイルス性胃腸炎にかかりました。
ということで、4月第三週にまた3日間ほど保育園をお休み。
ここは妻も有休を使って対処しました。
4月に私と妻とで使った有休は合わせて10日間以上でした。

仕事は順調?

そんな感じで、私自身4月は有休を8日間ほど使いましたが、私が携わるプロジェクトは、マネージャーさんが優秀で、私を当てにしないプロジェクト線表が作られていたので、なんとか回っている様子でした。
私のほうは線表を見て、当てにされていない感がひしひしと伝わってきて寂しい思いをしましたが、後から「すみません、有休ください」と言って、スケジュールを乱すほうがよほど迷惑なので、良かったのだと思います。
私自身の業務負荷もちょうど良いと感じられる程度でした。
ですが自分で気付くことができるほど、休業に入る前より仕事のパフォーマンスが落ちていました。
なので同じ1か月間でも、昨年12月と比べると半分程度の仕事しかしていないと思いますが、それでも体感ではちょうどよかったです。
人にもよりますが、作業計画時に、復職後1か月の仕事量が、休業前の半分くらいになるようにするとちょうど良いのかもしれません。

まとめ

同じような状況にある人がどのくらいいるかよくわかりませんが、実体験を経て、育児休業を取得するにあたって次のようなことに気を付けるべきと思いました。

前提条件

  1. 会社勤めである
  2. 勤めている会社に育児休業制度がある
  3. 勤めている会社は男性育休取得に積極的な姿勢を示している

気を付けるべきこと

  1. 取得前、なるべく早くに職場関係者に周知する
    • 上司だけでなく、同僚やチームメンバーにも伝えて、不在時の対応を細かく決めておくべきでしょう。
  2. 取得前に復職後の段取りを決めておく
    • 育休中に職場の関係者と細かいところを詰めていくのは面倒なので、大枠は育休取得前に決めておいたほうが良いです。
  3. 収入0円に備えておく
    • 普通に暮らしていれば問題ないと思います。
  4. 家事・育児の引継ぎを十分考慮した期間で申請する
    • 私は今回意図していなかったけど結果的に成功。子供は1か月間で充分父親のぎこちない育児に慣れてくれました。慣れるまでの期間の長さは、子供の性格や普段からの父親の育児関与度合いも影響するでしょう。
  5. 慣らし保育期間を十分考慮した期間で申請する
    • 私の今回の失敗。有休で乗り切ったけど、これからの子供の体調不良など考えると有休はもっと残しておきたかった。
  6. 復職後のために有休をできるだけ残しておく
    • 私は復職が年度の切り替わりだったので、問題はなかったです。
  7. 復職後の作業量は、取得前の半分くらいで計画しておく
    • 半分かどうかは人それぞれですが、数か月休んでパフォーマンスが落ちない人なんていないんじゃないかなぁという印象です。

男性で育児休業を取得しました(中編)

家族3人そろって生活

2017年1月は、おそらく今後一生ないのではないか、家族3人(私、妻、子供)がみんな外に出ず家庭にいる月になりました。
というのは、妻の職場復帰が2017年2月初めになったためです。
そして私は前編で書いたように期間変更ができなかった(正確には、できないと上司から聞かされたのでしようとしなかった)ので、予定通り1月から休業に入ったからです。

結果としては、家事や育児の引継ぎ期間に充てることができてちょうどよかったです。
親同士は1日もあれば引継ぎできますが、子供にとっては慣れるまでが大変で、時間がかかります。これまでお母さんと一緒にやっていたことが急にお父さんになって、そしてそれがぎこちなかったりすると、拒絶してしまうわけです。

後で述べますが無収入になるので、派手なことはしないで近所でおとなしくしていました。
1月にやったことはこんなことです。

  1. 外構DIY (昨年10月に引っ越したばかりで、それまで外構は放置状態でした)
  2. 公園めぐり
  3. 日帰り入浴旅行
  4. 遊園地(兼、妻の復職手続き)
  5. 誕生お祝い(子供はこの1月で3歳になった)

海外旅行なんかもいいかなと思いましたが、子供がまだ小さいので記憶に残らないのも可哀想ですし、やはりオムツの取れていない子供を連れていくのは面倒だったのでやめました。まぁ親都合です。(でも子供にとっては近くの公園の砂場もハワイのビーチもあまり変わりないでしょう。)

収入0円生活

さて私は会社制度の育児休業を使ったわけですが、子供がもう3歳なので、給料の半分ないし3分の2がもらえる育児休業給付金は対象外です。したがって会社からの収入は0円です。むしろ社会保険などは休業かどうかにかかわらず持っていかれるので、給与明細はマイナスでした。マイナスの給与明細を初めて見ました。
ただ公的なものとしては児童手当があり、個人的なものとしては投資による副収入がありました。とはいえ私自身投資は生活資金を稼ぐつもりではやっていないので、やはり生活のための収入としては児童手当のみです。

ということで贅沢な生活はできず、つつましく日々を過ごしていました。
でも日中は子供と一緒縛りがあるので、大人としては退屈なのですよね。
そんなこともあり、自然と公園に足を運ぶようになりました。

一日の様子

2月には妻も時短勤務ですが復職したので、平日の日中は基本的には子供と二人きりでした。
晴れの日はだいたいお出かけしました。雨の日は出かけずに家で遊ぶことが多かったです。
晴れの日のスケジュールはこんな感じでした。

6:00 起床
7:00 朝食、自分の時間 起床 起床
8:00 身支度 朝食&出勤 朝食&身支度
9:00 おでかけ おでかけ
10:00
11:00
12:00 昼食 昼食
13:00
14:00 帰宅 帰宅
15:00 昼寝 昼寝
16:00 おやつ おやつ
17:00 家事 帰宅 家遊び
18:00 夕食 夕食 夕食

おでかけした場所はこんなところです。東京方面へは電車に乗ることが多く、自宅周辺の目的地へは車か徒歩がほとんどでした。

  1. 東京のアミューズメントパーク(Youtubeを見て行きたいと言っていた場所に連れて行った)
  2. 東京の水族館(通勤定期券で行ける自宅から最も遠い場所)
  3. アスレチックと大きな滑り台のある公園(多数)
  4. 駅(子供が駅のエレベーター大好き)
  5. 近所の山(子供と一緒でも30分くらいで登れる簡単なハイキングコースが近所にあるのです)
  6. 近所の海(見るだけor足を入れる)
  7. 近所の警察署(私の免許更新のため)
  8. 近所?のショッピングモール
  9. 近所のホームセンター、スーパー、カーディーラー
  10. 病院
  11. 実家

昼食は最初外食が多かったのですが、毎回1000円以上かかるのが勿体なくなり、お弁当を用意するようになりました。

雨の日のスケジュールは、晴れの日のスケジュールの”おでかけ”が”家遊び”になったくらいです。
家遊びとしては、ビー玉転がし、プラレール、ボール投げ、カラオケ、絵本、積み木(LEGO、麻雀牌)、トランポリンなどをしていました。

反省としては、習い事とまではいかなくてもピアノを弾いたり、プールに入ったり・・・などは経験させてもよかったなぁということと、もっと同世代の子供たちと遊ぶ経験をさせたかった、というところです。
でもこのように子供と寄り添って一緒にいることで、どういうことが好きか嫌いか、得意か不得意か、など肌でわかるようになりました。平日会社勤めをしていて土日だけ子供と触れ合っていてもなかなか気づけなかったのではと思います。

子供の成長を間近で感じることができた

この時期の子供は放っておいても成長するものだとは思いますが、近くにいると、昨日はできなかったアスレチック遊具が今日はできた、などということが毎日のように見ることができて、日々楽しかったです。
私の子供の場合、私の育休中にこんなことができるようになりました。

  1. 子供向けアスレチック遊具のほとんど
  2. 簡単な英単語クイズ
  3. ひらがな単語を少し読む
  4. お友達との順番待ち(まだ苦手だけどマシになった)
  5. トイレ(日中はオムツをしていなくてもほとんど問題ない)
  6. ひとりで部屋で待つ
  7. 横断歩道の横断(できるとはいえ、怖いので一人きりにはしないが)
  8. キャッチボール
  9. 父と一緒に寝る

など多数

なかでも、これまで母親にべったりで、お風呂、昼寝、おやすみ、だいたいのことにおいてお母さんがいないとできなかったのが、お母さんがいなくてもできるようになったのは大きな成長だと思いました。
もっと小さいころから保育園などに預けられている子はその程度は当たり前かもしれません。

このエントリを書いている今はもう5月ですが、あっという間の3か月間でした。
子供の遊びに付き合うのは、日々同じことの繰り返しが多くてしんどいときもありますが、子供に新しい遊びを教えるとどんどん吸収するので、その点は次は何ができるようになるかなーと考える楽しみに変換して過ごしました。

復職準備について

さて3か月間の育児休業ですが、すっかりと仕事から遠ざかってしまって、ときおり流れてくるメールは見ていたのですが、何がなんだかさっぱりなのが実際のところでした。
ということで復職後1か月くらいはリハビリが必要な気がしていましたが、そんなに猶予はないんだろうなぁ・・・というのが心配事でした。
周囲の方々にはその辺のサポートをやんわりと期待していましたが、まずは自分が努力しないとですね。

私の場合は、4月初頭からすぐにフル勤務ということではなく、最初は在宅勤務や有休を行使しながら徐々に復帰という形をとることで上司とも話をしました。
というのは実は慣らし保育期間の都合のほうが大きいのですが、結果的にそれが良かったんだと思います。

男性で育児休業を取得しました(前編)

2017年1月から3月末までの3か月間、ホワイト企業に勤める私が、会社の制度を利用して育児休業をとったというお話です。
私は男性なので、男性育休というやつです。
育児休業をとる前、とっている間、とった後、それぞれ新しい経験ができたのでここに残しておこうと思います。
育児休業を取る前(2016年12月)までを前編、育児休業中を中編、復職後1か月間を後編として分けて書きます。

育児休業をとりたかった経緯

これは家庭それぞれでしょうけれど、私のケースを記します。
私には(投稿時)現在3歳の子供が1人います。
ずっと私の実家で、妻には育児休業をとってもらって育ててもらってきました。
しかし妻が連続で育児休業をとれる期間は会社制度で3年間までとなっています。
妻が育児休業をとれるのは最長で2017年の2月末まででした。
妻の職場が私の実家から遠く離れているということもあり、復職を前に職場に近い街に引っ越すことを検討し、実際に去年の10月に引っ越しました。
共働きになるので子供は保育園に入れる予定でいましたが、このご時世、なかなかすぐに預かってくれるところを見つけるのが難しいです。子供が3歳になる、2017年4月の入園を待つのが現実解でした。
ということになると、少なくとも3月の1か月間は妻以外の誰かが子供の面倒をみないといけません。
そこで、私も会社制度にある育児休業の制度を使おうと考えました。

育児休業の相談~休業の決定まで

上述の問題はかなり前から気にしていて、2015年の秋には上司に相談していました。
育児休業をとる1年以上前のことです。
その後上司の上司(部長)までエスカレーションされて、面談を経て、2015年の年末には期間(2017年1月~3月末)が決定しました。

と文章にしてしまうと、スムーズに事が運んだように感じられるかもしれませんが、実は少々私のほうが妥協をしています。
というのは私の所属する会社の規則によると、育児休業の申請は取得しようとする1か月前までで、さらに育休期間の変更は取得する前日まで可能というものであるにもかかわらず、面談した上司によると「期間はここで決めたらもう変えられない」ということでした。
その理由は、年度で決める人員予算の都合とのことでした。

と、これはあくまで私自身に降りかかった話ではあり、男性の育児休業の制度があるだけでもいいじゃないか、なんていう声もありそうですが、実際に育児休業の制度がある会社でも、このような”規則が現場の現状に馴染んでいない”と感じることがあるわけです。
そのあたりは、もし読者にこれから育児休業を取ろうとしている方がいたら、ぜひ気をつけてもらいたいと思います。

育児休業をとるまで

さて、育児休業をとることが決まりました。
そこからの勤務は別に普段と変わりありませんでしたが、休業間近の12月になると残業時間が通常の3倍程度になっていました。
女性ならば体調を気遣ったりして業務負荷を下げたりするのでしょうけれど、私の場合は逆に、3か月間いなくなるのだから休業に入る前までにできることは済ましていってね、というような空気の中で働きました。
自分が自身の業務量をコントロールできるような裁量のある立場ならば自己責任と言えますが、いまの職制上そういうことでもなかったので上司の落ち度もあったと考えます。

とはいえ、これも私中心の視点で書いた一方的な文章なので、これではまるで職場や上司が悪いというように捉えられてしまいそうです。
しかし結局休業に入る直前になって急激に負荷が高くなったのはなぜか?ということをいま振り返ると、負荷が高くなるまで私から上司や職場へのエスカレーションを十分していなかったというのが理由にあるように思います。
12月の初めに上司や関連するマネージャーに相談をしてからは、すぐにその後の業務量を調整してくれて、過負荷になることはありませんでした。
また、育児休業期間の1~3月に本来私が中心になって進めるべき仕事も、少ないリソースで動いているなか、なんとか割り当ててくれました。
さらには4月の復帰後の業務予定もかなり軽減してくれました。それは私の早退リスクの回避という意味合いもあるのでしょうけれど。(保育園入園直後は何かと園から呼び出されやすい)

組織の末端の作業員のような替えがいくらでもきく人でしたら心配する必要はありませんが、「俺がいないとオマエら何もできないじゃん」などと自分の替えがきかないと自負している人は、休業に入る前に急に負荷が高まらないよう、自身の調整だけでなく職場や上司への相談も早め早めにしておくとよいでしょう。

12月はごたごたしましたが、無事に生きて年明けを迎えることができました。
結局会社は12/29までが出勤日だったのですが、私自身は12/31まで(自宅からのアクセスではありますが)仕事をしていました。
(冒頭にも述べましたがうちはホワイト企業だと思います。)

さて、育児休業中のお話は中編に続きます。