github によるソースコード開示。

みむらです。

制作したソフトウェアは、私が作成した物に関してはすべてソースコードは公開可能なものとして、
以前から要求があった際にはいつでも開示していました。

ただ、github を始めとする、ソースコードを共有するためのツールが近年発展しているのを受け、
こちらでも github を活用したソースコード開示を行う事としました。

ただし、特に昔制作したソフトウェアに関して、2バイト文字をファイル名として利用しているケース、
また、内部に公開出来ない部分が含まれている場合(ライセンス、ソースコードが汚すぎる場合など)に関しては、
公には開示せず、今まで通りの方法を採ることとしました。

随時公開可能となった物に関しては、公開予定でいますが、
別途連絡を頂ければ、いつでも公開可能です。

github : https://github.com/mimura1133/

ではでは。

京都旅行 && ICTスクール同窓会 向かう車中にて。

WP_000013

大きな雲である。

雲は全速力で駆け抜けようとする新幹線にひっそりと寄り添い、
こちらを見つめてくる。

そしてその大きな姿を持って私を包み込もうとする。

時代は急速に進化を遂げ、様々な物が古いと言われ、そして皆は新しい概念に飛びつこうとする。
まるで私が今乗っている新幹線、現代の進化というものはまさにそんなものじゃないのだろうか。

WP_000011

時代は常に諸行無常である。
常に変化し形ある物は何れ崩れる。

そして、時代は常に繰り返される。

どんなに急速に時代が変わろうとも、
どんなに世界が変わろうとも、

それらはすべて、ちっぽけな一つにすぎない。

時代の変化にもがき苦しむぐらいなら、
自分の興味のある分野を研究し、楽しく技能を伸ばした方が数倍もいいのではないか。

視野を大きく持て。
まだ「時代の変化は激しい」と感じるならば、それはまだ視野が狭いのだ。

そんなことを、ふと外に見えた、偉大な雲を見て感じました。

オペレーティングシステムとは何か

オペレーティングシステム 設計と実装 第3版 1.1

カーネルモードとユーザモード

カーネルモード

CPUがアーキテクチャのすべてに対して命令を実行出来る状態。

すべてのメモリを始めとするハードウェア資源のすべてにアクセス可能な状態で、
主にOSのカーネルが動作する時に利用するモード。

別名として、マスターモード、スーパバイザモード、特権モード などと呼ばれる。

ユーザモード

コンピュータ資源へのアクセスが一部制限されている状態。

通常のアプリケーションプログラム、ソフトウェアが動作する際に利用するモード。


オペレーティングシステムの行う主な仕事

  • ハードウェアを抽象化し、共通化された機能を提供する。
  • アプリケーションに対してハードウェア資源を割り当てる。
  • CPU時間を均等に各プロセスに与えて実行させる。
    (スケジューラによっては均等に割り当てられない)
  • 共通したユーザインターフェイスの提供
    (ユーザが使いやすいインターフェイスの提供)
  • データの管理

要は主に、各リソースの資源管理および、ユーザインタフェースの共通化を行う。

コンピュータシステムの一般的な構造。

オペレーティングシステム 設計と実装 第3版 1.1

コンピュータシステムの構造

コンピュータシステムの構造は、大まかに書くと以下の様になる。

(最上位)アプリケーションプログラム
(中位)システムプログラム
(下位)ハードウェア

アプリケーションプログラム(応用ソフトウェア)

ユーザモードで実行される、利用者が普段使っているアプリケーションソフトウェアの部分。
つまり、一例を挙げると、

image Firefox image Skype

上記のように、ユーザ(利用者)がコンピュータに組み込んで利用するソフトウェアのこと。


システムプログラム(基本ソフトウェア)

オペレーティングシステムと、それに付加するプログラムがここに含まれる。

オペレーティングシステム

Windows だったり、Linux だったり Mac OS だったりという、
各コンピュータごとの差違を吸収し、抽象化してくれるソフトウェアのこと。

また同時に、共通の機能、画面、デザインなどの「共通したインタフェース」を提供することも担う。

オペレーティングシステムに付加するプログラム

動作の区分上は、上記に述べた「アプリケーションプログラム」と同じであるが、
OSのパッケージに含まれているソフトウェアを指す。

例を挙げると、

image電卓 image メモ帳

などがある。


ハードウェア

ここには「物理装置」「マイクロアーキテクチャ」「マシン語」が含まれる。

物理装置

集積回路や電源、その他のパーツで構成される。
ここの部分は電子工学が扱う範囲になる。

マイクロアーキテクチャ

コンピュータにおいての各命令の処理方法を定めた仕様のこと。
このレベルにある物として、CPU (Central Processing Unit) のレジスタや、
データバスなどがあげられる。これらの装置がどのように動作するか、処理するかを定めた物が、
「マイクロアーキテクチャ」である。

*マイクロプログラム(マイクロコード)
最近よく用いられているプロセッサである x86 プロセッサは、CISC 系のCPUに分類され、
これらのCPUでは、内部に非常に小さなプログラムを動作させ、複雑な命令を実装している。

なお、RISC 方式のプロセッサは、原則としてハードウェアの回路(ワイヤードロジック)のみで構成されるため、
このようなプログラムは原則利用されていない。

マシン語

アセンブラ言語のプログラマが良く利用している、コンピュータの制御を行う命令の集まりのことを、
命令セットアーキテクチャ(Instruction set Architecture, ISA) と呼ぶ。

また同時にこれについて、特に2進数のコード(オペコード)のセットとして扱う場合、機械語(マシン語)と呼ばれる。

これらの命令は50~300ぐらいの命令から成り立ち、多くは、マシン内のデータ移動、演算、比較などを行う。

Python + pywin32 で COM 叩いてしゃべらせる。

どうもみむらです。
普段は SUA (UNIX 互換環境) 上で叩いているのですが、
今日は堂々と Windows 上で叩いてみます。

PyWin32 ってのをつかって、 COM コントロールを叩いてみます。

とりあえず。COM コントロールとは。

Microsoft社が提唱する、部品化されたプログラムを作成・利用するための基盤となる技術仕様。特定の機能のみを持つプログラム部品を組み合わせることでアプリケーションソフトの開発が容易になる。この仕様に基づいてデータのやりとりができるプログラム部品のことをCOMコンポーネントと呼ぶ。

COMとは【Component Object Model】 – 意味-解説-説明-定義 : IT用語辞典

だそーです! (ぉ

夢のある話をすると、COM コントロールを使うことで、
音声認識や音声合成、各種 Office アプリケーションの制御、その他 COM コンポーネントが提供する機能を
使うことが出来ます。


1.Python の導入

http://www.python.jp/Zope/download/pythoncore
上記URL から、 Python 2.x 系をインストールします。

えーと、Python 3.x 系はいろいろと変わったようで。でも動くのかなぁ。うーん

2.Python for Windows extensions の導入

http://sourceforge.net/projects/pywin32/files/pywin32/
ここから最新ビルド(一覧の 「Build???」 の数字が一番大きい物を選択)のうちの、
上で導入したバージョンと同じ物(無ければ近いバージョン)をインストール。

3.叩く。

ばんばん! ちがいます。
スタートメニューから Python を立ち上げて、

image

このように立ち上げておきます。

続けて、

import win32com.client

とタイプ。

image

今回は音声合成ということで、「Sapi.SpVoice」を使って、

Speak メソッドを叩いてしゃべらせます。

もし今回使う、「Microsoft Speech API」が気になる人は、

http://msdn.microsoft.com/en-us/library/ms723602(v=VS.85).aspx

この辺の資料を参考にして下さい。

speech = win32com.client.Dispatch("Sapi.SpVoice")
speech.Speak("Hello Python World!")

実行しますと、Win7 / Vista 環境では、多分、米国英語のおねいさんが

しゃべってくれると思います。

XP 環境ですと、なんか相当声のしゃくれたおっちゃんがしゃべってくれた気がします。

・・試してないですが。

とりあえずこんな感じでー。