ホーム » スタッフ » 斉藤徹 (ページ 127)

斉藤徹」カテゴリーアーカイブ

2025年7月
 12345
6789101112
13141516171819
20212223242526
2728293031  

検索・リンク

新入生歓迎会にて

今日は新入生歓迎会。 相変わらずの、一発芸大会。まずは、先輩より。 電子情報のOBなら、H氏の恒例の芸を期待しているんだろうけど…

1304150916_874x656.JPG

英語でICT活用の協調学習の講演

英語教育のJALT福井支部の講演会に、 発表者の澤崎先生のお誘いもあり、 「英語教育におけるICTを活用した協調学習による授業デザイン」 の講演を聞いてきました。

最初、英語教育の方ばかりで英語の講演が始まるかと、 英語苦手人種はビビりましたが、楽しく拝聴できました。

澤崎先生が、F-leccs の活動の一環で、仁愛大学1年で実践している 英語の授業などのお話でした。 最初、SECIモデルの考え方では、協調学習の利点として、 授業の中で以下のループで暗黙知と形式知と変化していく。

共同化→表出化
 ↑   ↓
内面化→連結化

澤崎先生の英語の授業では、 一般教養の英語の授業では、必修だけどモチベーションが低いため、 エッセイライティングとディスカッションを取り入れて講義を行った。 授業参加者は、予習としてトピックを読んで理解し、 自分の意見を(MoodleなどのICTを利用して)記載してもらう。 授業当日は、ランダムにグループ化しリーダを決め、 討議結果をまとめさせ英語で発表を行う。

採点は、トピックへの自分の意見のライティングで行い、 100〜200単語程度でまとめてもらい、Moodleで事前に 添削を行っておく。授業での討議発表は、採点対象とはしない。 しかし、討議のまとめ方は自然にエッセイライティングに 活かされていく。

現在、福井高専でも、大学的な自宅での予習復習を必要とする 学修単位の明確化が行われており、シラバスに予習復習の記載を 行うことになった。澤崎先生の取組みでは、うまく予習が取り入れられており、 Moodleでの事前添削は大変だろうと思うけど、素晴らしいと感じた。

さて、これを、自分の授業に取り入れようと思ったら、何をしようか? 「わざと出来の悪いプログラムを示して、コードをどう改善するか 考えておいてもらい、それを授業で討議する…」 うーむ、「討議する時間あったら、面白いコード書こうぜ!!」 と叫びたい一方で、「悪いコードの問題点を考える/見つける」 のも大切だしな。さて、どちらを優先した授業がいいんだろ…

オブジェクト指向のガイダンス

オブジェクト指向の最初の授業ということで、 シラバス全体の説明と、 オブジェクト指向の歴史、 EIの学生さん以外のための構造体の説明を行う。

オブジェクト指向の歴史

プログラミング言語の歴史のなかで、 最初に作られた科学技術計算用のFORTRANは、当初手続きの順序の記載で、 処理手順の記載に goto 文が多用され、分かり難いものであった。 一方で、商用計算用のCOBOLは、 銀行系などのプログラムを記述するため、 複数のデータを組み合わせる構造体(微妙に違う所もあるが…)が使えた。 FORTRANの手続きの分かり難さは、 後で開発されたALGOL,PL/Iなどの言語では、処理の構造化によって 読みやすさが改善された。 こういった、処理の構造化やデータの構造化は、 構造化プログラミング(structured programming)として広く利用されていった。

プログラミング言語の発達の中で、構造化プログラミング機能を持った "C言語"なども開発される一方で、シミュレーションプログラムの世界では、 "Simula"などの言語が開発されて、その中でデータに対して命令を実行させる という記述は、擬人化したイメージから分かりやすいものとして受け入れられた。 この考え方が、オブジェクト指向プログラミング(Object Oriented Programming) として定着し、Smalltalk などの言語が開発された。 特に、Smalltalk では、GUI のプログラミングにオブジェクト指向が有効である と認知されるようになり、オブジェクト指向が広く普及する元となった。

そして、"C言語"に、オブジェクト指向を取り入れたら便利になるだろう…ということで、 "C++"が開発される。(BCPL→B言語→C言語→(D言語はまだ早い)→C++) また、これをインターネット利用に特化して、Java 言語が開発された。 この後、"C++"の影響を受け、Microsoft で開発された "C#"、 Apple社のGUIで使われる"Objective-C"、 最近では、B,C,Dの流れを受け、"D言語"も存在する。

創造工学演習で競技部門の説明

4年の創造工学演習では、電子情報工学実験の2週を創造工学の予備実験としても 利用する。このため、実験のガイダンスの後半で、創造工学演習の説明を行う。 特に、今年のプログラミングコンテストでの競技部門について説明を行う。

通信ネタの競技部門の事例

今年のプログラミングコンテストでは、サイコロでデータ通信を行うテーマとなっている。

  • 基本は、送信側は、与えられた英数字に合わせて、サイコロでデータを表現する。
  • サイコロは、トレイに並べてWebカメラの前に置く。
    すると、一定周期で撮影したデータを受信側で、サイコロを見ることができる。
  • 受信側は、そのサイコロの並びを解析して、元の文字を取り出す。

こういったテーマであるが、その難しさを理解してもらうために、 過去のプロコンでの通信関連の競技を説明する。

ポケベルコードで勝利

送信側、受信側の2部屋があり、ネットワークでのみ情報交換が可能。 送信側は、送信側の部屋の様子についての問題の答えを、ネットワーク通信で受信側に送る。 こうなると、Skypeの様なソフトで音声通話するとか、デジカメの画像情報を、伝送するとかの作戦がとられたけど、実際のこの回の優勝チームは、 ポケベルコードだけを送るプログラムを作ったチームであった。 この頃は、携帯電話もなかったし、ポケベルで情報交換していた時代だったので、 優勝した女子チームは、ポケベルコードを素でデコードできた…

赤青緑黄のボールで通信

送信側の部屋と受信側の部屋は、2つのパイプが通っていて、 このパイプには、赤青緑黄の4色のボールを転がすことができる。 このボールを使って、簡単な文面を4色の並びに変換して送る。

ただし、パイプのボールは、何個かに1個のランダムなペースで、 ボールが抜かれる可能性がある。 簡単に考えると、4色を00/01/10/11に割りつければ、ボール1個を送るたびに、 2ビットの伝送が可能である。 しかし、途中でボールが抜かれる可能性があるので、 データ区切りの先頭を見つける必要性、通信でのデッドロックにならないルール決め、 などの必要性を説明する。 また、人間が間違えてボールを送る可能性もあるため、 間違い訂正の手段として、パリティチェックチェックサムCRC(巡回冗長検査)などの話をする。

プログラミング応用のガイダンス

例年通りのプログラミング応用の初回ガイダンス。 今年度は、前期の段階でネットワークの基礎の話を入れたいと計画中。 とは言いながら、授業の予定、テストの傾向、評価方法、教科書などを説明していく。

制御構文の復習

ガイダンスの残りの時間は、制御構文の復習ということで、 「文のブロック」について意識付けを行うように説明を行う。

C言語の文
式 ;
{ 文 [文...] } 複文と呼ぶ
if ( 条 ) 文 [ else 文 ]
while( 条 ) 文
do 文 while( 条 ) ;
for( A ; B ; C ) 文
;   # セミコロンだけ...は、空文と呼ばれる。
その他の構文

これらの文の「ブロック」を繰り返し、分岐といった制御する命令で、 複文{} でブロックを組みながら、表現することをが、 手続きの構造化と呼ばれる。これに構造体などのデータの構造化を組合せて、 「構造化プログラミング(Structured Programming)」と呼ぶ。

手続きの構造化では、処理のブロックの範囲が分かりやすくなるように、 同じ処理レベルの物とそれを取り囲むブロックを字下げをすることで、 分かりやすく見せる。これをインデントと呼ぶ。

説明では、処理のフローチャートと合せ、処理ブロックを一塊の処理と見なしながら、 処理順序や命令の繰り返しの塊を説明する。

break , continue , switch-case

制御構文での説明で、特殊な命令として、break , continue , switch-case を説明する。

break文は、while,do-while,for,switch-case文のブロックを抜け出し、次の文に移る命令。 continue文は、while,do-while,for で、次の処理ループに移る命令。

// while の場合
while( A ) {
:
break ;    // goto labelB ; と同じ
:
continue ; // Aの条件判定に飛ぶ
:
}
labelB:
// for の場合
for( A ; B ; C ) {
:
break ;    // goto labelD ; と同じ
:
continue ; // Cの繰り返し更新処理に飛ぶ
:
}
labelD:

switch(式) { case … } 文は、switchの式の値に応じて、 その値と同じ定数が書いてある case ラベルにジャンプする命令。

for( i = 0 ; i < 5 ; i++ ) {
switch( i ) {
case 1 :
case 2 : print( "(1or2)" ; // 1,2の値の場合
break ;
case 3 : print( "(3)" ) ;  // 3の場合(break;が無いので4も実行)
case 4 : print( "(4)" ) ;  // 4の場合
break ;
default: print( "(?)" ) ;  // 該当の値がなければ
break ;           // default ラベルに飛ぶ。
}
}

第24回プログラミングコンテスト(旭川)スタート。

例年よりは公開時期も少し早まったように思いますが、 第24回全国高専プログラミングコンテストの情報が公開されました。

課題部門は、例年テーマが2年続くこともあり、 予想通りの「少子高齢化」となっています。

競技部門については、サイコロを使った通信 「じょっぴん通信 ~ダイスきな人に伝えてくだサイ~」 だそうです。

電子情報の創造工学では、こういったプロコン・ロボコンに向けて 開発を行いますが、内容をよく確認し、応募への作戦を練ってくださいませ。

就職者の集計(H20-H24)

同じく、就職状況の集計結果で、H20-H24の5年間の集計結果。 なお、株式会社などの記載は、並べ替え作業の中で省略させて頂きました。

県内

企業名 人数
パナソニックエレクトロニックデバイス 7
アートテクノロジ 2
アイジュピタ 2
メディカルジャパン 2
サカイエルコム 2
jig.jp 1
永和システムマネジメント 1
サイエンスクラフト 1
ALL CONNECT 1
ZYYX 1
ナチュラルスタイル 1
ナンバーフォー 1
プログラミングファスト 1
アスワ電機 1
信越化学(武生) 1
リコー福井事業所 1
山田技研 1
松浦機械 1
イワシタ 1
サンワコン 1
浜本テクニカル 1
瑞穂栄商事 1
やなせ和紙 1
ES株式会社 1
福井市役所 1

県外

企業名 人数 方面
向洋電機 4 大阪
SEBACS 3 京都
京セラコミュニケーションシステム 3 京都
大阪ガス 3 大阪
三菱電機(神戸) 2 兵庫
NECネッツエスアイエンジニアリング 2 東京
日新電機 2 京都
関西電力 2 大阪
NHKメディアテクノロジー 1 東京
NTTぷらら 1 東京
アットウェア 1 東京
アドソル日進 1 東京
エーアイテクノロジー 1 東京
国立印刷局 1 東京
ソニーエンジニアリング 1 東京
日立メディコ 1 東京
富士通マーケティング 1 東京
三菱電機インフォメーションテクノロジ 1 東京
パイオニア 1 神奈川
NTTネオメイト 1 大阪
大阪シーリング印刷 1 大阪
ダイキン 1 大阪
ダイヘン 1 大阪
西日本電信電話 1 大阪
兵神装備 1 兵庫
日新システムズ 1 京都
京セラ(滋賀蒲生) 1 京都
日本電産 1 京都
安川エンジニアリング 1 京都
出光興産(愛知製油所) 1 愛知
日本車両製造 1 愛知
日本たばこ産業 1 愛知
フジテック 1 滋賀
北陸電力 1 富山
セイコーエプソン 1 長野

進学者の集計(H20-H24)

福井高専のパンフレットへの記載で、 大学進学状況をまとめているので、データを公開。 H20〜H24の5年間の電子情報工学科の進学先と人数。

福井大学 18
福井高専専攻科 17
豊橋技科大 15
金沢大学 11
筑波大学 7
和歌山大学 4
京都工芸繊維大学 2
神戸大学 2
京都大学 1
大阪大学 1
名古屋大学 1
九州大学 1
東京農工大学 1
お茶の水女子大 1
広島大学 1
茨城大学 1
岐阜大学 1
千葉大学 1
日本大学 1
滋賀県立大学 1
神戸芸術工科大学 1

ssh -R + stone

FW内部から、自宅サーバへのトンネルを掘る時には、 以下のコマンドが便利で使っている。

$ ssh -R 100XX:localhost:22 自宅サーバ
# 100XX は適当なポート

この時、自宅で "slogin -p 100XX localhost" を実行すれば、FW内部に 入れる。だけど、自宅内の他の端末から ssh アクセスしたくても、localhost だから、 自宅内サーバを ssh を経由しないとだめ。

かといって、以下のコマンドは動かない。なぜだろ。

$ ssh -R 100XX:192.168.Z.Z:22 自宅サーバ

ということで、stone を使えばいいと気づく。

$ ssh -R 100XX:localhost:22 自宅サーバ \\
stone localhost:100XX 192.168.Z.Z:100XX

これならば、FW内部だけで閲覧可能なWebページにアクセスしたかったら、 FW内部で動いているProxyサーバに接続させればいい。

$ ssh -R 8088:localhost:8080 自宅サーバ \\
stone localhost:8088 192.168.Z.Z:8088

自宅ネットワークで、ブラウザのProxyを "192.168.Z.Z / 8088"に設定してアクセスしたら、 ばっちり、FW内部のページが見れた。 これで、出先でも、VPNで自宅にトンネル掘ってから、このトンネルと合わせ技にすれば、 FW内部のページも見れる。

sshfsを使ってみる

sshfs が、Mac OS X でも使えるとの記事を見つけて、試してみる。

まずは、osxfuse と sshfs を iMac にインストールする。 このサイトより、必要な .pkg と .dmg を取得&インストール。あっさり完了。

接続は、相手サイトにパスワード認証などが省略できるように、 ssh-keygen コマンドあたりを実行し、相手サイトに公開鍵をインストールしておく。 あとは、以下のコマンドで終わり。

(あらかじめ相手サイトに~/mntのマウントポイントを作っておく)
$ sshfs useid@remotehost:/home/path ~/mnt

確かに便利にはなったけど、コマンドで scp を打ち慣れていると、 そんなに「便利になった」感は、ない。

リモートサイトからローカルをマウント

FWの内側のローカルホストから、相手サイトにトンネルを掘る場合、 以下のsshコマンドをよく使ってる。

(ローカルホストにて)
$ ssh -R 100XX:localhost:22 remotehost
# 100XXは適当なポート番号
(相手サイトにて)
$ slogin -p 100XX localhost
# これで、FW内部にloginできる。

これができれば、相手サイトからFW内部のディスクもマウントできるから、あとはGUIで簡単に触れるようにするために、sshfs を実行。

(相手サイトにて)
$ sshfs userid@localhost: ~/mnt -p 100XX

ただし、実行しようとしたら、"/dev/fuse Permission Denied" のエラーが出た。 ということで、"sudo adduser 自分のID fuse"にて、fuseグループに所属させる。 一度、logout して再loginすれば、sshfs でマウントできる。

システム

最新の投稿(電子情報)

最近の投稿(斉藤 徹)

アーカイブ

カテゴリー