<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>プログラミング on akky@サイボウズラボ・ブログ</title>
		<link>https://labs.cybozu.co.jp/blog/akky/tags/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0/</link>
		<description>Recent content in プログラミング on akky@サイボウズラボ・ブログ</description>
		<generator>Hugo</generator>
		<language>ja</language>
		
		
		
		
			<lastBuildDate>Wed, 29 Jun 2022 00:00:00 +0000</lastBuildDate>
		
			<atom:link href="https://labs.cybozu.co.jp/blog/akky/tags/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>hexyzland - 数式で六角形の図形表示を動かす遊び場サイト</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2022/06/playing-math-and-hex/</link>
				<pubDate>Wed, 29 Jun 2022 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2022/06/playing-math-and-hex/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://ptol.github.io/hexyzland/&#34;&gt;hexyzland&lt;/a&gt; は、六角形ベースの図形を6つの変数と数式で動かす、プログラミング実験場です。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://ptol.github.io/hexyzland/&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2022/06/playing-math-and-hex/hexyzland_hu_cc952e2ee41a9eb9.webp 480w, https://labs.cybozu.co.jp/blog/akky/2022/06/playing-math-and-hex/hexyzland_hu_dcb6835d5cbcd0fd.webp 700w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2022/06/playing-math-and-hex/hexyzland.png&#34; width=&#34;700&#34; height=&#34;791&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Hexyzland トップページ&lt;/p&gt;&#xA;&lt;p&gt;6つの変数は t(時間), r(中心からの距離), a(角度), x,y,z(3方向の座標) となっていて、各ヘックスの値を -1(真っ赤) から 1(真っ白)の間に変えることでヘックスのサイズと色が変わります。&lt;/p&gt;&#xA;&lt;p&gt;あとは数学的な関数を組み合わせればアニメーションのできあがり。チュートリアルにたくさんの実例が出ています。&lt;/p&gt;&#xA;&lt;p&gt;作成した図形は URL が生成されるので &lt;a href=&#34;https://ptol.github.io/hexyzland/#sin%28t%2Ba%2F30%2Br%258%29&#34;&gt;SNS 等で共有すること&lt;/a&gt;もできますし、動いているところを動画として保存することもできます。&lt;/p&gt;&#xA;&lt;p&gt;http://localhost:8099/wp-content/uploads/2022/06/hexyzland.webm&lt;/p&gt;&#xA;&lt;p&gt;GitHub に&lt;a href=&#34;https://github.com/ptol/hexyzland&#34;&gt;サイトのソースコードも公開&lt;/a&gt;されています。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://tixy.land/&#34;&gt;tixyland&lt;/a&gt; という正方形ベースの&lt;a href=&#34;https://twitter.com/aemkei/status/1323399877611708416&#34;&gt;同様の遊び場&lt;/a&gt;があり、hexyzland はそれにインスパイアされたものだそうです。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://tixy.land/&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2022/06/playing-math-and-hex/tixyland-top_hu_24f08c49dc8e97c3.webp 340w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2022/06/playing-math-and-hex/tixyland-top.png&#34; width=&#34;340&#34; height=&#34;467&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;tixy.land トップページ&lt;/p&gt;&#xA;&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;A collection of colorful examples from &lt;a href=&#34;https://t.co/664X7G2TH2&#34;&gt;https://t.co/664X7G2TH2&lt;/a&gt;:&lt;br&gt;&lt;br&gt;// sin cos sin cos sin cos&lt;br&gt;// by &lt;a href=&#34;https://x.com/inky?ref_src=twsrc%5Etfw&#34;&gt;@inky&lt;/a&gt; &lt;br&gt;(t,i,x,y)=&amp;gt;&lt;br&gt;((x^y)%2?sin:cos)(t)&lt;a href=&#34;https://t.co/fp20uLGg2Z&#34;&gt;https://t.co/fp20uLGg2Z&lt;/a&gt; &lt;a href=&#34;https://t.co/ymY0kg6hCl&#34;&gt;pic.twitter.com/ymY0kg6hCl&lt;/a&gt;&lt;/p&gt;&amp;mdash; Martin Kleppe (@aemkei) &lt;a href=&#34;https://x.com/aemkei/status/1326637580486578177?ref_src=twsrc%5Etfw&#34;&gt;November 11, 2020&lt;/a&gt;&lt;/blockquote&gt;&#xA;&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&#xA;&#xA;&#xA;&lt;p&gt;via reddit/programming&lt;/p&gt;</description>
			</item>
			<item>
				<title>Load of the Codes - プログラマ向けテキストアドベンチャーゲーム(序章)</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2022/01/load-of-the-codes/</link>
				<pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2022/01/load-of-the-codes/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://www.lordofthecodes.com/&#34;&gt;Lord Of The Codes&lt;/a&gt; は、RPG風の中世世界を舞台にしたテキストアドベンチャーゲーム。パズルを解くことで先へと進むゲームです。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.lordofthecodes.com/&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2022/01/load-of-the-codes/lordofthecodes-top_hu_23b11493fa669569.webp 466w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2022/01/load-of-the-codes/lordofthecodes-top.png&#34; width=&#34;466&#34; height=&#34;214&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;偉大な魔術師コナルド・ドゥヌース(Konald Dnuth。どっかで聞いたような名前)と組んで迷宮を進むあなたは、物語の中に出てくるヒントから、謎を解いて入力し、正解することで先へ進むことができます。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2022/01/load-of-the-codes/lordofthecodes-level0.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2022/01/load-of-the-codes/lordofthecodes-level0_hu_570446062db097c3.webp 480w, https://labs.cybozu.co.jp/blog/akky/2022/01/load-of-the-codes/lordofthecodes-level0_hu_92f89bbb815fdf93.webp 754w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2022/01/load-of-the-codes/lordofthecodes-level0.png&#34; width=&#34;754&#34; height=&#34;687&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;ページには&lt;a href=&#34;https://replit.com/&#34;&gt;Replit&lt;/a&gt;による Python インタプリタ環境が埋め込まれていて、これを使って謎を解いても構いません。手元で他の言語で解いても、あるいは暗算(!)で解いても、正答さえ入れれば先へ進むことができます。&lt;/p&gt;&#xA;&lt;p&gt;現在、2問答えるともうゲームは行き止まりで、メール登録フォームが案内されます。登録すると完全版が公開された際に優先で案内されるみたいです。&lt;/p&gt;&#xA;&lt;p&gt;ずいぶん初期の段階で公開したものだな、と思いますが、反響があればこの先が作られやすいかもしれませんね。&lt;/p&gt;&#xA;&lt;p&gt;via reddit&lt;/p&gt;</description>
			</item>
			<item>
				<title>CodeCaptcha - プログラマーだけを通すための CAPTCHA サービス</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2022/01/code-captcha/</link>
				<pubDate>Wed, 19 Jan 2022 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2022/01/code-captcha/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://www.codecaptcha.io/&#34;&gt;CodeCaptcha.io&lt;/a&gt; は、文字通り Code で CAPTCHA させるためのサービスです。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.codecaptcha.io/&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2022/01/code-captcha/codecaptcha-io-top_hu_116b60f477293e7.webp 480w, https://labs.cybozu.co.jp/blog/akky/2022/01/code-captcha/codecaptcha-io-top_hu_7b85d1cb6f49d4d0.webp 496w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2022/01/code-captcha/codecaptcha-io-top.png&#34; width=&#34;496&#34; height=&#34;472&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;webサービスの利用や登録時に、プログラム(bot)による不正な自動投稿や大量の連続投稿・いやがらせなどを防ぐため、人間でないとできない入力を要求する CAPTCHA 、一番よく見かけるのはグネグネと曲げられたりした文字列を入力するものだと思います。&lt;/p&gt;&#xA;&lt;p&gt;一般的なCAPTCHA の目的はbot を弾いて人間を通す関所のような役目ですが、CodeCaptcha では、この通行資格を人間ではなくプログラマ、あるいは少なくともプログラミングが多少わかる人、としているわけです。&lt;/p&gt;&#xA;&lt;p&gt;デモで出てくるプログラムはこちら。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2022/01/code-captcha/codecaptcha-io-demo.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2022/01/code-captcha/codecaptcha-io-demo_hu_7c0a76b26dd522d3.webp 480w, https://labs.cybozu.co.jp/blog/akky/2022/01/code-captcha/codecaptcha-io-demo_hu_a7acb6802a4642da.webp 615w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2022/01/code-captcha/codecaptcha-io-demo.png&#34; width=&#34;615&#34; height=&#34;364&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;「プログラマといったって、道具も言語も人によってバラバラだろうし、どんな問題が出るのか?」と思いましたが、言語は JavaScript です。特にweb系のプログラマ向けなら妥当な選択ですね。そして、その中身もこれぐらいなら他言語しか知らないプログラマでも問題ないかと。&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;function isEvenNumber(num) { return false; // Fix this }&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;// Fix this とあるように、関数名の意図にあうような結果を出すようにこのプログラムを直せばいいんですね。&lt;/p&gt;&#xA;&lt;p&gt;コードを書き換えるにつれて、リアルタイムでテスト結果が下部に表示されます。&lt;/p&gt;&#xA;&lt;p&gt;テストが通るように修正を終えると、PASSED となり、設定された目的の画面に移行します。&lt;/p&gt;&#xA;&lt;p&gt;問題はリロードのたびに違うものが出てきますが、どれも非常に簡単なレベルのものです。&lt;/p&gt;&#xA;&lt;p&gt;これについては、今後リンク作成時に問題の難易度を選べるようにしたいということですので、うんうんうなって時間を掛けないと解けない CodeCaptcha も使えるようになるかもしれません。&lt;/p&gt;&#xA;&lt;p&gt;「リンクをシェアしたいけれど、シェアする相手はプログラマに限定したい」時などに使ってください、ということでした。&lt;/p&gt;&#xA;&lt;p&gt;via &lt;a href=&#34;https://news.ycombinator.com/&#34;&gt;Hacker News&lt;/a&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>yare.io - JavaScript で艦隊を動かし戦わせるゲーム</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2021/06/yare-io-space-battle-by-javascript/</link>
				<pubDate>Wed, 02 Jun 2021 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2021/06/yare-io-space-battle-by-javascript/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://yare.io/&#34;&gt;yare.io&lt;/a&gt; は、Javascriptプログラムを書いて宇宙戦を戦わせるwebサービスです。&lt;/p&gt;&#xA;&lt;p&gt;ゲームは一対一の戦い、スピリット(spirit)というユニットを操作して、自分の基地を守りつつ敵の基地を破壊することが勝利条件です。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2021/06/yare-io-space-battle-by-javascript/yare-io-fleets-battle.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2021/06/yare-io-space-battle-by-javascript/yare-io-fleets-battle_hu_dd1aa7d42ae137d7.webp 480w, https://labs.cybozu.co.jp/blog/akky/2021/06/yare-io-space-battle-by-javascript/yare-io-fleets-battle_hu_301fe4486e1c951d.webp 579w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2021/06/yare-io-space-battle-by-javascript/yare-io-fleets-battle.png&#34; width=&#34;579&#34; height=&#34;586&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;操作して、と言いましたがマウスなどで直接操作するわけではなく、JavaScript でスピリットがどのように振舞うかをプログラミングし、フィールドに投入して戦わせます。&lt;/p&gt;&#xA;&lt;p&gt;チュートリアルがあるので、通しでやってみました。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2021/06/yare-io-space-battle-by-javascript/yare-io-attacking-enemy-baae-on-tutorial.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2021/06/yare-io-space-battle-by-javascript/yare-io-attacking-enemy-baae-on-tutorial_hu_4658a29923936d47.webp 480w, https://labs.cybozu.co.jp/blog/akky/2021/06/yare-io-space-battle-by-javascript/yare-io-attacking-enemy-baae-on-tutorial_hu_e09eb948cd09d96f.webp 768w, https://labs.cybozu.co.jp/blog/akky/2021/06/yare-io-space-battle-by-javascript/yare-io-attacking-enemy-baae-on-tutorial_hu_f9e73892f6903533.webp 1460w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2021/06/yare-io-space-battle-by-javascript/yare-io-attacking-enemy-baae-on-tutorial.png&#34; width=&#34;1460&#34; height=&#34;756&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;基地の最寄りの恒星でエネルギーを補給させ、それを基地へと持ち帰らせます。&lt;/p&gt;&#xA;&lt;p&gt;エネルギーをある程度運びこむと、基地から新しいユニット(スピリット)が誕生するので、自分のすべてのユニットを配列で回し、使えるユニットを増やしていきます。&lt;/p&gt;&#xA;&lt;p&gt;自給ができるようになったら、一定範囲を索敵し、攻めてきた敵のスピリッツからエネルギーを奪うことで撃破します。チュートリアルではここまで。&lt;/p&gt;&#xA;&lt;p&gt;この後は実際の戦闘フィールドに参加します。他のユーザーを待つこともできますが、相手が見つからない時や練習用に bot のプレイヤーも用意されています。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2021/06/yare-io-space-battle-by-javascript/yare-io-akky-vs-bot.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2021/06/yare-io-space-battle-by-javascript/yare-io-akky-vs-bot_hu_17533799761d089.webp 480w, https://labs.cybozu.co.jp/blog/akky/2021/06/yare-io-space-battle-by-javascript/yare-io-akky-vs-bot_hu_7d0ac141fdfa92d.webp 535w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2021/06/yare-io-space-battle-by-javascript/yare-io-akky-vs-bot.png&#34; width=&#34;535&#34; height=&#34;582&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;試しに増やした艦隊の半分を敵の基地へ送るプログラムを書き投入してみたのですが、待ち受ける敵の艦隊に各個撃破されてしまい散々でした。チュートリアルから実戦に行くには、もう少し凝ったプログラムを作らないといけなさそうです。&lt;/p&gt;&#xA;&lt;p&gt;ゲームシステムはまだまだ荒く、スピリットの種類やルール、使える関数もこれから増えていくそうです。Discord チャンネルで作者や他プレイヤーと雑談することができ、現在の制限事項や今後の予定などについて知ることができます。&lt;/p&gt;</description>
			</item>
			<item>
				<title>Oh My Git! - git の使い方を学べるゲーム</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2021/02/oh-my-git-learning-game/</link>
				<pubDate>Wed, 24 Feb 2021 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2021/02/oh-my-git-learning-game/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://ohmygit.org/&#34;&gt;Oh My Git!&lt;/a&gt; は、バージョン管理ツール git の使い方を学ぶためのゲームです。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://ohmygit.org/&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2021/02/oh-my-git-learning-game/oh-my-git_hu_4257690d981cc96d.webp 480w, https://labs.cybozu.co.jp/blog/akky/2021/02/oh-my-git-learning-game/oh-my-git_hu_9d48ab1ee8d04259.webp 768w, https://labs.cybozu.co.jp/blog/akky/2021/02/oh-my-git-learning-game/oh-my-git_hu_292b1f274d7829b0.webp 2001w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2021/02/oh-my-git-learning-game/oh-my-git.png&#34; width=&#34;2001&#34; height=&#34;1587&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;中央にgitツリーのグラフが表示され、手元にはgitコマンドを表すカードが配られます。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2021/02/oh-my-git-learning-game/oh-my-git-git-init.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2021/02/oh-my-git-learning-game/oh-my-git-git-init_hu_45e59929208fd467.webp 480w, https://labs.cybozu.co.jp/blog/akky/2021/02/oh-my-git-learning-game/oh-my-git-git-init_hu_2d823c63dd18f47a.webp 768w, https://labs.cybozu.co.jp/blog/akky/2021/02/oh-my-git-learning-game/oh-my-git-git-init_hu_83feb14a0bd1c01d.webp 981w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2021/02/oh-my-git-learning-game/oh-my-git-git-init.png&#34; width=&#34;981&#34; height=&#34;467&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;カードを使わずに右側のターミナルでコマンドライン操作することも可能。お題で出てきた課題を満たすためのカード/コマンドを正しく実行すると、右側の達成項目が緑に反転し、すべて達成すればそのレベルはクリアです。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2021/02/oh-my-git-learning-game/oh-my-git-first-commit.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2021/02/oh-my-git-learning-game/oh-my-git-first-commit_hu_bf47d770b505185e.webp 480w, https://labs.cybozu.co.jp/blog/akky/2021/02/oh-my-git-learning-game/oh-my-git-first-commit_hu_a5f24dd075e8b334.webp 768w, https://labs.cybozu.co.jp/blog/akky/2021/02/oh-my-git-learning-game/oh-my-git-first-commit_hu_5acf103184e6632a.webp 1389w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2021/02/oh-my-git-learning-game/oh-my-git-first-commit.png&#34; width=&#34;1389&#34; height=&#34;880&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;commit を指定し、そこにカードを捨てることでカード上のコマンドを適用。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2021/02/oh-my-git-learning-game/oh-my-git-merge.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2021/02/oh-my-git-learning-game/oh-my-git-merge_hu_1cb9014f99347b4c.webp 480w, https://labs.cybozu.co.jp/blog/akky/2021/02/oh-my-git-learning-game/oh-my-git-merge_hu_d5a63107b355465e.webp 768w, https://labs.cybozu.co.jp/blog/akky/2021/02/oh-my-git-learning-game/oh-my-git-merge_hu_7fcf74563d1279d7.webp 1072w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2021/02/oh-my-git-learning-game/oh-my-git-merge.png&#34; width=&#34;1072&#34; height=&#34;814&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;levels にあるステージ一覧から、好きな項目について遊ぶことが可能です。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2021/02/oh-my-git-learning-game/oh-my-git-stages-list.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2021/02/oh-my-git-learning-game/oh-my-git-stages-list_hu_117d36c5c1ccb6c5.webp 480w, https://labs.cybozu.co.jp/blog/akky/2021/02/oh-my-git-learning-game/oh-my-git-stages-list_hu_f8482b0929213439.webp 606w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2021/02/oh-my-git-learning-game/oh-my-git-stages-list.png&#34; width=&#34;606&#34; height=&#34;756&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;カードを使っても解けますが、コマンドラインで解くと右端のボックスを黄色にすることができます。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/git-learning-game/oh-my-git&#34;&gt;ソースコードは GitHub で公開&lt;/a&gt;されていて、バイナリ版も &lt;a href=&#34;https://blinry.itch.io/oh-my-git&#34;&gt;Windows, MacOS, Linux 向けに提供&lt;/a&gt;されています。&lt;/p&gt;&#xA;&lt;!-- Legacy embedded HTML preserved:&#xA;&lt;iframe src=&#34;https://itch.io/embed/808810&#34; height=&#34;167&#34; width=&#34;552&#34; frameborder=&#34;0&#34;&gt;&lt;a href=&#34;https://blinry.itch.io/oh-my-git&#34;&gt;Oh My Git! by blinry, bleeptrack&lt;/a&gt;&lt;/iframe&gt;&#xA;--&gt;&#xA;&lt;p&gt;テキストファイルで新たなlevelを自作することも可能で、必要な学習項目が無ければ追加することもできるようです。&lt;/p&gt;</description>
			</item>
			<item>
				<title>1978年のチェスアプリSargonを現代に蘇らせるプロジェクト</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2020/08/1978-chess-program-from-z80-to-x86/</link>
				<pubDate>Fri, 21 Aug 2020 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2020/08/1978-chess-program-from-z80-to-x86/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://github.com/billforsternz/retro-sargon&#34;&gt;billforsternz/retro-sargon&lt;/a&gt; は、Intel 8080/Zailog Z80 で1978年に書かれた Sargon というチェスプログラムを、x86 に移植するという個人プロジェクトです。&lt;/p&gt;&#xA;&lt;p&gt;参考までに、こちらは1983年に発売された&lt;a href=&#34;https://www.youtube.com/watch?v=m-oYQP5qZMs&#34;&gt;Commodore 64版 Sargon 2&lt;/a&gt; の画像。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2020/08/1978-chess-program-from-z80-to-x86/sargon-2-commodore-64-1983.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2020/08/1978-chess-program-from-z80-to-x86/sargon-2-commodore-64-1983_hu_d6845519b0a0bee6.webp 480w, https://labs.cybozu.co.jp/blog/akky/2020/08/1978-chess-program-from-z80-to-x86/sargon-2-commodore-64-1983_hu_fad40b7e6418877d.webp 700w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2020/08/1978-chess-program-from-z80-to-x86/sargon-2-commodore-64-1983.png&#34; width=&#34;700&#34; height=&#34;479&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Z80のエミュレーターで動かすのではなく、Z80ベースのプログラムをx86(32bit)に変換しています。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2020/08/1978-chess-program-from-z80-to-x86/sargon-on-tarrasch.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2020/08/1978-chess-program-from-z80-to-x86/sargon-on-tarrasch_hu_6877a135762c040b.webp 480w, https://labs.cybozu.co.jp/blog/akky/2020/08/1978-chess-program-from-z80-to-x86/sargon-on-tarrasch_hu_a3ba52018c2f5ca7.webp 768w, https://labs.cybozu.co.jp/blog/akky/2020/08/1978-chess-program-from-z80-to-x86/sargon-on-tarrasch_hu_a08c3283b01cd46c.webp 809w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2020/08/1978-chess-program-from-z80-to-x86/sargon-on-tarrasch.png&#34; width=&#34;809&#34; height=&#34;538&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;x86 に移植された Sargon は、&lt;a href=&#34;http://triplehappy.com/Home.html&#34;&gt;Chess GUI&lt;/a&gt; にこのエンジンをセットすることで対戦できるということです。作者おすすめのTarrasch Chess GUI を使って対戦してみました。&lt;/p&gt;&#xA;&lt;p&gt;チェスでは人間が遊んだりコンピューター同士の対戦を表示するためのGUI部分が規格化(UCI)されているのですね。エンジンとGUIを別々にいろいろな人が開発していて、組み合わせて対戦させたり、人間が遊んだりできる。&lt;/p&gt;&#xA;&lt;p&gt;オリジナルのSargon では探索の深さが最大で6に決められていたそうですが、移植後は最大で20階層に、状況に応じて読みの深さを自動で調整するようにしたとのこと。CPUの速さや使えるメモリ量が、昔のコードそのままでもずっと強いプログラムに変化させたわけです。&lt;/p&gt;&#xA;&lt;p&gt;作者の @billforsternz 氏は、8080→x86のコンバーターと、8080→Z80→x86のコンバーターの二つを作り、変換結果が等しくなることを確認もしているということ。オリジナルの8080のコードに対する不満点から、Z80 に変換したものを起点としたいようなことも書かれています。当時のCPUの解説の中ではNECのV20などにも言及されています。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/billforsternz/retro-sargon&#34;&gt;Readme&lt;/a&gt; に書かれた詳細がとにかく細かく、作者のこだわりが感じられます。Sargon はアセンブラ的にもメモリ利用の点でも変換しやすい作りだということ。他の色々な8080/Z80のプログラムが同様に移行できるわけではないかもしれませんが、愛着のある昔のプログラムがある人は、趣味としてこういう遊び方もあるんですね。&lt;/p&gt;&#xA;&lt;p&gt;via Hacker News&lt;/p&gt;</description>
			</item>
			<item>
				<title>正しい(イギリス)英語でCSSが書けるプラグイン</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2020/05/css-property-in-proper-english/</link>
				<pubDate>Thu, 21 May 2020 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2020/05/css-property-in-proper-english/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://github.com/jevakallio/css-properly&#34;&gt;jevakallio/css-properly&lt;/a&gt; は、正しい英語でCSSを書くことができる&lt;a href=&#34;https://github.com/postcss/postcss&#34;&gt;PortCSS&lt;/a&gt;のプラグインです。&lt;/p&gt;&#xA;&lt;p&gt;CSS の整形やトランスパイルを行う PortCSS にこのプラグインを入れて呼び出すことで、以下のように&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;code&gt;.foo { colour: black; background-colour: lightgrey; text-align: centre; }&lt;/code&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;色指定を&amp;quot;colour&amp;quot;、中央寄せを&amp;quot;centre&amp;quot;などと、「正しい」英語で書いても、&amp;ldquo;color&amp;rdquo;, &amp;ldquo;center&amp;rdquo; など、正しくないけどなぜか受け入れられる文字列に修正してくれます。&lt;/p&gt;&#xA;&lt;p&gt;他にも、あなたの大好きなクマ padding-ton(パディントン)を padding-top に、表記は変わりませんがゼットインデックス(z-index)をズィーインデックス(z-index)に、など直してくれます。ラブリーですね!&lt;/p&gt;</description>
			</item>
			<item>
				<title>abbreviate - 英単語の省略形を機械的に決めてくれるツール</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2019/12/tool-gives-you-identical-abbreviations/</link>
				<pubDate>Fri, 06 Dec 2019 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2019/12/tool-gives-you-identical-abbreviations/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://github.com/dnnrly/abbreviate&#34;&gt;dnnrly/abbreviate&lt;/a&gt; は、英単語を決まった規則で省略してくれるという、単機能のツールです。&lt;/p&gt;&#xA;&lt;p&gt;Goで書かれていて、フルに書いた複数の英単語の並びを、内蔵の辞書で決まっている短縮形に置き換えます。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2019/12/tool-gives-you-identical-abbreviations/abbreaviate-change-owner.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2019/12/tool-gives-you-identical-abbreviations/abbreaviate-change-owner_hu_1e21cfbf2cb13d96.webp 480w, https://labs.cybozu.co.jp/blog/akky/2019/12/tool-gives-you-identical-abbreviations/abbreaviate-change-owner_hu_ea4499ff2390c943.webp 609w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2019/12/tool-gives-you-identical-abbreviations/abbreaviate-change-owner.png&#34; width=&#34;609&#34; height=&#34;241&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;指定によってキャメルケース、パスカルケース、スネークケースなどにもしてくれます。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/dnnrly/abbreviate/blob/master/data/en-us/common&#34;&gt;辞書ファイル&lt;/a&gt;に定義されていない単語は出ないため、実用にするにはもっと辞書の拡張が必要かなとも思います。&lt;/p&gt;&#xA;&lt;p&gt;僕は基本的には省略形の利用に反対なのですが、プログラミング言語や環境によっては、命名に文字数の上限があるものもあるでしょう。abbreviateコマンドの作者は、AWSのリソース名をつける際に上限が問題になることが多くてこのツールを思いついたということです。&lt;/p&gt;&#xA;&lt;p&gt;省略を多用するプログラマーやそのチームにおいて、元の英単語が必ずこの省略形になる、という保証をツールでするのであれば、ツールを使わないよりはずっと良いのかなとも思いました。&lt;/p&gt;&#xA;&lt;p&gt;via &lt;a href=&#34;https://news.ycombinator.com/item?id=18585237&#34;&gt;Hacker News&lt;/a&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>[動画] よくあるプログラミング・チュートリアル動画</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2019/10/typical-programming-tutorial-video/</link>
				<pubDate>Fri, 04 Oct 2019 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2019/10/typical-programming-tutorial-video/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=MAlSjtxy5ak&#34;&gt;Every programming tutorial&lt;/a&gt; は、YouTube上にあまたある、残念なプログラミングチュートリアルを再現したパロディ動画です。&lt;/p&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;&#x9;&#x9;&#x9;&lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/MAlSjtxy5ak?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;&#x9;&#x9;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;たった28秒の動画で、17秒あたりにすごい進捗がありますが…&lt;/p&gt;&#xA;&lt;p&gt;喋り方とか構成とか、ちゃんとしたチュートリアル動画を作るのって結構たいへんですよね。&lt;/p&gt;</description>
			</item>
			<item>
				<title>Toodles - ソースコード内コメント中の ToDo を集めてやるべきTodoリストを一覧、更新できるwebツール</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2018/10/toodles-updates-todo-list-from-source-code-comments/</link>
				<pubDate>Fri, 26 Oct 2018 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2018/10/toodles-updates-todo-list-from-source-code-comments/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://github.com/aviaviavi/toodles&#34;&gt;Toodles&lt;/a&gt; は、ソースコード中に書かれたコメントの ToDo を収集し、次やるべきことを可視化してくれるというオープンソースのwebアプリです。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2018/10/toodles-updates-todo-list-from-source-code-comments/toodle-screenshot.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2018/10/toodles-updates-todo-list-from-source-code-comments/toodle-screenshot_hu_5be627383c2f2fea.webp 480w, https://labs.cybozu.co.jp/blog/akky/2018/10/toodles-updates-todo-list-from-source-code-comments/toodle-screenshot_hu_1ec6c37a52c879f7.webp 768w, https://labs.cybozu.co.jp/blog/akky/2018/10/toodles-updates-todo-list-from-source-code-comments/toodle-screenshot_hu_c78634bfa9c5ae72.webp 926w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2018/10/toodles-updates-todo-list-from-source-code-comments/toodle-screenshot.png&#34; width=&#34;926&#34; height=&#34;388&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;ツール自身への入力として、Toodles 自体のソースコードを使いましたが、それとは別に適当なソースコードに ToDo コメントを仕込んで、一緒に読ませてみました。&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;var MAX_HEIGHT = 320; var SQUARE_SIZE = 150; var thumbnailBucket = process.env.DESTINATION_BUCKET_NAME;  // TODO (hoge|p=8|#js|#test|#newTag) - アレをナニしないといけない exports.handler = function(event, context, callback) { var originalBucket = event.Records[0].s3.bucket.name; var key = event.Records[0].s3.object.key;&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;ソースコードとして指定したディレクトリ以下で、対応しているプログラミング言語(readme に一覧が載っていますが、主要なプログラミング言語やシェルスクリプト、yamlファイルなどをサポートしています)のファイルをすべて解析して、ToDo リストを更新してくれます。&lt;/p&gt;&#xA;&lt;p&gt;また、Webアプリ側からもToDo を消したり、優先度やタグなどを更新したりでき、その結果は元のソースコード側にもちゃんと反映されます。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2018/10/toodles-updates-todo-list-from-source-code-comments/toodle-edit-todo.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2018/10/toodles-updates-todo-list-from-source-code-comments/toodle-edit-todo_hu_e78a959517e61562.webp 480w, https://labs.cybozu.co.jp/blog/akky/2018/10/toodles-updates-todo-list-from-source-code-comments/toodle-edit-todo_hu_d63435a1025ba08.webp 768w, https://labs.cybozu.co.jp/blog/akky/2018/10/toodles-updates-todo-list-from-source-code-comments/toodle-edit-todo_hu_106992f2e8443fba.webp 910w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2018/10/toodles-updates-todo-list-from-source-code-comments/toodle-edit-todo.png&#34; width=&#34;910&#34; height=&#34;462&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;コメント内の ToDo の表記で、担当者、タグ、優先度などとコメントを書くことができ、webアプリ上ではそれらを使って ToDo を絞り込んだり、ソートしたりもできます。&lt;/p&gt;&#xA;&lt;p&gt;Toodles は Haskell で書かれていて、GitHub でソースコードが公開されています。&lt;/p&gt;</description>
			</item>
			<item>
				<title>voicecoder.net - Alexaの音声でカスタマイズできるゲーム</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2018/09/voicecoder-net-voice-customized-game-using-alexa/</link>
				<pubDate>Fri, 28 Sep 2018 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2018/09/voicecoder-net-voice-customized-game-using-alexa/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://voicecoder.net/&#34;&gt;Voice Coder&lt;/a&gt;、「音声でコーディングを学ぼう」とあるこのプロジェクトは、Amazon Alexa を使って初歩のプログラミングを学べる、というサービス/スキルです。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=JED4TVYvoEQ&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2018/09/voicecoder-net-voice-customized-game-using-alexa/voice-coder-game_hu_d2568bdbb771418c.webp 480w, https://labs.cybozu.co.jp/blog/akky/2018/09/voicecoder-net-voice-customized-game-using-alexa/voice-coder-game_hu_7ccee6efb5806e17.webp 739w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2018/09/voicecoder-net-voice-customized-game-using-alexa/voice-coder-game.png&#34; width=&#34;739&#34; height=&#34;538&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Alexa スキルと連動させたブラウザゲームにおいて、横スクロールゲームで背景画像を切り替えたり、自機が地面や障害物、アイテムと衝突した際に起こるイベントを切り替えたり(ライフが減る、音が鳴る、ポイントが増える、など)を、音声で指示することができます。&lt;/p&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;&#x9;&#x9;&#x9;&lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/JED4TVYvoEQ?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;&#x9;&#x9;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;と、動画のデモでは動いているのですが、実際に自分で使おうとすると、Alexaスキルがうまく動いていないのか、アクセスコードを話してくれず、自分でプログラミングを試すことはできませんでした。&lt;/p&gt;&#xA;&lt;p&gt;元のゲームのパラメータを音声で変えられる、と言ってしまえばそれだけで、「音声でプログラミング」は言い過ぎかもしれません。ですが、スマートフォンで文字を書いたり、パソコンでキーボードを打ったりすることが身についてない小さな子供でも、このような音声インタフェースなら使うことができます。ゲームもプログラムで動いていて、それを変更することができるんだ、という体験をさせるにはいいのかもしれません。&lt;/p&gt;&#xA;&lt;p&gt;via Hacker News&lt;/p&gt;</description>
			</item>
			<item>
				<title>コンピューター無しで子供にプログラミング体験させるキット</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2018/04/programming-experiences-on-paper/</link>
				<pubDate>Fri, 13 Apr 2018 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2018/04/programming-experiences-on-paper/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2018/04/programming-experiences-on-paper/space-race-game-site.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2018/04/programming-experiences-on-paper/space-race-game-site_hu_41c2737ff9d94963.webp 480w, https://labs.cybozu.co.jp/blog/akky/2018/04/programming-experiences-on-paper/space-race-game-site_hu_498753e4652eed0c.webp 768w, https://labs.cybozu.co.jp/blog/akky/2018/04/programming-experiences-on-paper/space-race-game-site_hu_b34d30268f815fa8.webp 998w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2018/04/programming-experiences-on-paper/space-race-game-site.png&#34; width=&#34;998&#34; height=&#34;629&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;Space Race Game for Student&lt;/a&gt;は、印刷して使えるプログラミング体験キットです。&lt;/p&gt;&#xA;&lt;p&gt;地球や月、人工衛星や宇宙人の駒と、「進め」「左折」「n回繰り返す」「もし□なら」といった命令パーツが一枚の紙にカラーでデザインされていて、切り離して使います。&lt;/p&gt;&#xA;&lt;p&gt;碁盤上のボードに駒を配置し、たとえば「地球から月へ、宇宙船などにぶつからずに行く」みたいな問題を出し、それを命令パーツを組み合わせて実行するゲームとなっています。簡単な問題を出し、審判をしてあげれば、すぐに子供同士で遊べるようになるのではないでしょうか。&lt;/p&gt;&#xA;&lt;p&gt;子供向けのロボット/プログラミング教育の研究会に子供を連れて行ったことがあり、そこでいろいろなロボットを体験させてもらったのですが、その中にはこのキットの内容とほぼ同じことを実際のロボットで実行するというものもありました。&lt;/p&gt;&#xA;&lt;p&gt;ロボットの上に命令ブロックを差し込んで並べる形でプログラミングをし、大きなボードの上で動かして障害物を避けられるか確認する、といったものです。&lt;/p&gt;&#xA;&lt;p&gt;うちの子も楽しく遊んでいて、もし買ってもらえるとなれば間違いなく喜んだことでしょう(教育の研究会なので販売とかはしていなかった)。ただ、このロボットでできるプログラミングの複雑さを考えると、買って家に置いたとしてもそう長いことは遊べないかな、と。おもちゃとしては高価なので、科学館や児童館などに有って、順番にいろんな子供が体験でき、指導できる大人もついていればいいのかなと感じました。&lt;/p&gt;&#xA;&lt;p&gt;価格の面からいえば、このような紙のキットで、プリンターの印刷代だけでほぼ同じことはできますね。プログラミングというものを体験してもらう最初の最初、子供がそっち方面に興味がありそうかどうかを見るのにいいかなと思いました。&lt;/p&gt;</description>
			</item>
			<item>
				<title>一番セキュアなプログラムは、書かないことだ</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2018/02/the-most-secured-code/</link>
				<pubDate>Thu, 08 Feb 2018 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2018/02/the-most-secured-code/</guid>
				<description>&lt;p&gt;書かなければバグも出ない、は真理で、コードの量で生産性を測ることが間違ってることの何よりの証拠ですね。GitHub で公開されて大人気となっている &lt;a href=&#34;https://github.com/kelseyhightower/nocode&#34;&gt;nocode&lt;/a&gt;は、そんな最高の手段を表現したソフトウェアです。&lt;/p&gt;&#xA;&lt;p&gt;当初公開されたファイルは、以下の3つ&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;README.md&lt;/li&gt;&#xA;&lt;li&gt;LICENSE (Apacheライセンス)&lt;/li&gt;&#xA;&lt;li&gt;CONTRIBUTING.md (コードを含まない限り、あらゆる変更を歓迎)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;ソースコードはありませんね。&lt;/p&gt;&#xA;&lt;p&gt;その後、README にあった使い方&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;echo &amp;quot;&amp;quot; &amp;gt; /dev/null&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;は「Windows対応」で削除されたようです。また、Docker 対応で&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;&amp;quot;FROM scratch&amp;quot;&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;だけの Dockerfile が追加されましたが、「Docker の脆弱性の可能性を考えるとこれは追加すべきではない」という意見も出ています。&lt;/p&gt;&#xA;&lt;h3 id=&#34;issues-がすごい&#34;&gt;Issues がすごい&lt;/h3&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/kelseyhightower/nocode/issues&#34;&gt;Issues&lt;/a&gt; に、現時点で300を超える要望が上がっています。プロジェクトへの期待の多さを感じますね。&lt;/p&gt;&#xA;&lt;p&gt;一番人気は&lt;a href=&#34;https://github.com/kelseyhightower/nocode/issues/50&#34;&gt;これ&lt;/a&gt;。タイトルは「」。コメントも「」が多いです。議論が空白なことがセキュリティにつながるかわかりませんが。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2018/02/the-most-secured-code/nocode-blank-issue.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2018/02/the-most-secured-code/nocode-blank-issue_hu_c14b1aa02e2e060e.webp 480w, https://labs.cybozu.co.jp/blog/akky/2018/02/the-most-secured-code/nocode-blank-issue_hu_36226e4fd9ed29f5.webp 768w, https://labs.cybozu.co.jp/blog/akky/2018/02/the-most-secured-code/nocode-blank-issue_hu_2968650f3f2d572c.webp 778w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2018/02/the-most-secured-code/nocode-blank-issue.png&#34; width=&#34;778&#34; height=&#34;651&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;他にも、「&lt;a href=&#34;https://github.com/kelseyhightower/nocode/issues/2&#34;&gt;#2&lt;/a&gt; PCの電源を入れないといけない (Kindle や ニンテンドーSwitch など既に多彩なプラットフォームに対応しているのでは)」「&lt;a href=&#34;https://github.com/kelseyhightower/nocode/issues/137&#34;&gt;#137&lt;/a&gt; MITライセンスにするべきでは? (から各種ライセンスの提案)」「&lt;a href=&#34;https://github.com/kelseyhightower/nocode/issues/179&#34;&gt;#179&lt;/a&gt; nocode はテストするのが非常に困難では」「&lt;a href=&#34;https://github.com/kelseyhightower/nocode/issues/195&#34;&gt;#195&lt;/a&gt; 何もしてないのに動きません! (他にも、Ubuntuで動かない、Commodore64で動かない、IEで動かないなどのissuesも)」「&lt;a href=&#34;https://github.com/kelseyhightower/nocode/issues/8&#34;&gt;#8&lt;/a&gt; .gitignore でコードが混入しないようにすべき (指定は **/**)」「&lt;a href=&#34;https://github.com/kelseyhightower/nocode/issues/80&#34;&gt;#80&lt;/a&gt; ドキュメントが必要では? それも多言語で (トルコ語「」とブルガリア語「」が既に提案されています。日本語で書くなら「」といったあたりでしょうか)」といった多くの Issues が上がってきており、活発な議論が繰り広げられています。&lt;/p&gt;&#xA;&lt;p&gt;via Hacker News&lt;/p&gt;</description>
			</item>
			<item>
				<title>プログラミング言語TrumpScript</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2016/01/programming-language-donald-trump/</link>
				<pubDate>Fri, 22 Jan 2016 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2016/01/programming-language-donald-trump/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;http://samshadwell.me/TrumpScript/&#34;&gt;TrumpScript&lt;/a&gt; は、高名なドナルド・トランプ氏を基にした新たなプログラミング言語です。現在のプログラミング言語の中に、トランプ氏の豪華な金髪バーコードヘアにも気に入られるような言語が無いことから制作されました。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.flickr.com/photos/80038275@N00/17008571157/&#34;&gt;https://www.flickr.com/photos/80038275@N00/17008571157/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;特徴&#34;&gt;特徴&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;浮動小数点数無しで整数のみ。アメリカに中途半端はありません&lt;/li&gt;&#xA;&lt;li&gt;数は100万以上に限ります。それ以下の数字は取るに足らないからです&lt;/li&gt;&#xA;&lt;li&gt;import はできません。すべてのコードはアメリカで作った国産でなければなりません&lt;/li&gt;&#xA;&lt;li&gt;True/False(真/偽)ではなくfact/lie(事実/嘘)を使います&lt;/li&gt;&#xA;&lt;li&gt;良く知られた、トランプ氏の好きな&lt;a href=&#34;https://github.com/samshadwell/TrumpScript/blob/5a354880ec11146c4069af221a7456cde1e4e30e/src/trumpscript/allowed_words.py&#34;&gt;(2000個ちょっとの)英単語&lt;/a&gt;のみ。立候補者の名前は変数として使えます&lt;/li&gt;&#xA;&lt;li&gt;ほとんどのエラーメッセージはトランプ語録から採用されました&lt;/li&gt;&#xA;&lt;li&gt;プログラムは「アメリカは偉大だ(&amp;ldquo;America is great.&amp;quot;)」で終了しなければなりません&lt;/li&gt;&#xA;&lt;li&gt;TrumpScriptはそのままではWindowsで動きません。なぜならトランプ氏はPCを信じるような男ではないからです(註: PC=パソコン、と、PC=政治的正しさ、をかけてます)&lt;/li&gt;&#xA;&lt;li&gt;大文字小文字は完全に無視します&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;文法&#34;&gt;文法&lt;/h3&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/samshadwell/TrumpScript&#34;&gt;文法の方&lt;/a&gt;はというと、演算や条件文についてはおおむね普通のものが用意されていて、TSの記法を覚えればすぐ書けるでしょう。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;is や are は代入。?で終われば比較になります&lt;/li&gt;&#xA;&lt;li&gt;make America great で、America に great を代入できます&lt;/li&gt;&#xA;&lt;li&gt;tell や say で出力できます&lt;/li&gt;&#xA;&lt;li&gt;as long as でループします&lt;/li&gt;&#xA;&lt;li&gt;不要な単語は全部無視されるので、うまく使えばかなり自然な演説文と両立させられます&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;トランプ氏が失敗について語りたがらないのと同様に、プログラムは多くの場合静かに失敗します。デバッグをゲーム的に楽しんでください。&lt;/p&gt;&#xA;&lt;h3 id=&#34;実行&#34;&gt;実行&lt;/h3&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/samshadwell/TrumpScript/tree/master/test/test_files&#34;&gt;テストファイルがいくつかあるので&lt;/a&gt;、まずはこれを試してみるのがいいかもしれません。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/samshadwell/TrumpScript/blob/master/test/test_files/debate_vs_hillary.txt&#34;&gt;ヒラリー・クリントン氏とのディベートを再現したスクリプト&lt;/a&gt;を動かすと、こうなりました。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2016/01/programming-language-donald-trump/trumpscript-hilary.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2016/01/programming-language-donald-trump/trumpscript-hilary_hu_f273f2e6fa845599.webp 480w, https://labs.cybozu.co.jp/blog/akky/2016/01/programming-language-donald-trump/trumpscript-hilary_hu_d3a87d103954399f.webp 637w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2016/01/programming-language-donald-trump/trumpscript-hilary.png&#34; width=&#34;637&#34; height=&#34;238&#34; alt=&#34;trumpscript-hilary&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://ifunny.co/fun/TPDki4SO3&#34;&gt;元ネタがわかりません&lt;/a&gt;。まだ直接対決はないと思うので、コメントか何かで応酬した時のものでしょうか。&lt;/p&gt;&#xA;&lt;p&gt;テストスクリプトには手元ではエラーになるものも多いです。&lt;/p&gt;&#xA;&lt;p&gt;また、エラーになるのが正しいものも。not_english.txt では、スペイン語で書かれたスクリプトに対して、&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2016/01/programming-language-donald-trump/trumpscript-not-english.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2016/01/programming-language-donald-trump/trumpscript-not-english_hu_de637ddc743a9a1b.webp 480w, https://labs.cybozu.co.jp/blog/akky/2016/01/programming-language-donald-trump/trumpscript-not-english_hu_683d3e80ef13f268.webp 636w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2016/01/programming-language-donald-trump/trumpscript-not-english.png&#34; width=&#34;636&#34; height=&#34;393&#34; alt=&#34;trumpscript-not-english&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;「ここは英語で喋る国だ(&amp;ldquo;This is a country where we speak English&amp;rdquo;)」という例外が発生してます。&lt;/p&gt;</description>
			</item>
			<item>
				<title>シリコンバレーでは女子中学生のダンスもコードの話になる</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2014/12/students-dance-features-coding-in-sillicon-valley/</link>
				<pubDate>Wed, 17 Dec 2014 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2014/12/students-dance-features-coding-in-sillicon-valley/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2014/12/students-dance-features-coding-in-sillicon-valley/codecracker.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2014/12/students-dance-features-coding-in-sillicon-valley/codecracker_hu_94afc5488deed9f7.webp 354w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2014/12/students-dance-features-coding-in-sillicon-valley/codecracker.png&#34; width=&#34;354&#34; height=&#34;232&#34; alt=&#34;codecracker&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.castilleja.org/&#34;&gt;パロアルトにある女子中高一貫校カスティエーハ&lt;/a&gt;の8年生(中学2年生相当)がダンスの授業で発表したのは、ナットクラッカー(くるみ割り人形)ならぬコードクラッカー(コード割り人形)。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2014/12/students-dance-features-coding-in-sillicon-valley/codecracker-1.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2014/12/students-dance-features-coding-in-sillicon-valley/codecracker-1_hu_921e0f3c660750ab.webp 480w, https://labs.cybozu.co.jp/blog/akky/2014/12/students-dance-features-coding-in-sillicon-valley/codecracker-1_hu_d0f938c981fe83aa.webp 553w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2014/12/students-dance-features-coding-in-sillicon-valley/codecracker-1.png&#34; width=&#34;553&#34; height=&#34;462&#34; alt=&#34;codecracker-1&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;クリスマスのプレゼントとしてプログラミングできるくるみ割り人形を貰ったクレア。しかしねずみの王に率いられたネズミたちにパソコンを奪われそうになります。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2014/12/students-dance-features-coding-in-sillicon-valley/codebraker-bubble-sort.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2014/12/students-dance-features-coding-in-sillicon-valley/codebraker-bubble-sort_hu_bc89d9010cfaf3ef.webp 480w, https://labs.cybozu.co.jp/blog/akky/2014/12/students-dance-features-coding-in-sillicon-valley/codebraker-bubble-sort_hu_348e375340346c84.webp 539w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2014/12/students-dance-features-coding-in-sillicon-valley/codebraker-bubble-sort.png&#34; width=&#34;539&#34; height=&#34;462&#34; alt=&#34;codebraker-bubble-sort&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;個人情報を盗んだねずみの王を、クレアがバブルソートを使って撃退しようとするシーン&lt;/p&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;&#x9;&#x9;&#x9;&lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/yil8nKW5hbE?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;&#x9;&#x9;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;&lt;a href=&#34;http://recode.net/2014/12/16/onlyinsiliconvalley-local-school-puts-on-codecracker-video/&#34;&gt;Re/code のカーラ・スィッシャー氏&lt;/a&gt;が言うように「シリコンバレーでしかありそうにない」出し物でしょうね。&lt;/p&gt;&#xA;&lt;p&gt;via &lt;a href=&#34;http://recode.net/2014/12/16/onlyinsiliconvalley-local-school-puts-on-codecracker-video/&#34;&gt;Re/code&lt;/a&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Untrusted - JavaScriptをいじって先へ進むRogueライクゲーム</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2014/04/untrusted-meta-javascript-rogue-like-game/</link>
				<pubDate>Tue, 08 Apr 2014 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2014/04/untrusted-meta-javascript-rogue-like-game/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;http://ja.wikipedia.org/wiki/%E3%83%AD%E3%83%BC%E3%82%B0%E3%83%A9%E3%82%A4%E3%82%AF%E3%82%B2%E3%83%BC%E3%83%A0&#34;&gt;ローグライクゲーム、というジャンル&lt;/a&gt;があります。Rogue(ローグ)を代表とする自動的に生成される迷路・迷宮から脱出するというゲームで、日本で有名なものでも、ネットハック、トルネコの大冒険、チョコボの不思議なダンジョンなど多数あります。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://alex.nisnevich.com/untrusted/&#34;&gt;Untrusted&lt;/a&gt; は、そのようなローグ風ゲームのバリエーションなのですが、JavaScriptのコードを操作することでパズル的な迷宮を解き、先へ進むというのが最大の特徴です。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2014/04/untrusted-meta-javascript-rogue-like-game/untrusted-3.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2014/04/untrusted-meta-javascript-rogue-like-game/untrusted-3_hu_e2d33f7720373311.webp 480w, https://labs.cybozu.co.jp/blog/akky/2014/04/untrusted-meta-javascript-rogue-like-game/untrusted-3_hu_e14b391d471db938.webp 768w, https://labs.cybozu.co.jp/blog/akky/2014/04/untrusted-meta-javascript-rogue-like-game/untrusted-3_hu_284f229987e9c9e3.webp 1248w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2014/04/untrusted-meta-javascript-rogue-like-game/untrusted-3.png&#34; width=&#34;1248&#34; height=&#34;596&#34; alt=&#34;untrusted-3&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;画面左の迷宮で、自分のキャラクター&amp;quot;@&amp;ldquo;を、階段&amp;rdquo;□&amp;ldquo;まで、カーソルキーを使って導かなければいけません。しかし、普通に上下左右に移動しただけでは、出口にたどり着くことはできなくなっています。&lt;/p&gt;&#xA;&lt;p&gt;そこで、右側のコードに書かれた、迷宮を生成するJavaScriptのコードのうち、書き換えて良いという黒地の部分を変更し、Ctrl+5 で実行するとあら不思議、壁や出口の場所を書き換えてしまうことで、次の階へと進むことができるようになるというわけです。&lt;/p&gt;&#xA;&lt;p&gt;いかだを使ったり鍵を探したりと、面ごとに違う趣向の障害が配置されています。&lt;/p&gt;&#xA;&lt;p&gt;その階がどういうトラップなのか、どんな障害が設けられているかというヒントがJavaScriptのコメントとして書かれているので、解く際の参考になるでしょう。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2014/04/untrusted-meta-javascript-rogue-like-game/untrusted-2.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2014/04/untrusted-meta-javascript-rogue-like-game/untrusted-2_hu_3f7c860a76ed17ec.webp 480w, https://labs.cybozu.co.jp/blog/akky/2014/04/untrusted-meta-javascript-rogue-like-game/untrusted-2_hu_2cddc30d4d526935.webp 561w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2014/04/untrusted-meta-javascript-rogue-like-game/untrusted-2.png&#34; width=&#34;561&#34; height=&#34;535&#34; alt=&#34;untrusted-2&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;壁を描画している部分の位置を書き換えるとか、出口の場所を移動するとか、で解ける面もありますが、後の面ではそれらを防ぐようなバリデーション・コードが追加されたりして、同じ手は2度使えないようになっています。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://alex.nisnevich.com/untrusted/&#34;&gt;UntrustedのソースコードはオープンソースとしてGitHub上で公開されています&lt;/a&gt;。ソースコードを見れば現在のダンジョンが何階あるかはわかってしまうのですが。&lt;/p&gt;&#xA;&lt;p&gt;# HackerNewsで紹介されたせいで、現在ゲームはちょっと重かったり、正しく動かなかったりすることがあるようです。その場合は、footerにリンクのあるミラーサイトで遊んだり、オープンソースですから自分のところで動かしたりということもできます。&lt;/p&gt;&#xA;&lt;p&gt;via HackerNews&lt;/p&gt;</description>
			</item>
			<item>
				<title>デバッグの6段階 (Six Stages of Debugging)</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2013/10/six-stages-of-debugging/</link>
				<pubDate>Wed, 02 Oct 2013 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2013/10/six-stages-of-debugging/</guid>
				<description>&lt;ol&gt;&#xA;&lt;li&gt;ありえません&lt;/li&gt;&#xA;&lt;li&gt;私のマシンでは再現しません&lt;/li&gt;&#xA;&lt;li&gt;それは起こるべきじゃありません&lt;/li&gt;&#xA;&lt;li&gt;なんで起こるのかな?&lt;/li&gt;&#xA;&lt;li&gt;あー、なるほど&lt;/li&gt;&#xA;&lt;li&gt;なんで今まで動いてたんだろう?&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;あるある。サポート担当者として1や2の返答をしてしまうと、あとでバツの悪い思いをしちゃいますね。&lt;/p&gt;&#xA;&lt;p&gt;少なくとも&lt;a href=&#34;http://web.archive.org/web/20051027173148/http://www.68k.org/~jrc/old-blog/archives/000198.html&#34;&gt;2003年には流通していた文章&lt;/a&gt;を、&lt;a href=&#34;http://plasmasturm.org/log/6debug/&#34;&gt;発掘した人のブログ&lt;/a&gt;から&lt;/p&gt;&#xA;&lt;p&gt;via HackerNews&lt;/p&gt;</description>
			</item>
			<item>
				<title>Codespell - Java言語がそのまま呪文となる教育用3Dゲーム</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2013/04/codespell-java-learning-3d-game/</link>
				<pubDate>Wed, 10 Apr 2013 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2013/04/codespell-java-learning-3d-game/</guid>
				<description>&lt;p&gt;カリフォルニア大学サン・ディエゴ校の計算機科学者達が開発した &lt;a href=&#34;https://sites.google.com/a/eng.ucsd.edu/codespells/&#34;&gt;Codespell&lt;/a&gt; は、一人称視点の3Dゲームなのですが、その一番の特徴は、プレイすることでJavaプログラミングを身につけられるという点です。&lt;/p&gt;&#xA;&lt;p&gt;Codespellでは、プレイヤーは小動物ノーム(gnome)たちが住む土地にやってきた魔法使いです。ノーム達は過去に魔法を使って生活していたのですが、今は魔法をうまく使えなくなっています。魔法の呪文はJava言語プログラムで、物体を浮遊させるとか火を起こすといった&lt;a href=&#34;https://sites.google.com/a/eng.ucsd.edu/codespells/home/level-1-spells&#34;&gt;7つの手持ちの呪文&lt;/a&gt;を使って、ノーム達を助け、&lt;a href=&#34;https://sites.google.com/a/eng.ucsd.edu/codespells/home/level-1-quests&#34;&gt;火を消したり川を渡ったりといったクエスト&lt;/a&gt;を解き、バッヂを獲得するのがゲームの目標です。&lt;/p&gt;&#xA;&lt;h3 id=&#34;ゲームプレイ&#34;&gt;ゲームプレイ&lt;/h3&gt;&#xA;&lt;p&gt;3D世界の岩が燃えていますが、&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://developer.cybozu.co.jp/akky/2013/04/codespell-java-learning-3d-game/codespell-target/&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2013/04/codespell-java-learning-3d-game/codespell-target_hu_bed007c5726f5fab.webp 480w, https://labs.cybozu.co.jp/blog/akky/2013/04/codespell-java-learning-3d-game/codespell-target_hu_1915a4584dbc4535.webp 618w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2013/04/codespell-java-learning-3d-game/codespell-target.png&#34; width=&#34;618&#34; height=&#34;308&#34; alt=&#34;codespell-target&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;岩オブジェクトというターゲットオブジェクトに対して onFire()メソッドにfalseを渡す、という呪文を呼ぶプログラムを書き、実行することで、&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://developer.cybozu.co.jp/akky/2013/04/codespell-java-learning-3d-game/codespell-target-program/&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2013/04/codespell-java-learning-3d-game/codespell-target-program_hu_fbf2d744d8602303.webp 480w, https://labs.cybozu.co.jp/blog/akky/2013/04/codespell-java-learning-3d-game/codespell-target-program_hu_53b6dfa2bf8077e9.webp 639w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2013/04/codespell-java-learning-3d-game/codespell-target-program.png&#34; width=&#34;639&#34; height=&#34;309&#34; alt=&#34;codespell-target-program&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;燃えていた岩の火が消える、という例が&lt;a href=&#34;https://www.youtube.com/watch?v=TslR9CG6yKI&#34;&gt;デモ動画&lt;/a&gt;で紹介されています。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://developer.cybozu.co.jp/akky/2013/04/codespell-java-learning-3d-game/codespell-target-extinguish/&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2013/04/codespell-java-learning-3d-game/codespell-target-extinguish_hu_6c4851709512c3a9.webp 480w, https://labs.cybozu.co.jp/blog/akky/2013/04/codespell-java-learning-3d-game/codespell-target-extinguish_hu_4422dc7dfdeb4753.webp 638w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2013/04/codespell-java-learning-3d-game/codespell-target-extinguish.png&#34; width=&#34;638&#34; height=&#34;307&#34; alt=&#34;codespell-target-extinguish&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;プログラミングの達人を昔からWizard、魔法使い、といいますが、ここでは、プログラムがそのまま魔法であるような仮想空間を作りこんだ、ということですね。&lt;/p&gt;&#xA;&lt;h3 id=&#34;ゲームの教育効果&#34;&gt;ゲームの教育効果&lt;/h3&gt;&#xA;&lt;p&gt;これを開発した研究者たちが、プログラミング経験がまったく無い10歳から12歳の女子40名にこのゲームを遊ばせたところ、少女たちは一時間もしないうちにJavaの基本的な構造を把握し、自分たちで新しい遊び方をプログラミングしたということです。たとえば、呪文(プログラム)を間違えてターゲットのオブジェクトを空中高く、届かないところに持ち上げてしまったグループは、自身を他のオブジェクトの上からジャンプさせるコードを書いて、ターゲットに次の呪文を掛けることができるようにしたそうです。&lt;/p&gt;&#xA;&lt;h3 id=&#34;入手方法&#34;&gt;入手方法&lt;/h3&gt;&#xA;&lt;p&gt;ゲームはオープンソースで公開され、マック版は&lt;a href=&#34;https://sites.google.com/a/eng.ucsd.edu/codespells/downloads&#34;&gt;バイナリがダウンロードできます&lt;/a&gt;。Windows版も近々リリースされるということ。&lt;/p&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;&#x9;&#x9;&#x9;&lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/TslR9CG6yKI?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;&#x9;&#x9;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;via &lt;a href=&#34;http://www.jacobsschool.ucsd.edu/news/news_releases/release.sfe?id=1347&#34;&gt;UC San Diego Computer Scientists Develop First-person Player Video Game that Teaches How to Program in Java&lt;/a&gt; via&lt;/p&gt;</description>
			</item>
			<item>
				<title>Vistaの音声認識でPerlプログラミング - 喋ってコーディングしようとした男の奮闘記</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2007/02/vista-edit-by-speech/</link>
				<pubDate>Wed, 07 Feb 2007 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2007/02/vista-edit-by-speech/</guid>
				<description>&lt;p&gt;ウィンドウズ・ビスタの音声認識を使って、Perlスクリプトを書いて保存するまでの実演。&lt;/p&gt;&#xA;&lt;p&gt;まあ、自然文を書くことを想定して設計されている音声認識だから、それでプログラムを書こうというところに無茶はあるんだけれど。&lt;/p&gt;&#xA;&lt;p&gt;それにしてもこの奮闘っぷりが面白い。途中でPCを壊すんじゃないかとハラハラしたよ。&lt;/p&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;&#x9;&#x9;&#x9;&lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/KyLqUf4cdwc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;&#x9;&#x9;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;[関連]&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://developer.cybozu.co.jp/akky/2007/02/vista-recognizes-malicious-speech-command/&#34;&gt;Vistaの音声認識セキュリティホールに思う&lt;/a&gt;&lt;/p&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;&#x9;&#x9;&#x9;&lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/KyLqUf4cdwc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;&#x9;&#x9;&lt;/div&gt;&#xA;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;&#x9;&#x9;&#x9;&lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/QkD90ZV07zo?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;&#x9;&#x9;&lt;/div&gt;</description>
			</item>
			<item>
				<title>「世界最大の PHP 雑誌」には英語版が無い?</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2005/08/_php/</link>
				<pubDate>Fri, 12 Aug 2005 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2005/08/_php/</guid>
				<description>&lt;p&gt;[2018-07-30 更新] リンク先のサイトがドメインごと無効になっていたので、リンクを外しました。まだ残っている&lt;a href=&#34;https://www.facebook.com/PHP-Solutions-Magazine-200490000029998/&#34;&gt;Facebookページ&lt;/a&gt;を見る限り、2012年3月号が最後の号だったようです。&lt;/p&gt;&#xA;&lt;p&gt;Zend 社からの ニュースレターで案内されていた、PHP Solutions Magazine という雑誌。聞いたことがない。&lt;a href=&#34;http://www.phparch.com/&#34;&gt;PHP Architect&lt;/a&gt; は読んでたことあるし、&lt;a href=&#34;http://www.php-mag.net/&#34;&gt;PHP Magazine&lt;/a&gt; も知っていたけど、このどちらでもない雑誌が最大(自称)とは、まったく知らなかった。&lt;/p&gt;&#xA;&lt;p&gt;それで、雑誌のサイト PHP Solutions Magazine に行くと、サイトは英語であるものの、この雑誌、フランス語、ドイツ語、イタリア語、スペイン語、ポーランド語(!) しか存在しないらしい。そんなの読めんよ。。。&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;当初のリンク先は &lt;a href=&#34;http://www.phpsolmag.org/en/&#34;&gt;http://www.phpsolmag.org/en/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;この5ヶ国語版の合計が4万部発行、ということなんだけど、これって世界最大規模なんだろうか。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.php-mag.net/&#34;&gt;PHP Magazine&lt;/a&gt; も、英語のは「インターナショナル版」とあるように、本家はドイツ語らしい。PHP は欧州でもっとも普及しているということなのだろうか。&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
