日本語LLM

こんにちは、未来環境ラボの中口です。みなさんもうChatGPTは使っていますか?ChatGPTと会話するだけでも楽しいですが、Webページの要約や論文の検索、Pythonコードの実行など、次々と新しい機能がリリースされてどんどん進化しています。今回はそんなChatGPTに近い性能を持ち、かつ無償で利用できるLLM(Large Language Model)を紹介します。

続きを読む

comments

2020年度 活動まとめ

2020年度はコロナ禍の中,活動方法を模索する1年でした。年度当初より京都情報大学院大学,京都コンピュータ学院含むKCGグループは一斉にオンライン講義に移行し,ラボの活動も全てオンライン化しました。その影響で機材を使ったプロトタイピング などができなくなりましたが,金曜夕方に実施していたゼミの参加者は増加しました。

できごと

  • 9/18 オンラインアイデアソン :「オンライン授業を効率的に行う仕組みを考えよう」
  • 11/6  KCGI創立17周年記念式典,技術交流会

対外発表など

  • 堀口尚史, 中口孝雄, 佐藤元昭, “フォームサービスを用いた口腔ケア実施報告システム ,” 電子情報通信学会サービスコンピューティング研究会, 2020.8.
  • 中口孝雄,”リアルタイムコラボレーションツールのためのオブジェクト共有サービス,” 電子情報通信学会サービスコンピューティング研究会, 2020.11.
  • 堀口尚史, 中口孝雄, 佐藤元昭, “フォームサービスとスプレッドシートサービスおよびテキスト解析サービスを組み合わせた口腔ケア実施報告分析システム,” NAIS Journal, 2021.3.
  • 中口孝雄, “機械学習サービスを登録・提供するサービス基盤の構築に向けて,” NAIS Journal, 2021.3.

ゼミは主に授業期間中,隔週で金曜日の夕方に開催しています。大学で実施されているようなゼミと同様で,KCG生,KCGI生,他大学の学生,OBや現役エンジニアも参加する,研究開発活動の発表や議論の場です。毎回数件の発表ののち,オンライン飲み会に以降し,交流を深めるとともに熱い議論を交わしています。

ゼミのテーマ例

コラボレーションツール,仮想空間+ビデオ会議,ソーラー発電+仮想通貨マイニング,DeepL,口腔ケアシステム,消防団員支援,なでしこ,M1Macなど

前年度→ 2019年度 活動まとめ

comments

2019年度 活動まとめ

2019年度の活動をまとめてみました。

できごと

ゼミ

  • 主に授業期間中、隔週で金曜日の夕方にゼミを開催しました。
    大学で実施されているようなゼミと同様で、発表や議論の場です。
    メンバーは固定ではなく、学外の社会人なども参加しています。

各種リンク

前年度→ 2018年度 活動まとめ

comments

2018年度 活動まとめ

2018年度の活動をまとめてみました。

できごと

執筆

各種リンク

前年度→ 2017年度 活動まとめ

comments

2017年度 活動まとめ

2018年度の活動まとめを書こうと思ったら、そういえば2017年度の活動まとめがまだなかったので書いておきます。

できごと

各種リンク

次年度→ 2018年度 活動まとめ

comments

Java10がリリースされました

未来環境ラボの中口です。

遂にJava10がリリースされました。前バージョンのJava9から半年でリリースされことになり,Java8からJava9までに3年半かかったことを考えると大幅なスピードアップです。これはJavaを提供しているOracleが,新機能をどんどん取り入れてJavaを進化させるよう方向転換したためで,今後半年毎に新しいバージョンがリリースされる予定です(関連記事)。

さて,Java10ではいくつか新機能が導入されていますが,目玉はやはり,ローカル変数の型推論,”var”でしょう。JavaはJavaScriptやPythonと違って,変数の型を強く意識する必要がある,静的型付け言語です。静的型付け言語では,ソースを記述する際に,変数の型を決めておく必要があり,一旦型を決めると,後で変更できません(例えばint型の変数にString型のオブジェクトを入れることはできません)。そのため変数を使うたびに型を明示的に記述する必要があり,どうしても記述が冗長になってしまいます。コード例を見てみましょう。

List<String> strings = new ArrayList<String>();

Javaを書いたことがある人なら一度はこんなコードを書いたことがあると思いますが,変数の宣言時(“=”の左側)で変数の型(List<String>)を指定し,変数に代入するオブジェクトの生成時(“=”の右側)でも型(ArrayList<String>)を記述しています。varでは,この左側の型を省略できます。

var strings = new ArrayList<String>();

もちろんメソッドの戻り値を代入する際にも利用できます。

var r = Math.random() * 10;

ただしJavaは静的型付け言語であるという特徴は変わっておらず,スクリプト言語のように後から型を決めたり変えたりということができるようになったわけではありません。例えば次のコードはコンパイルエラーになります。

var i;
i = 10;

varを使うと変数の型を省略できますが,同時に変数の初期化を行う必要があり,その初期化で実際の型がわかる必要があります。例えば,次のコードはコンパイルできますが,

Runnable r = () -> {};

varを使うとコンパイルエラーになります。

var r = () -> {};  // コンパイルエラー!!

右側はラムダ式ですが,ラムダ式は実際のクラスを代入先の変数の型などで決めるので,varを使うと変数もラムダ式も型を決めようとしてお互いの情報に頼ってしまうので決まりません。逆に実際の型さえわかればその型として使えるので,今まで明示的に指定できなかった匿名クラスを扱うことができ,そのメソッドを呼び出せます(関連記事)。

var o = new Object(){
   public void func(){
  }
}
o.func();

個人的にはこれが一番嬉しいんですが,結構特殊なケースなのでピンとこない人も多いかもしれません。

Javaは今後半年ごとに新機能が追加され,どんどん進化していきます。他の言語も良いものがたくさんありますが,今一度Javaを見直してみてはいかがでしょう?

comments