SlideShare a Scribd company logo
1 of 67
Download to read offline
(2) POSIX中心主義と
情報科学教育
USP研究所・金沢大学 共同研究活動報告資料
IoT時代に資するユニケージ開発手法の
普及啓発に関する研究
松浦智之† 大野浩之‡ 當仲寛哲†
† ユニバーサル・シェル・プログラミング研究所
‡ 金沢大学 総合メディア基盤センター
発表日:2016/03/11 スライド最終修正日: 2016/03/12
本資料について
 本資料は、USP研究所と金沢大学の産学連携で実施し
ている共同研究活動における成果物の一つです。
 本活動の報告を、2016年3月10日~12日に開催され
た情報処理学会第78回全国大会における一般セッ
ション(3E-05の同題名)で発表し、本資料はその時の
スライドと概ね同じ内容です。
 一部内容が異なりますが、違いは次のとおりです。
 発表時の持ち時間に収めるために削った内容の復活
 発表後に寄せらせた質疑・応答の記録の追加
ソフトウェアの問題点
ソフトウェアの問題点
寿命が短い。
 (参考)国税庁の耐用年数表
 電子計算機は4-5年
 ソフトウェアは3-5年
→物理的消耗なき物品の中では短い。
ソフトウェアの問題点
近年、特に短い。
 数年、下手すれば半年程度
で使えなくなる。
ソフトウェアの問題点
 理由1
 高度複雑化に伴う「依存」の加速
 「ソフウェア開発=ライブラリ、フレー
ムワーク、ミドルウェアの適用」
という作業と化しつつある。
ソフトウェアの問題点
 理由2
 依存ソフトウェアにおける
 後方互換なき機能変更
 脆弱性発覚による強制ver. up
 サポート終了
の頻発
ソフトウェアの問題点
 「サーバ管理者」「システム管理
者」という専門職が生まれ、依存
ソフトのバージョンアップ勧告
に日々泣かされるようになった。
ソフトウェアの問題点
 理由3
 ソフトウェア開発者側の意識
「ソフトウェアとは短寿命なもの」
→長寿命なプログラムを作る配慮
が忘れ去られがち。
ソフトウェアの問題点
 近年のプログラミング実践教育
は、OJTに頼り
表面的で短命な技術
ばかり教えられている。
ソフトウェアの問題点
 今覚えた技術は10年持つのか?
 10年後に、
10年分の成長ができる技術者は
どれだれいるのか?
POSIX中心主義
POSIX中心主義 ― 概要
 UNIX系OSにおける最低限の
インターフェースを定めた規格
「POSIX」に極力準拠させる
プログラミング方針
(用語は我々が独自に定義)
POSIX中心主義 ― 概要
 POSIXに準拠させることで、
ソフトウェアは高い互換性と
持続可能性(=長い寿命)を
獲得可能。
……ソフトウェアにおける保存食を目指す
POSIX中心主義 ― 概要
 POSIXの高い互換性の要因
 現在、多くのUNIX系OSが準拠している。
 明示的準拠……商用UNIX、 Mac OS Xなど
 暗示的準拠……FreeBSD、 LinuxなどのPC UNIX
 OSベンダーにとって、準拠はメリット
 OS間でソフトウェア資産が共有できる。
 ユーザにUNIX系OSであると認知され、選択される理由になる。
POSIX中心主義 ― 概要
 POSIXの長い持続可能性の要因
 国際規格であり、一つのベンダーの恣意的な思惑が反映され
にくい。
 低水準寄りの規格であり、頻繁な改定は多くのベンダーに副
作用を及ぼすため、できない。
 最低限の規定しかされず、ベンダーにとって自由度が高い。
POSIX中心主義 ― 概要
「幅広い環境と時代に
対応できる互換性」
 どのUNIX系OSでもそのまま動く。
 バージョンアップしてもそのまま動く。
POSIX中心主義 ― 概要
 POSIX中心主義を身に付ける際、
より低水準の領域を学ぶ。
ハードウェア ハードウェア ハードウェア
カーネル
シェル
言語 言語
アプリ アプリ アプリ
アプリ アプリ
POSIX中心主義と高級言語の学習範囲のイメージ
高級言語の学習領域
POSIXの学習領域
POSIX中心主義 ― 概要
 POSIX中心主義での学習内容は、
通用する年月も長い。
POSIX中心主義と高級言語の学習効果のイメージ
現在 1年後 5年後 10年後…
POSIX中心主義 ― 概要
「現場と時代を問わず
頼れる技術者」
(寿命が長いのはプログラムのみにあらず)
POSIX中心主義 ― 方針
 3つの具体的な方針
①
POSIX準拠
プログラミング
②交換可能性担保
プログラミング
③W3C勧告準拠
プログラミング
単独ホスト または Webサーバ Webクライアント
POSIX中心主義 ― 方針 ①POSIX準拠
 POSIXの範囲で実装する。
POSIX公式情報サイト http://pubs.opengroup.org/onlinepubs/9699919799/
POSIX中心主義 ― 方針 ①POSIX準拠
 POSIXには、160個のコマンドがある。
(2013年改訂)
 AWK, sed, grep, ……
 AWKやsed等、チューリング完全なコマンドを
含む。
→ POSIXの範囲で、どんな計算も書ける。
POSIX中心主義 ― 方針 ①POSIX準拠
 言語は、基本的にシェルスクリプト
 POSIXで規定されているものがそれであるため。
 C言語もあるが、バイトオーダ等のハードウェア依存を
意識せざるを得ず、実用性は劣る。
(シェルスクリプトでは、コマンドが吸収してくれる)
POSIX中心主義 ― 方針 ①POSIX準拠
 シェルスクリプトはOS依存が激しい?
 それはPOSIXを意識せずに書いてしまうから。
 OS依存性を避けるため、言語(ライブラリ含む)や
ミドルウェア等を選んでも、OS依存に喘ぎながら
インストール、メンテナンスしては本末転倒。
 依存ソフトが激しく非互換ver. upするせいで、
バージョン依存を起こしてはさらに本末転倒。
POSIX中心主義 ― 方針 ①POSIX準拠
 例(1)―日付計算コマンド(utconv)
 https://github.com/ShellShoccar-jpn/misc-tools/blob/master/utconv
 日常時間←→UNIX時間 相互変換
 ほぼAWKで実装
 dateコマンドは、OS依存が激しいため再発明
$ echo 2016031112000000 | utconv
6299836182000
$ echo 6299836182000 | utconv –r
2016031112000000
$
POSIX中心主義 ― 方針 ①POSIX準拠
 例(2)―XMLパーサ(parsrx.sh)
 https://github.com/ShellShoccar-jpn/Parsrs/blob/master/parsrx.sh
 XML→行列指向フォーマット(XPath - value)への変換
 sed, AWK, tr等、26個のコマンドをパイプで連結し生成。
 JSON, CSVパーサも同様に実装済。
<文具購入リスト 会員名="文具 太郎">
<購入品>はさみ</購入品>
<購入品>ノート(A4,無地)</購入品>
<購入品>シャープペンシル</購入品>
<購入品><取寄商品>替え芯</取寄商品></購入品>
<購入品>クリアファイル</購入品>
<購入品><取寄商品>6穴パンチ</取寄商品></購入品>
</文具購入リスト>
/文具購入リスト/@会員名 文具 太郎
/文具購入リスト/購入品 はさみ
/文具購入リスト/購入品 ノート(A4,無地)
/文具購入リスト/購入品 シャープペンシル
/文具購入リスト/購入品/取寄商品 替え芯
/文具購入リスト/購入品
/文具購入リスト/購入品 クリアファイル
/文具購入リスト/購入品/取寄商品 6穴パンチ
/文具購入リスト/購入品
/文具購入リスト ¥n ¥n ¥n ¥n ¥n ¥n ¥n
POSIX中心主義 ― 方針 ①POSIX準拠
 例(3)―RDBMS的操作
 データは半角空白区切りのテキストファイル持ち
 AWK, grep, sort, join等の組み合わせでselect文相当が実現
→ SQL文(RDBMS)不要!
SELECT
MEM."会員ID",
MEM."会員名"
FROM
blacklist AS MEM
RIGHT OUTER JOIN
members AS BL
ON BL."会員名" = MEM."会員名"
WHERE
BL."会員名" IS NOT NULL
ORDER BY
MEM."会員ID" ASC;
cat blacklist.txt |
# 第1列:BL会員ID #
sort -k 1,1 | ←会員IDで並替え
uniq > sorted_bl.txt
cat members.txt |
# 第1列:会員ID 第2列:名前 #
sort –k 1,1 |←会員IDで並替え
join -1 1 -2 2 -v 2 sorted_bl.txt - ←BLの会員IDで
joinできない行
のみを抽出
ブラックリストに掲載された会員「以外」を表示するデータ操作
SQL版 POSIX版
POSIX中心主義 ― 方針 ①POSIX準拠
 例(4)―URLエンコーディング(urlencode/urldecode)
 https://github.com/ShellShoccar-jpn/misc-tools/blob/master/urldecode
 RFC文書が示す規格を学習し、コーディング(RFC3986 sec.2.1)
 コマンド内の大半はAWKで実装
 Web系変換コマンドの大半は、同様に実装可能。
$ echo 情報A 授業 | urlencode
%E6%83%85%E5%A0%B1A+%E6%8E%88%E6%A5%AD
$ echo %E6%83%85%E5%A0%B1A+%E6%8E%88%E6%A5%AD | urldecode
情報A 授業
$
POSIX中心主義 ― 方針 ①POSIX準拠
 その他―POSIXのコマンドで不十分なもの
 非Web系
 乱数、 mktemp相当、 全角・半角文字相互変換、 排他制御……
 Web系
 Cookie、 セッション管理、 MIMEマルチパート作成・解読、
Base64、 CGI変数授受……
Webアプリ開発に必要なものまで、概ね作れる。
POSIX中心主義 ― 方針 ②交換可能性担保
 POSIXの範囲で実現できないもの
 バイナリ処理(非現実的処理速度なため)
 ネットワーク処理(コマンドが無く、原理的に不可)
 一定条件の元、POSIX外コマンドを認める。
POSIX中心主義 ― 方針 ②交換可能性担保
 一定条件とは、「交換可能性」の担保
 交換可能性とは?
 「現在利用中の実装が、使えなくなっても、同等機
能を有する別の実装に交換できる性質」と定義
 (例)
 Apache ←→ nginx ←→ lighttpd 等
 sendmail ←→ Postfix ←→ qmail ←→ exim 等
 cURL ←→ Wget
 OpenSSL ←→ LibreSSL
 そもそもPOSIX準拠OS同士には交換可能性がある。
POSIX中心主義 ― 方針 ②交換可能性担保
 交換可能性担保における注意点
 その実装固有の機能に依存してはならない。
 (例)
 「Apache ←→ nginx ←→ lighttpd」における、
Apacheのプロクシ機能
 「cURL ←→ Wget」における、
cURLのファイルアップロード機能
依存した瞬間から、他実装へ交換できなくなる。
POSIX中心主義 ― 方針 ②交換可能性担保
 担保したコードの実例(Twitterクライアント)
https://github.com/ShellShoccar-jpn/kotoriotoko/blob/master/BIN/twmediup.sh
:
:
# --- 2.HTTPアクセスコマンド(wgetまたはcurl)
if type curl >/dev/null 2>&1; then
CMD_CURL='curl'
elif type wget >/dev/null 2>&1; then
CMD_WGET='wget'
else
error_exit 1 'No HTTP-GET/POST command found.'
fi
:
:
curlまたはwgetコマンド
両方の存在を確認。
どちらかがあれば、続行
するようにしている。
Web APIアクセスコマンド 存在確認ルーチン
POSIX中心主義 ― 方針 ②交換可能性担保
 担保したコードの実例(続き:Twitterクライアント)
:
s=$(mime-make -m)
ct_hdr="Content-Type: multipart/form-data; boundary=¥"$s¥""
eval mime-make -b "$s" $mimemake_args |
if [ -n "${CMD_WGET:-}" ]; then
case "$timeout" in
'') : ;;
*) timeout="--connect-timeout=$timeout";;
esac
cat > "$Tmp/mimedata"
"$CMD_WGET" ${no_cert_wget:-} -q -O -
--header="$oa_hdr"
--header="$ct_hdr"
--post-file="$Tmp/mimedata"
$timeout
"$API_endpt"
elif [ -n "${CMD_CURL:-}" ]; then
case "$timeout" in
'') : ;;
*) timeout="--connect-timeout $timeout";;
esac
"$CMD_CURL" ${no_cert_curl:-} -s
$timeout
-H "$oa_hdr"
-H "$ct_hdr"
--data-binary @-
"$API_endpt"
fi
:
wgetコマンドには、ファイル
アップロード機能がないため、
curl側でも使わない。
→独自に実装
(mime-makeコマンド)
wgetコマンド用、curlコマン
ド用に分岐させ、2つの書式を
用意する。
ファイルアップロードルーチン
POSIX中心主義 ― 方針 ②交換可能性担保
 例 ― Twitterクライアント「kotoriotoko」
 ホストにプログラムをコピーするだけで動作(=インストールが簡単)
 https://github.com/ShellShoccar-jpn/kotoriotoko
POSIX中心主義 ― 方針 ②交換可能性担保
 その他―POSIXではできなかったこと
 日本語メール送信……sendjpmail
(sendmailコマンドラッパー)
 添付ファイルにも対応
 https://github.com/ShellShoccar-jpn/misc-tools/blob/master/sendjpmail
 PDF作成 なども…
POSIX中心主義 ― 方針 ③W3C勧告準拠
 Webアプリではクライアント側も開発が必須
 クライアント側はPOSIXとは無縁の世界
 HTML/CSS/JavaScript
 そこで、W3C勧告に準拠させる。
 W3C勧告は、いわば「POSIXのWebブラウザ版」
POSIX中心主義 ― 方針 ③W3C勧告準拠
 W3C勧告のHTML/CSS/JavaScript仕様のみ使用
 https://www.w3.org/TR/
 個々のWebブラウザ独自の仕様には依存しない。
 独自ライブラリも使用しない。
 jQuery、その他
 W3C勧告の範囲でフルスクラッチする。
POSIX中心主義 ― 方針 ③W3C勧告準拠
 Ajax処理も、40行足らずでフルスクラッチできる。
 (例)https://github.com/ShellShoccar-jpn/Ajax_demo/blob/master/CLOCK.JS
// 1.Ajaxオブジェクト生成関数
function createXMLHttpRequest(){
if(window.XMLHttpRequest){return new XMLHttpRequest()}
if(window.ActiveXObject){
try{return new ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(e){}
try{return new ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(e){}
try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(e){}
}
return false;
}
// 2.Ajax通信関数
function update_clock() {
var url,xhr,to;
url = get_homedir()+'CLOCK.CGI';
xhr = createXMLHttpRequest();
if (! xhr) {return;}
to = window.setTimeout(function(){xhr.abort()}, 30000);
xhr.onreadystatechange = function(){update_clock_callback(xhr,to)};
xhr.open('GET' , url+'?dummy='+(new Date)/1, true);
xhr.send(null);
}
:
:
// 3.コールバック関数
function update_clock_callback(xhr,to) {
var str, elm;
if (xhr.readyState === 0) {alert('タイムアウトです。');}
if (xhr.readyState !== 4) {return; }
window.clearTimeout(to);
if (xhr.status === 200) {
str = xhr.responseText;
elm = document.getElementById('clock');
elm.innerHTML = str;
} else {
alert('サーバーが不正な応答を返しました。');
}
}
POSIX中心主義 ― 方針 ③W3C勧告準拠
 例―Ajax Clock(ボタンを押すたび時刻文字列だけ更新)
 http://lab-sakura.richlab.org/AJAX/CLOCK.HTML
POSIX中心主義 ― 作成例
 (1) 郵便番号から住所を検索
 http://lab-sakura.richlab.org/ZIP2ADDR/public_html/
 全国14万レコードからの検索に何秒かかるか?
POSIX中心主義 ― 作成例
 (2) ショッピングカート
 https://richlab.org/coterie/pfb.html
 商品・在庫データをテキストファイルで管理
 PayPal決済(Web API)にも対応し、実証実験中
POSIX中心主義 ― 作成例
 (3) 鉄道運行状況表示プログラム
 http://metropiper.com
 東京メトロのWeb APIから車両の現在位置を取得
 何駅前まで列車が来ているかわかる
考察と課題
考察 ― POSIX中心主義の妥当性
 互換性のためのI/F標準化の試
みは、POSIX以外にもいくつか
あった。
 SSI, MOSI, X/OPEN, OSF など
 参考文献
 「UNIXの標準化とPOSIX」,斎藤 信男,コンピュータソフトウェア 6(1),
84-92, 1989-01-13
 「OSインターフェース標準化の動向」,越田 一郎,情報処理学会研究報告シ
ステムソフトウェアとオペレーティング・システム 37, 1-6, 1987-06-12
考察 ― POSIX中心主義の妥当性
 30年近く経った現在、
標準化で最も成功しているのは
POSIXと言える。
 CiNiiで検索可能な論文における
言及数の比較でも明らか。
考察 ― POSIX中心主義の妥当性
 POSIX規格は、高い互換性、
長い持続可能性(寿命)を持つ
ソフトウェア開発のため、
現時点で最も妥当な選択肢の1つ。
考察 ― POSIX中心主義の評価 ①開発
 鉄道運行状況表示プログラムは、
東京メトロのコンテスト応募作品
 https://developer.tokyometroapp.jp/
 オープンデータ活用コンテスト
 2014年開催
考察 ― POSIX中心主義の評価 ①開発
 コンテストは東京五輪を意識し
ていた、と言われている。
 2020年(=コンテストから6年後)
 外国人観光客利便性向上のため
スマートフォンアプリまで広く募集。
考察 ― POSIX中心主義の評価 ①開発
 受賞作品の上位、かつ大半は、
スマートフォンアプリが占めた。
 http://car.watch.impress.co.jp/docs/news/20150220_689397.html
考察 ― POSIX中心主義の評価 ①開発
 「そのAndroidアプリ、
iPhoneアプリ、
2020年にも動くんですか?」
 そもそもAndroidやiOS上で、
6年後も動作を保証できるアプリは作れるのか?
考察 ― POSIX中心主義の評価 ①開発
 実際、既に動かない作品が出
てきている。
 https://developer.tokyometroapp.jp/app
 ただし、コンテスト終了に伴い、意図的に公開終了
した可能性のある作品も含まれ、すべてではない。
考察 ― POSIX中心主義の評価 ①開発
 POSIX中心主義の本作品は、
今も順調に動作中。
 http://metropiper.com/
 これまで内容の改修は一切なし。
スマートフォン用レイアウトで動作している様子⇒
(POSIX+W3C勧告のCSSとJavaScriptで実装)
考察 ― POSIX中心主義の評価 ①開発
 保守作業コストの削減が可能
 依存ソフトに起因する
運用事故防止の効果も期待
考察 ― POSIX中心主義の評価 ②教育
 コンピュータの本質に近い低
水準領域学習の必要性から、知
識の持続可能性(寿命)も長い。
 一般的なUNIX環境やUNIXコマンドの学習、
RFC文書の学習 など
考察 ― POSIX中心主義の評価 ②教育
 知識の再利用性が高い。
 問題解決力の高い技術者の
育成が期待できる。
課題 ― 現状の課題と今後の展開
 POSIX中心主義は、提唱して日
が浅い。
 互換性・持続可能性に対する検証
を継続する必要性
 開発方針を、
より具体化させる必要性
 啓蒙・促進・普及活動の必要性
課題 ― 現状の課題と今後の展開
 2016年度前期、
UCI(大学コンソーシアム石川)にて
「シェルスクリプト言語論」
として、授業開講予定
 POSIX中心主義の普及を図る
POSIX中心主義 まとめ
 互換性と持続可能性、
どちらも高いソフトウェアの開発が可能
 互換性と持続可能性の高い低水準領域の
知識を持った技術者も育てられる
謝辞
 POSIX中心主義を発案するきっかけとなったユ
ニケージ開発手法を推進するUSP研究所の皆様,
そして本手法を支持し,本論文投稿にあたり御指
導くださった金沢大学の共同研究者の皆様に,心
より感謝を申し上げます。
 POSIXという高い互換性・持続可能性をもたらす
規格を策定したThe Open Groupをはじめ、貢献
している方々に感謝します。
ありがとうございました
ご意見・ご質問があれば、お願いします。
質疑応答の記録
Q. 開講予定の授業で想定する受講者のレベルは?
 ある程度UNIXを知っていることを前提をしてい
るため、大学院生やUNIX系の専門課程の学部3,4
年生を対象としたい。
 大学コンソーシアム(学外)なので社会人も歓迎。現
場で短命なソフトウェアに日々泣かされている開
発者やシステム管理者とも意見交換をしたい。
質疑応答の記録
Q. 現在のソフトウェア教育は替わりゆく技術に追従すること
を重点に教える傾向があるが、正反対に見える。意見を。
 重要視する箇所が正反対という認識は正しい。
 低水準領域は応用性も普遍性も高い知識になる。
 高水準の教育も大切ではあるが、コンピューターの
本質に近い低水準領域を学習してこそ、替わりゆ
く高水準領域の技術も体系的に理解できる。
質疑応答の記録
Q. 開講する授業デザインをどのように考えているか。あれ
ば公開してくれるとありがたい。
 発表者(松浦)自身は、開発現場(産学連携の産)の
立場から参加しているため教育の詳しい知識を持
ち合わせていない。
 学の立場である、金沢大の先生方の協力のもと考
えていきたい。
 ただ、フルスクラッチ開発時、RFC文書の読み解き
作業は低水準領域の学習に大変効果的だと実感し
たこともあり、現場から得たそういうノウハウは
盛り込んでいきたい。
独自の質疑応答想定
Q. 例示した地下鉄アプリは今まで改修無しだが、東京メトロ
がAPI仕様や路線仕様を修正したら改修が必要なので、持
続可能性確保の試みは無駄では?
 東京メトロ自身が、自社の公式アプリを作るとい
う想定で考えてもらいたい。
 自社都合による仕様変更のタイミングは自社でコ
ントロールできる。
 しかし、東京メトロのような大きな企業とて、依存
ソフト開発団体(PHP GroupやMySQLのOracleな
ど)に「バージョンアップを待って」とは言えない。
 依存ソフトのバージョンはアンコントローラブル
独自の質疑応答想定
Q. 例示されたXMLパーサなど、公開しているということは利
用(=依存)を促すことであり、矛盾ではないか?
 利用する場合、中身を理解しながら使うことが大
事(ブラックボックスなままの使用が不幸を招く)
 依存ソフトに不具合があったとしても自分の力で
対処できるよう、次の2つの心掛けが大事
1. どういう原理で動いているか、また動作の癖を理解
し、自分の手足のような感覚を得る。
2. 使いだしたら自分の製作物のごとく責任を持つ。
 上記理由により、私が公開しているソフトは基
本的に権利放棄(public domain)している。

More Related Content

What's hot

それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?Yoshitaka Kawashima
 
GNU AGPLv3について(On GNU AGPLv3)
GNU AGPLv3について(On GNU AGPLv3)GNU AGPLv3について(On GNU AGPLv3)
GNU AGPLv3について(On GNU AGPLv3)真行 八田
 
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜Takahiro Inoue
 
開発者のためのActive Directory講座
開発者のためのActive Directory講座開発者のためのActive Directory講座
開発者のためのActive Directory講座junichi anno
 
Selenium×PostgreSQL15×Grafanaで思い出を保存&分析するプロジェクト(第35回PostgreSQLアンカンファレンス@オンライン...
Selenium×PostgreSQL15×Grafanaで思い出を保存&分析するプロジェクト(第35回PostgreSQLアンカンファレンス@オンライン...Selenium×PostgreSQL15×Grafanaで思い出を保存&分析するプロジェクト(第35回PostgreSQLアンカンファレンス@オンライン...
Selenium×PostgreSQL15×Grafanaで思い出を保存&分析するプロジェクト(第35回PostgreSQLアンカンファレンス@オンライン...NTT DATA Technology & Innovation
 
async/awaitダークサイド is 何
async/awaitダークサイド is 何async/awaitダークサイド is 何
async/awaitダークサイド is 何Kouji Matsui
 
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かうBrainPad Inc.
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)Takuto Wada
 
Gocon2017:Goのロギング周りの考察
Gocon2017:Goのロギング周りの考察Gocon2017:Goのロギング周りの考察
Gocon2017:Goのロギング周りの考察貴仁 大和屋
 
ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発Takafumi ONAKA
 
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐO/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐkwatch
 
ビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分けビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分けRecruit Technologies
 
MySQLで論理削除と正しく付き合う方法
MySQLで論理削除と正しく付き合う方法MySQLで論理削除と正しく付き合う方法
MySQLで論理削除と正しく付き合う方法yoku0825
 
ClojureではじめるSTM入門
ClojureではじめるSTM入門ClojureではじめるSTM入門
ClojureではじめるSTM入門sohta
 
オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来増田 亨
 
Power Automateで電子帳簿保存法に対応してみた。
Power Automateで電子帳簿保存法に対応してみた。Power Automateで電子帳簿保存法に対応してみた。
Power Automateで電子帳簿保存法に対応してみた。Tatsuya Kobayashi
 
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)Mikiya Okuno
 
SQLアンチパターン - ナイーブツリー
SQLアンチパターン - ナイーブツリーSQLアンチパターン - ナイーブツリー
SQLアンチパターン - ナイーブツリーke-m kamekoopa
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているKoichi Tanaka
 

What's hot (20)

それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
 
GNU AGPLv3について(On GNU AGPLv3)
GNU AGPLv3について(On GNU AGPLv3)GNU AGPLv3について(On GNU AGPLv3)
GNU AGPLv3について(On GNU AGPLv3)
 
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
 
開発者のためのActive Directory講座
開発者のためのActive Directory講座開発者のためのActive Directory講座
開発者のためのActive Directory講座
 
Selenium×PostgreSQL15×Grafanaで思い出を保存&分析するプロジェクト(第35回PostgreSQLアンカンファレンス@オンライン...
Selenium×PostgreSQL15×Grafanaで思い出を保存&分析するプロジェクト(第35回PostgreSQLアンカンファレンス@オンライン...Selenium×PostgreSQL15×Grafanaで思い出を保存&分析するプロジェクト(第35回PostgreSQLアンカンファレンス@オンライン...
Selenium×PostgreSQL15×Grafanaで思い出を保存&分析するプロジェクト(第35回PostgreSQLアンカンファレンス@オンライン...
 
async/awaitダークサイド is 何
async/awaitダークサイド is 何async/awaitダークサイド is 何
async/awaitダークサイド is 何
 
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
 
Gocon2017:Goのロギング周りの考察
Gocon2017:Goのロギング周りの考察Gocon2017:Goのロギング周りの考察
Gocon2017:Goのロギング周りの考察
 
ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発
 
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐO/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐ
 
ビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分けビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分け
 
Map
MapMap
Map
 
MySQLで論理削除と正しく付き合う方法
MySQLで論理削除と正しく付き合う方法MySQLで論理削除と正しく付き合う方法
MySQLで論理削除と正しく付き合う方法
 
ClojureではじめるSTM入門
ClojureではじめるSTM入門ClojureではじめるSTM入門
ClojureではじめるSTM入門
 
オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来
 
Power Automateで電子帳簿保存法に対応してみた。
Power Automateで電子帳簿保存法に対応してみた。Power Automateで電子帳簿保存法に対応してみた。
Power Automateで電子帳簿保存法に対応してみた。
 
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
 
SQLアンチパターン - ナイーブツリー
SQLアンチパターン - ナイーブツリーSQLアンチパターン - ナイーブツリー
SQLアンチパターン - ナイーブツリー
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
 

Viewers also liked

恐怖!シェルショッカー1号男
恐怖!シェルショッカー1号男恐怖!シェルショッカー1号男
恐怖!シェルショッカー1号男Tomoyuki Matsuura
 
TeX vs Wordの不毛な争い
TeX vs Wordの不毛な争いTeX vs Wordの不毛な争い
TeX vs Wordの不毛な争いHidetsugu Tamura
 
P2 P 奨学金プロジェクト Ver3 5
P2 P 奨学金プロジェクト Ver3 5P2 P 奨学金プロジェクト Ver3 5
P2 P 奨学金プロジェクト Ver3 5Daisuke Miyoshi
 
【企画書】ReceReco:新規事業討議用社内資料
【企画書】ReceReco:新規事業討議用社内資料【企画書】ReceReco:新規事業討議用社内資料
【企画書】ReceReco:新規事業討議用社内資料Find Job Startup
 
【企画書】UIscope:MOVIDA JAPAN_Demo Day用資料
【企画書】UIscope:MOVIDA JAPAN_Demo Day用資料【企画書】UIscope:MOVIDA JAPAN_Demo Day用資料
【企画書】UIscope:MOVIDA JAPAN_Demo Day用資料Find Job Startup
 
T TIME 滞在時間割キャンペーン(第4回販促会議企画コンペティション)
T TIME 滞在時間割キャンペーン(第4回販促会議企画コンペティション)T TIME 滞在時間割キャンペーン(第4回販促会議企画コンペティション)
T TIME 滞在時間割キャンペーン(第4回販促会議企画コンペティション)Keita Takizawa
 
PIXTA_シードラウンド用事業プラン説明資料
PIXTA_シードラウンド用事業プラン説明資料PIXTA_シードラウンド用事業プラン説明資料
PIXTA_シードラウンド用事業プラン説明資料Find Job Startup
 
【企画書】チャットワーク:社内検討用資料
【企画書】チャットワーク:社内検討用資料【企画書】チャットワーク:社内検討用資料
【企画書】チャットワーク:社内検討用資料Find Job Startup
 
Cyta.jp_サービスEC説明資料
Cyta.jp_サービスEC説明資料Cyta.jp_サービスEC説明資料
Cyta.jp_サービスEC説明資料Find Job Startup
 
【企画書】omiai:IVS_LAUNCH PAD用資料
【企画書】omiai:IVS_LAUNCH PAD用資料【企画書】omiai:IVS_LAUNCH PAD用資料
【企画書】omiai:IVS_LAUNCH PAD用資料Find Job Startup
 
【企画書】gamba!(ガンバ):サムライインキュベート様向け_企画プレゼン資料
【企画書】gamba!(ガンバ):サムライインキュベート様向け_企画プレゼン資料【企画書】gamba!(ガンバ):サムライインキュベート様向け_企画プレゼン資料
【企画書】gamba!(ガンバ):サムライインキュベート様向け_企画プレゼン資料Find Job Startup
 
BASE_プレゼン用サービス説明資料
BASE_プレゼン用サービス説明資料BASE_プレゼン用サービス説明資料
BASE_プレゼン用サービス説明資料Find Job Startup
 
創業時の「nanapiのナマ企画書」
創業時の「nanapiのナマ企画書」創業時の「nanapiのナマ企画書」
創業時の「nanapiのナマ企画書」Find Job Startup
 
メルカリ_サービス説明資料
メルカリ_サービス説明資料メルカリ_サービス説明資料
メルカリ_サービス説明資料Find Job Startup
 
ストリートアカデミー_ローンチ前企画書
ストリートアカデミー_ローンチ前企画書ストリートアカデミー_ローンチ前企画書
ストリートアカデミー_ローンチ前企画書Find Job Startup
 

Viewers also liked (15)

恐怖!シェルショッカー1号男
恐怖!シェルショッカー1号男恐怖!シェルショッカー1号男
恐怖!シェルショッカー1号男
 
TeX vs Wordの不毛な争い
TeX vs Wordの不毛な争いTeX vs Wordの不毛な争い
TeX vs Wordの不毛な争い
 
P2 P 奨学金プロジェクト Ver3 5
P2 P 奨学金プロジェクト Ver3 5P2 P 奨学金プロジェクト Ver3 5
P2 P 奨学金プロジェクト Ver3 5
 
【企画書】ReceReco:新規事業討議用社内資料
【企画書】ReceReco:新規事業討議用社内資料【企画書】ReceReco:新規事業討議用社内資料
【企画書】ReceReco:新規事業討議用社内資料
 
【企画書】UIscope:MOVIDA JAPAN_Demo Day用資料
【企画書】UIscope:MOVIDA JAPAN_Demo Day用資料【企画書】UIscope:MOVIDA JAPAN_Demo Day用資料
【企画書】UIscope:MOVIDA JAPAN_Demo Day用資料
 
T TIME 滞在時間割キャンペーン(第4回販促会議企画コンペティション)
T TIME 滞在時間割キャンペーン(第4回販促会議企画コンペティション)T TIME 滞在時間割キャンペーン(第4回販促会議企画コンペティション)
T TIME 滞在時間割キャンペーン(第4回販促会議企画コンペティション)
 
PIXTA_シードラウンド用事業プラン説明資料
PIXTA_シードラウンド用事業プラン説明資料PIXTA_シードラウンド用事業プラン説明資料
PIXTA_シードラウンド用事業プラン説明資料
 
【企画書】チャットワーク:社内検討用資料
【企画書】チャットワーク:社内検討用資料【企画書】チャットワーク:社内検討用資料
【企画書】チャットワーク:社内検討用資料
 
Cyta.jp_サービスEC説明資料
Cyta.jp_サービスEC説明資料Cyta.jp_サービスEC説明資料
Cyta.jp_サービスEC説明資料
 
【企画書】omiai:IVS_LAUNCH PAD用資料
【企画書】omiai:IVS_LAUNCH PAD用資料【企画書】omiai:IVS_LAUNCH PAD用資料
【企画書】omiai:IVS_LAUNCH PAD用資料
 
【企画書】gamba!(ガンバ):サムライインキュベート様向け_企画プレゼン資料
【企画書】gamba!(ガンバ):サムライインキュベート様向け_企画プレゼン資料【企画書】gamba!(ガンバ):サムライインキュベート様向け_企画プレゼン資料
【企画書】gamba!(ガンバ):サムライインキュベート様向け_企画プレゼン資料
 
BASE_プレゼン用サービス説明資料
BASE_プレゼン用サービス説明資料BASE_プレゼン用サービス説明資料
BASE_プレゼン用サービス説明資料
 
創業時の「nanapiのナマ企画書」
創業時の「nanapiのナマ企画書」創業時の「nanapiのナマ企画書」
創業時の「nanapiのナマ企画書」
 
メルカリ_サービス説明資料
メルカリ_サービス説明資料メルカリ_サービス説明資料
メルカリ_サービス説明資料
 
ストリートアカデミー_ローンチ前企画書
ストリートアカデミー_ローンチ前企画書ストリートアカデミー_ローンチ前企画書
ストリートアカデミー_ローンチ前企画書
 

Similar to POSIX中心主義と情報科学教育

ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会Takayuki Shimizukawa
 
基礎演習V 河野ゼミ紹介20161025
基礎演習V 河野ゼミ紹介20161025基礎演習V 河野ゼミ紹介20161025
基礎演習V 河野ゼミ紹介20161025義広 河野
 
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれクラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれMasataka MIZUNO
 
20180510_ICON技術セミナー5_芦村
20180510_ICON技術セミナー5_芦村20180510_ICON技術セミナー5_芦村
20180510_ICON技術セミナー5_芦村ICT_CONNECT_21
 
20180510_ICON技術セミナー5_芦村
20180510_ICON技術セミナー5_芦村20180510_ICON技術セミナー5_芦村
20180510_ICON技術セミナー5_芦村Yoshimi Ishizaka
 
Linked Open Dataで市民協働と情報技術者をつなげる試み
Linked Open Dataで市民協働と情報技術者をつなげる試みLinked Open Dataで市民協働と情報技術者をつなげる試み
Linked Open Dataで市民協働と情報技術者をつなげる試みShun Shiramatsu
 
Silverlightをあれこれ紹介
Silverlightをあれこれ紹介Silverlightをあれこれ紹介
Silverlightをあれこれ紹介mizusawa
 
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜Hideki Takase
 
Webシステムプログラミング概要20150630
Webシステムプログラミング概要20150630Webシステムプログラミング概要20150630
Webシステムプログラミング概要20150630義広 河野
 
OSSとクラウドによるコンピューティングモデルの変化
OSSとクラウドによるコンピューティングモデルの変化OSSとクラウドによるコンピューティングモデルの変化
OSSとクラウドによるコンピューティングモデルの変化Nobuyori Takahashi
 
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成Hiroshi Yamaguchi
 
渕田研究室全体ゼミ論文紹介 - 第1回
渕田研究室全体ゼミ論文紹介 - 第1回 渕田研究室全体ゼミ論文紹介 - 第1回
渕田研究室全体ゼミ論文紹介 - 第1回 MantarohYoshinaga
 
2008 12 04_seminner
2008 12 04_seminner2008 12 04_seminner
2008 12 04_seminnerTom Hayakawa
 
Windows Azure for PHP Developers
Windows Azure for PHP DevelopersWindows Azure for PHP Developers
Windows Azure for PHP Developersfumios
 
Open棟梁概要説明 v02-00
Open棟梁概要説明 v02-00Open棟梁概要説明 v02-00
Open棟梁概要説明 v02-00Daisuke Nishino
 
Lesson01
Lesson01Lesson01
Lesson01MRI
 
Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010Hiro Yoshioka
 
基礎演習V_20151006
基礎演習V_20151006基礎演習V_20151006
基礎演習V_20151006義広 河野
 

Similar to POSIX中心主義と情報科学教育 (20)

ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
 
基礎演習V 河野ゼミ紹介20161025
基礎演習V 河野ゼミ紹介20161025基礎演習V 河野ゼミ紹介20161025
基礎演習V 河野ゼミ紹介20161025
 
DBpedia Japanese
DBpedia JapaneseDBpedia Japanese
DBpedia Japanese
 
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれクラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれ
 
20180510_ICON技術セミナー5_芦村
20180510_ICON技術セミナー5_芦村20180510_ICON技術セミナー5_芦村
20180510_ICON技術セミナー5_芦村
 
20180510_ICON技術セミナー5_芦村
20180510_ICON技術セミナー5_芦村20180510_ICON技術セミナー5_芦村
20180510_ICON技術セミナー5_芦村
 
Linked Open Dataで市民協働と情報技術者をつなげる試み
Linked Open Dataで市民協働と情報技術者をつなげる試みLinked Open Dataで市民協働と情報技術者をつなげる試み
Linked Open Dataで市民協働と情報技術者をつなげる試み
 
Silverlightをあれこれ紹介
Silverlightをあれこれ紹介Silverlightをあれこれ紹介
Silverlightをあれこれ紹介
 
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
 
Webシステムプログラミング概要20150630
Webシステムプログラミング概要20150630Webシステムプログラミング概要20150630
Webシステムプログラミング概要20150630
 
OSSとクラウドによるコンピューティングモデルの変化
OSSとクラウドによるコンピューティングモデルの変化OSSとクラウドによるコンピューティングモデルの変化
OSSとクラウドによるコンピューティングモデルの変化
 
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
 
渕田研究室全体ゼミ論文紹介 - 第1回
渕田研究室全体ゼミ論文紹介 - 第1回 渕田研究室全体ゼミ論文紹介 - 第1回
渕田研究室全体ゼミ論文紹介 - 第1回
 
2008 12 04_seminner
2008 12 04_seminner2008 12 04_seminner
2008 12 04_seminner
 
Windows Azure for PHP Developers
Windows Azure for PHP DevelopersWindows Azure for PHP Developers
Windows Azure for PHP Developers
 
2013sguヒューマンインターフェース論004
2013sguヒューマンインターフェース論0042013sguヒューマンインターフェース論004
2013sguヒューマンインターフェース論004
 
Open棟梁概要説明 v02-00
Open棟梁概要説明 v02-00Open棟梁概要説明 v02-00
Open棟梁概要説明 v02-00
 
Lesson01
Lesson01Lesson01
Lesson01
 
Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010
 
基礎演習V_20151006
基礎演習V_20151006基礎演習V_20151006
基礎演習V_20151006
 

POSIX中心主義と情報科学教育