ソモサン

私rohkiによる活動や読書の記録をつらつらと書くページです

2015年歳末棚卸し

Twitter 見ながらふりかえり。

なんか、色々積もり積もったものを頑張った1年だったかなぁ、と感じます。
特に CI 環境については、なんでできないんだろうを一つ一つ潰して、やっとできるようになったので、
結構感慨深くあります。*1

Podcast やブログ記事を見ながら、そうそうや違うんじゃね、と自分の意見も強く持てるようになりました。
この辺は新しい課に異動したことによる恩恵ですね。同じく課員となった方や同じプロジェクトを進めている方が僕と違う観点をもってられるので、とてもありがたいです。
どうしても技術よりになるところを、製品としてどうなのかと諌めてもらっている感じがします。

で、来年はもうちょっとコードを出していきます。
関数型も勉強していいところとかも見えてきたので、その辺を反映したコードを出す感じですかね。
この間の RadStudio 勉強会で LT した内容も、関数型を受けての出力なので。

最後に、来年はバグに当たらない年がいいかなぁ…

*1:そういやブログに書くって言って、書いてない…

DevLOVE現場甲子園2015『西日本大会』に参加してきた

devlove-kansai.doorkeeper.jp

ということで、行ってきました。
かるい気持ちの参加*1ではあったんですが、とてもタメになる会になりました。いやー、よかった。

今年のテーマは「現場のDiff」ということで、改善した差分や立場の差分、考え方の差分についての発表がありました。

以下感想です。

*1:会場は弊社ですた。裏方をちょっとやったり

続きを読む

Delphi の IFuture やら ITask やら

unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
  FMX.Controls.Presentation, FMX.StdCtrls, System.Threading,
  System.Generics.Collections, System.Classes;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { private 宣言 }
    function GetRandomInt(): IFuture<Integer>;
  public
    { public 宣言 }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
  TTask.Run(
    procedure
    var
      Tasks: array[0..4] of ITask;
      ValueStrs: array[0..4] of string;
      ii: Integer;
      Sum: Integer;
    begin

      for ii := 0 to 4 do
      begin
        Tasks[ii] := GetRandomInt().Start;
      end;

      TTask.WaitForAll(Tasks);

      Sum := 0;
      for ii := 0 to 4 do
      begin
        Sum := Sum + IFuture<Integer>(Tasks[ii]).Value;
        ValueStrs[ii] := IFuture<Integer>(Tasks[ii]).Value.ToString();
      end;

      TThread.Synchronize(nil,
        procedure
        begin
          ShowMessage(string.Join(' + ', ValueStrs) + ' = ' +  Sum.ToString());
        end
      );
    end
  );
end;

function TForm1.GetRandomInt: IFuture<Integer>;
begin
  Result := TTask.Future<Integer>(
    function: Integer
    begin
      Result := Random(100);
      Sleep(Result * 100);
    end
  );
end;

end.

一応出来たけどさ・・・
無名関数が多すぎ。
あと型推論ジェネリクス書かなくて良くなるともうちょいマシかな。

function TForm1.GetRandomInt: IFuture<Integer>;
begin
  Result := TTask.Future(
    function: Integer
    begin
      Result := Random(100);
      Sleep(Result * 100);
    end
  );
end;

これとかエラーになるけど、前後見たら普通に補ってくれてもー、とちと思ってしまう。

Delphi 10 Seattle Professional 買ったった。お値段なんと・・・

持ってなかったんです。

会社のライセンスと社内のPCだけで色々頑張ってました。
だって高いんですよ・・・

今回の購入金額、17万5千円
何気に今までの人生の中で、5本の指に入る購入金額な気がする・・・
XE8 だと、13万ぐらいだったんですけどねー。
ライセンスがどうのであがりましたね。
買収されたけどこの辺どうなるんでしょう。ちょっと不安。

何はともあれ、買ったからには本腰入れてやりますとも。
直近は Rad Studio 勉強会のネタ作り。

rad-studio-osaka.doorkeeper.jp

あ、Rust も勉強中だよ!

与太話

www.embarcadero.com

おもーい公式サイトなんですけどさらにはた迷惑なことに、一部リンクがアメリカ経由っぽいんですよね・・・
以下流れ

アメリカサーバーへリクエスト  
  ↓  
2~4秒後、レスポンスで 303 が返ってくる  
  ↓  
jp へアクセス  
  ↓  
2から4秒後ページ表示完了  

日本サイトだけってわけじゃあなくて、アメリカ以外全部そうなんだよなぁ・・・
誰に言えばいいのやら。

RadStudio 勉強会で30分話してきた

面白かったけどツカレタ・・・
何がって準備が。

rad-studio-osaka.doorkeeper.jp

話してきた内容はまた後日詳細を書きます。 概要は Delphi で BDD やろうぜーて奴です。(なんとびっくりあるんです。DelphiSpec ってやつが)

発表終わった後質問貰えて良かった・・・ レスポンス大事やね。自分も質問もっとしてきます。