2017年11月17日金曜日

「最高」の一言

私は機会があれば、本屋へ行きます。
本屋で最近流行の本とは何かを知るのが好きです。

先日も本屋へ寄る機会がありました。
「最強の仕事術」「最強のリーダーシップ」「最強の教科書」「最強の健康法」「最強の学問」など、
「最強」を使う題名が多く目に入りました。
「最強」の本ばかりです。

最強とは何でしょう?
漢字で「最も強い」と書きますが、
何と比べて強いのか、なぜ強いのか、
内容を読まないと分からないものです。
しかし、最も強いものとは、その分野において一番強いとの意味です。
一つしかないのです。
なんでもかんでも「最強」を使えば、
逆に著者が主観的に「最強だ!」と思っているだけではないかと疑問がわき、買うのをやめます。

「最強」はとても便利な言葉ですが、
使いすぎると説得力がなくなります。
もう少し語彙を増やして、もっと適切な言葉で表現してほしいです。
読者にわかりやすい最強の題名を目指しましょう!

私も気を付けます!😅

2017年11月16日木曜日

Javaで音を鳴らす

Javaで警告など音を鳴らすにはどうすればいいでしょうか?
WAVファイルを再生する方法もあります。
でも、BASICならSOUNDPLAYコマンドのように、
単純にある周波数を一定の時間に鳴らすのができないのか?

グーグルで調べたら、
Toolkit.getDefaultToolkit().beep();
というメソッドがあります。
(事前にimport java.awt.Toolkit;
をする必要がありますけど。)
でも、なぜかLinux Mintでなりませんでした。

もう少し探したら、StackOverflowでこのクラスを見つけました。
まさかBASICのSOUNDコマンドと同じ、
ある周波数を一定の時間に鳴らす。
700Hzを0.5秒に鳴らすには、
SoundUtils.tone(700,500);
  
ここで紹介します。ーーーーーーーーーーーーーーーーーーーーー
import javax.sound.sampled.*;

public class SoundUtils {

  public static float SAMPLE_RATE = 8000f;

  public static void tone(int hz, int msecs)
     throws LineUnavailableException
  {
     tone(hz, msecs, 1.0);
  }

  public static void tone(int hz, int msecs, double vol)
      throws LineUnavailableException
  {
    byte[] buf = new byte[1];
    AudioFormat af =
        new AudioFormat(
            SAMPLE_RATE, // sampleRate
            8,           // sampleSizeInBits
            1,           // channels
            true,        // signed
            false);      // bigEndian
    SourceDataLine sdl = AudioSystem.getSourceDataLine(af);
    sdl.open(af);
    sdl.start();
    for (int i=0; i < msecs*8; i++) {
      double angle = i / (SAMPLE_RATE / hz) * 2.0 * Math.PI;
      buf[0] = (byte)(Math.sin(angle) * 127.0 * vol);
      sdl.write(buf,0,1);
    }
    sdl.drain();
    sdl.stop();
    sdl.close();
  }

  public static void main(String[] args) throws Exception {
    SoundUtils.tone(1000,100);
    Thread.sleep(1000);
    SoundUtils.tone(100,1000);
    Thread.sleep(1000);
    SoundUtils.tone(5000,100);
    Thread.sleep(1000);
    SoundUtils.tone(400,500);
    Thread.sleep(1000);
    SoundUtils.tone(400,500, 0.2);

  }
}

2017年11月15日水曜日

書籍管理ツールを作ろう

昨日、所持書籍を管理するツールを紹介しました。
だが、やはり自分で作ることにしました。
次のプログラミングプロジェクトです。
言語はJava、JREがあればWindowsでもMacでもLinuxでも動けるはずです。

今の考えは、Google BooksのAPIを使った、書籍情報を取得する。
パソコンについているカメラでISBNをスキャンする。
データはXML形式で保存する。
基本情報は:
  • 書名
  • 著者名
  • 出版社
  • 出版年
  • ISBN
  • ジャンル
あとはユーザのコメントです。
基本表示は一覧、でもジャンル別、出版年順、著者別の表示もできるようにしたいです。

いつかこのツールを公開できるといいですね。
お楽しみに!😉

2017年11月14日火曜日

ISBNで所持する本を管理

ISBNを読み取り、そして自動的に本のデータをネットから取得し、
持っている本を管理するツールが欲しかったです。
最初、自分で作ろうかなと思いましたが、
ちょっと調べたら、
既にあるとわかりました。

日本語の本なら、
本棚 本と雑誌管理、新刊検索
というアプリがあります。
(「蔵書マネージャー」もありますが、楽天ブックスしか検索できないみたいです。)

洋書なら、
Book Catalogue
がいいみたいです。

まだちゃんと使っていませんが、
携帯のカメラでISBNをスキャンして、
自動的に本をデータベースに登録するみたいです。
便利そうです。
時間がある時、使ってみます!😄

2017年11月13日月曜日

ヒーローの旅

ごく普通の少年。
とても難しい目標。
最初は避けようとしたが、逃げられなかった。
与えられた目標を達成するために旅をでる。
他人に助けられながら少年が成長し、目標を達成する。
そして、得られたパワーを持って故郷に戻る。
最終的に到達した場所は出発した場所と同じです。
でも、少年は別人になりました。

神話や物語の原型と言われる
キャンベルの「ヒーローズ・ジャーニー(英雄の旅)」 という説です。
この流れにそって物語を書けば、失敗はしないでしょう。
あとは中身です。

2017年11月11日土曜日

守れないルールは作らない

以前、組織のルールを作る側に従事したことがあります。
ガバナンスのため、こうするべきだ、ああするべきだと思うことがいっぱいありました。

でも、上司に提案して、言われました。
「現場でこのルールを守るために、なにをしなければなりませんか?彼らはこのルールを守ることが実際にできるのか?」

あ、そうだ。
守れないルールを作っても仕方がありません。
紙上ではしっかりしているとは見えても、
現状は違う。
計画があっても実際に実行できていないと同じです。

実行しない計画を立てても意味がありません。
守れないルールを作っても意味がありません。
実行可能、実現可能なものを作りましょう。

2017年11月10日金曜日

BASICでプログラミング基礎を固める

昔、コンピューターを学ぶ時、BASICがよく使われました。
文法的に英語に似ている、そして簡単です。
もちろん、簡単だから、複雑なことがやりにくいです。
でも、できなくはない。
コンピューターを理解すれば、
簡単な号令を組み合わせして、組み立てればできます。

キーワードは、「コンピューターを理解すれば」です。
だからBASICを通じて、コンピューターの基本を学ぶ。
そして、学んだ基本を使って、コンピューターを操作する。
操作することによって、理解を深める。
深めた理解に基づいて、更に複雑な操作をする。
この繰り返しで、コンピューターについての理解をどんどん深めていく。

今はライブラリで数行のプログラムでも複雑なことができます。
でも、裏でどんなことをしているのか?
そして、バッグが出たら、どう解決するのか?
コンピューターに関する理解が浅いほど、解決するのが難しいです。
やはり最初から、BASICを通じて基礎をしっかり固め、
次にCやJavaやPythonなどで応用するのがベストではないかと思います。
皆さんはどう思うでしょうね?