第三話 勉強会1


 約1週間かけて、いろいろな資料プログラムを用意した。


 開発の勉強会の二回目が行われる。

 もう、諦めた。十倉さんも、あの後、謝罪してくれたが、もうやってみよう。実際に、就職に役立つ知識ではないが、まったく無意味な知識でも無いだろう。


 特別授業の教室は、前回と違って、パソコンルームで行われる。


 まずは、電脳倶楽部が策定した仕様とスケジュールが提示され、説明が行われる。


 うーん。無理目なスケジュールになっている。機能も詰め込みすぎている。


 指摘するのは簡単だ。


 戸松先生と目が合う。


「篠崎。何かあるのか?」


「はぁ・・・。スケジュールですが、戸松先生が詰め込んだのですか?」


「ん?どういうことだ?」


「いえ、あまりにも綺麗にできているので、気になったのです」


「言っている意味がわからない」


「全てが、予定通りに進む前提で作られています」


「当然だろう?」


「えぇ問題が発生しなければ、良いのですが、どこかが遅れたら、全部が遅れます。やはり機能を削ってバッファーを作るべきです」


「そうなのか?」


「はい。他にも、テスト期間が短すぎます。バグがない前提でテスト期間が作られています」


「うーん」


「今の倍は欲しいですね。バグを修正する時間も必要になります。開発期間とテスト期間を同等にしてもいいと思います」


「それだと、テスト期間が多くなりすぎないか?」


「短くして、キツキツで作業をしたいのなら、今のままでもいいと思いますが、学校の作業でデスマは止めたほうがいい。余裕があると思って作ったスケジュールをさらに倍にする位の気持ちでちょうどいいと思います」


「それだと、仕様を策定した機能の半分程度しか実装出来ないぞ?」


「戸松先生。”半分も”実装ができるのです。それに、テスト期間中に新しい機能の実装を始めれば、テストが終わる頃には、次の機能のテストが開始できます」


「え?」


「一度に作る必要はないでしょ?そもそも、無理です。最低限の機能でサービスインして、作り上げていくのが健全です」


 結局、戸松先生に質問される形で、ダメ出しをしてしまった。

 余裕を持ったスケジュールにしておかないと、普通科の教諭たちが何を言ってくるのかわからない。予定よりも、早く進んだのなら文句は言われないが、予定よりも遅れると、文句を言われる可能性がある。成果物が同じなら、圧倒的に前者のほうが問題に発展する可能性が低い。


「そう言っても・・・」


「だから、仕様は、最終的に目指す所まで作って、今期は”ここまで”とかにすればいいと思います」


「ん?」


「最後の形が見えないから、文句を言い出す人たちが居るのです。だったら、目標とする形が見えるようにして、文句があるなら、金と人材を寄越せと言えばいいのです。予算が着いて、初めて外部を頼ってもいいのでは?」


「それだと、計画の変更とか難しくないか?」


「だから、スケジュールを短期間で区切るのです。リリースのタイミングを多くして、ユーザからの意見を聞いて、目標の形を修正していくのです」


「・・・。そうか、それなら問題はなさそうだな。年度末にして、第一弾をリリースして・・・。来期から利用すると考えて、機能を絞り込んだスケジュールを考えるか?」


「はい。導入できる人員を考えれば、その辺りが無難だと思います。機能分けをする時に、他との関連性や難易度も考えるとスケジュールが組みやすいですし、進んだ時や、遅れた時に、組み換えが簡単になります」


「難易度か、考えていなかったな・・・。でも、篠崎、電脳倶楽部の技量が上がれば、難易度も変わってこないか?」


「指標を作ればいいと思いますよ。”技術的に難しい物”/”作り方が想像できる物”/”作ったことがある物”/”組み込んである物”/”作りたくない物”に、区分すれば、難易度は定義できると思います」


 戸松先生は、電脳倶楽部の面々を見て、やってみるかと頷いている。メンバーたちも、考えてみると言っているので、任せる。来週、もう一度、発表して話をすることになった。


 勉強会のメンバーは、なぜか増えていた。

 16名だったと思ったが、新しく3名追加されて、電脳倶楽部から5名が参加することになった。一人と勉強会をするのも、24名と勉強会をするのも、さほど違いはない。問題はない。面倒だけど、”問題がない”と考えないと、テンションだけが下がっていく。だから、問題はない。


 まずは、先週の質問に対する答えを提示する。

 持ってきた、ノートパソコンをプロジェクタに繋いだ。


 簡単に、説明をする。


 Javaで作られたプログラムが動作する環境にしてある。

 PHPがコマンドラインで動作する環境にしてある。

 C#で作られたプログラムが動作する環境にしてある。


 他に、C言語やDelphiやPythonやJuliaやRubyの環境も用意してある。完全に、同じではないが、その辺りは目を瞑ってもらおう。

 言語の特性を理解する為に用意しただけだ。


 説明をした後で、各言語で作成したプログラムを見せる。

 簡単に、プログラムの説明を行う。


 1~10万までの素数を表示するプログラムだ。ソースコードを簡単に説明する。


「篠崎!」


「なんでしょう?」


「なんとなく、俺たちも言語の違いを考えてみたが、今、お前が見せたコードは、殆ど同じに見えるぞ?」


「そうですね。ある程度は、同じに見えるように作りました。言語が違っても、大筋には違いが出ないので似てきます」


「そうなのか?」


「はい。『代入して計算して比較して繰り返す。結果を出力する』のは基本ですから、大きく違いません」


「・・・」


「次に、実行する為のスクリプトですが、実行の開始に時刻を保存して、プログラムの終了で、かかった時間を計算して表示します。ただ、言語の実行環境で、起動方法に違いがあります。その辺りは、こういう物だと考えて下さい」


 それから、各プログラムを実行していく、テストはしてあるので、結果は同じになるが、実行速度に差が出ている。

 1回目の実行と2回目の実行で速度が上がる言語も多い。


「篠崎。なんで、こんなに結果が違うのだ?10倍以上も遅い言語もあるよな?」


「あぁその話は、次と次の結果を見てからにしましょう」


「わかった」


 ノートパソコンのOSを切り替える。

 次は、Linuxだ。全部が動くわけではないので、動かない物は動かないと説明して、同じように動かしていく。


 そして、最後は、Android タブレットを取り出して、動く物を動かす。何もかもが違うので時間の計測はしていない。言語で、動作が違うという認識をしてもらう。


「篠崎、iPhoneでは動かないのか?」


「あぁある程度は動きますが、iPhoneは少しだけ面倒な手続きが必要なので、作ってきていません。興味があるのなら、作り方を教えます」


「そうか、わかった。なかったのが不思議だっただけだ」


「各、OSで言語別に同じ結果になるプログラムを実行しました。大まかにですが、特性がわかったと思います」


「篠崎。でも、遅い言語にも理由があるのだろう?」


「そうですね。スクリプト言語は基本的に遅いです。次に、中間バイナリを生成する言語。そして、コンパイル言語です」


「それらの違いは?」


「スクリプト言語は、1行1行解釈されて実行されます。中間バイナリ言語は、実行に必要な部分を切り離して、OSに依存しない部分だけをコンパイルで生成して実行されます。コンパイルは、OSに依存する部分も組み込まれてから実行されます」


 言い方は乱暴だが、この程度の認識で問題はない。


「そうか、そうなると、スクリプトが遅くて、コンパイル言語が早いのだな」


「そう考えて居れば、大きく外しません。OSに依存すればするほど実行速度が早くて、OSに依存しない言語は速度が遅くなると考えて下さい」


「わかった。それで適材適所になってくるのだな」


「はい。それは、各言語が持っている特徴にも繋がります」


 やっと、今日の本題に入ることができる。

 言語の得手、不得手を説明しなければ、開発の勉強に進めない。

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る