【読書感想】悪いヤツほど出世する

悪いヤツほど出世する (日経ビジネス人文庫)

悪いヤツほど出世する (日経ビジネス人文庫)

 

 リーダー教育の間違いを学べる本

この本を読んで、とにかく現在の人々のリーダー観やリーダー教育は矛盾や非合理さを抱えていて、だからこそ不幸になる部下が量産されるという構造を感じました。

「人々の想像するリーダーとは、誠実で、思いやりに溢れ、自己の利益より大切なものを知っているような存在だが、現実にはそのようなリーダーは少なく、それどころかリーダーの大半の正確は真逆である」という現実について理屈立てて説明していくのが、読んでいてとても面白かったです。

リーダー教育の正解についてはあまり強く触れられていませんでしたが、無理に正解を提示しようとするのではなく、「こういう構造があるからこういう結果が生まれるんだ」ということを丁寧に説明しようとする姿勢が好印象でした。

以下、読んでいて感じたことを纏めます。

科学以外人を幸せにしない

「人々の想像するリーダーとは感動的なもので、リーダー教育も感動的なものであるべきだと考えがちで、実際のリーダー教育も感動的である場合が多い。しかしそのようなリーダー教育は科学には根ざしておらず、なんら具体的な成果を発揮できていない」という主張については非常に納得が有りました。自分もリーダーについての本を何冊か読んだ経験が有りますが、そこには感動的なリーダー像はあっても現実のリーダー像とはかけ離れたものしか描かれていなかったです。

この科学的じゃない方法で教育を行おうという姿勢はスポーツの体罰の問題などと似通っているなとも感じました。何にせよ、結局科学以外が人の大局的な幸せに貢献することはない、という確信をより強くできました。

リーダー教育やリーダーの評価にこそまず科学的なメスを入れるべきだと思いますが、それは中々実現されないものですね……。

誠実さが出世の役に立つとは限らない

嘘の裏には、自己保身のように矮小な理由だけでなく、組織内競争や企業間競争、信じたいことを信じたがる人の本能など、止むを得ない事情が有るということを知ることができました。

「リーダーは嘘を吐くし、それで誰かに損害を与えても許される」、つまり万人にとっての小事は(例え実際は小事でなかったとしても!)小事として扱うことで信用を保てるという内容は、納得と衝撃を強く感じました。

ただ、そのことが残念だとも思いました。自己保身のためであれ、会社を競争に勝たせるためであれ、嘘は必ず必要になってしまうのだということを感じました。

経営者への法規制はできないものだろうか?

個人的に強く感じたことは、現在の(特に大企業の)経営者はもう少し報酬の貰い方などを規制されるべきではないか、ということです。

データとしてCEOが受け取る報酬の増え方が大きすぎることは言われていますが、この本を読むと更に「自分の能力を印象によって大きく見せるだけで金をせしめている。これは詐欺師とどう違うのか?」という印象が強くなりました。労働者については能力を明確化しようとするのに、経営者の能力については可視化を避けようとしている*1辺りが納得いきません。

企業のトップが貰う金額はその企業に関わる人間の最低賃金のn倍まで、と規制するのはどうでしょうか。上手くいくとは思えませんが*2*3、そっちの方が健全な社会だと思います。

まとめ

どんな感想を抱くにせよ、現実を考えるという意味では一度読んでおいて損は無い本だと感じました。

*1:少なくとも、立派な企業理念を掲げる企業は多いのに、経営者の能力の可視化を行おうという自発的な動きは小さいと思います。

*2:労働者から搾取する仕組みを作る所が後を絶たないことになるでしょう。分かります。

*3:このような規制はそもそも議論の発生すら封じられるだろうとも思います。

【VB】自作したコンポーネントをデザイナーに表示する【.Net】

↓の記事の続きです。
wrongwrong163377.hatenablog.com

前回の問題点

コンポーネントをデザイナーで扱えないので、デザインの確認が難しい状態でした。
今回はデザイナーで自作コンポーネントを扱う手順を書きます。かなりバットノウハウなやり方ですが……。

手順

手順は↓の「不要部を削除」~「修正完了」までに上げてあります。
github.com

引数の無いコンストラクタを用意する

コンポーネントをデザイナーで扱うには、引数の無いコンストラクタを用意する必要があります。

Public Class CompornentBase
    Public Sub New()
        ' この呼び出しはデザイナーで必要です。
        InitializeComponent()
        ' InitializeComponent() 呼び出しの後で初期化を追加します。

        '別のフォームに設定するための準備
        With Me
            .TopLevel = False
            .Visible = True
        End With
    End Sub
End Class
デザイナーでコンポーネントを宣言する

デザイナーをコードから開き、以下のようにMyCompornentを宣言してControlsにAddします。

<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Parent
    Inherits System.Windows.Forms.Form

    'フォームがコンポーネントの一覧をクリーンアップするために dispose をオーバーライドします。
    <System.Diagnostics.DebuggerNonUserCode()> _
    Protected Overrides Sub Dispose(ByVal disposing As Boolean)
        Try
            If disposing AndAlso components IsNot Nothing Then
                components.Dispose()
            End If
        Finally
            MyBase.Dispose(disposing)
        End Try
    End Sub

    'Windows フォーム デザイナーで必要です。
    Private components As System.ComponentModel.IContainer

    'メモ: 以下のプロシージャは Windows フォーム デザイナーで必要です。
    'Windows フォーム デザイナーを使用して変更できます。  
    'コード エディターを使って変更しないでください。
    <System.Diagnostics.DebuggerStepThrough()> _
    Private Sub InitializeComponent()
        Me.SuspendLayout()
        '
        'Parent
        '
        Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
        Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
        Me.ClientSize = New System.Drawing.Size(800, 450)
        Me.Name = "Parent"
        Me.Text = "Parent"
        Me.ResumeLayout(False)

        Dim MyCompornent As New CompornentBase
        Me.Controls.Add(MyCompornent)
    End Sub
End Class
ビルドする

この状態でビルドすると、デザイナーでコンポーネントが表示できます。
f:id:wrongwrongwrongwrong163377:20180831204251p:plain
が、ここまでではまだ不完全です。

デザイナーで移動させる

この状態からデザイナーで移動を行います。
f:id:wrongwrongwrongwrong163377:20180831204435p:plain
するとVisualStudioが自動でよしなにやってくれるので、コードが以下のように変化します。

<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Parent
    Inherits System.Windows.Forms.Form

    'フォームがコンポーネントの一覧をクリーンアップするために dispose をオーバーライドします。
    <System.Diagnostics.DebuggerNonUserCode()> _
    Protected Overrides Sub Dispose(ByVal disposing As Boolean)
        Try
            If disposing AndAlso components IsNot Nothing Then
                components.Dispose()
            End If
        Finally
            MyBase.Dispose(disposing)
        End Try
    End Sub

    'Windows フォーム デザイナーで必要です。
    Private components As System.ComponentModel.IContainer

    'メモ: 以下のプロシージャは Windows フォーム デザイナーで必要です。
    'Windows フォーム デザイナーを使用して変更できます。  
    'コード エディターを使って変更しないでください。
    <System.Diagnostics.DebuggerStepThrough()> _
    Private Sub InitializeComponent()
        Me.MyCompornent = New UseFormcompornentSample.CompornentBase()
        Me.SuspendLayout()
        '
        'MyCompornent
        '
        Me.MyCompornent.BackColor = System.Drawing.Color.SpringGreen
        Me.MyCompornent.ClientSize = New System.Drawing.Size(200, 100)
        Me.MyCompornent.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
        Me.MyCompornent.Location = New System.Drawing.Point(81, 73)
        Me.MyCompornent.Name = "MyCompornent"
        Me.MyCompornent.Text = "Form1"
        '
        'Parent
        '
        Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
        Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
        Me.ClientSize = New System.Drawing.Size(800, 450)
        Me.Controls.Add(Me.MyCompornent)
        Me.Name = "Parent"
        Me.Text = "Parent"
        Me.ResumeLayout(False)

    End Sub

    Friend WithEvents MyCompornent As CompornentBase
End Class

手順は以上です。

【DxLib】描画スレッドで宣言したハンドルへの描画が止まる問題への対処【.Net】

別スレッドにおいてDxLibを動かして描画を行うプログラムで、exeから起動時に描画が停止する状況と、対応策をまとめます。
プロジェクト全体はGitHubに有ります。
github.com
※このサンプルは描画はUIスレッドから行うという原則に反しているので良くないです。形としてはTimerなりと組み合わせてデリゲートでメインスレッドから描画するのが正しいです。メインスレッドだけで触ればこの問題も発生しません。

状況

問題の発生するプログラムの構成と、問題の内容です。

構成

プログラムは以下のような構成です。

  • メインスレッド
  • 描画スレッド
    • 無限ループするスレッド

メイン画面のPictureBoxと、別画面として用意したFormに同時に描画をしています。Formへの描画は関連記事にまとめてあります。

プログラム

動かない状態を再現したプロジェクトはこちら

Imports System.Threading
Imports DxLibDLL

Public Class Form1
    Private isEnd As Boolean
    Private targetForm As Form
    Private drawThread As Thread
    Private pictureHandle As Integer

    'DxLibのオプション設定と初期化
    Private Sub InitDxLib(ByRef handle As Integer)
        DX.SetUserWindow(handle) 'ハンドルセット
        'ウィンドウがアクティブじゃない時も処理を続ける
        DX.SetAlwaysRunFlag(DX.TRUE)
        'DxLib_Init()を呼んだwindow以外からも操作を可能にする
        DX.SetMultiThreadFlag(DX.TRUE)
        'pngなどの透過チャンネルを有効に設定
        DX.SetMovieColorA8R8G8B8Flag(DX.TRUE)
        '一度裏画面に描画を行い、Flipすると描画が行われるように設定(ダブルバッファリング)
        DX.SetDrawScreen(DX.DX_SCREEN_BACK)
        '2枚以上の画面にScreen.flipする場合デフォルトではVSync待ちで遅くなるのでVSyncは切る
        DX.SetWaitVSyncFlag(DX.FALSE)
        'これが無いとプログラム本体のIME関連動作がおかしくなる
        DX.SetUseIMEFlag(DX.TRUE)
        '透過色を指定しない、これが無いとデフォルトでは黒が透過されてしまう
        DX.SetUseTransColor(DX.FALSE)

        If DX.DxLib_Init() = -1 Then MsgBox("初期化に失敗しました。", MsgBoxStyle.Critical)
    End Sub

    '描画ループ
    Private Sub DrawLoop()
        targetForm = New Form
        With targetForm
            .FormBorderStyle = FormBorderStyle.None '枠無
            .Size = New Size(192, 108)
            .Show() '表示
            .DesktopLocation = New Point(0, 0)
        End With
        Dim formHandle = targetForm.Handle

        InitDxLib(formHandle)
        Dim i As Integer = 0
        Dim sw = Stopwatch.StartNew()
        Dim color = DX.GetColor(100, 0, 0)

        While Not isEnd
            sw.Restart()

            DX.SetDrawScreen(formHandle)
            DX.ClearDrawScreen() '描画先初期化

            i += 1
            If i = 100 Then i = 0
            DX.DrawBox(i, 0, 100, 100, color, DX.TRUE)

            DX.SetDrawScreen(DX.DX_SCREEN_BACK) '描画先を裏画面へ
            DX.DrawGraph(0, 0, formHandle, DX.TRUE) '裏画面へ描画
            DX.ScreenFlip() 'メインウィンドウへ表示
            'サブウィンドウへ表示し、その後メインウィンドウへ処理を戻す
            DX.DrawGraph(0, 0, pictureHandle, DX.TRUE)
            DX.SetScreenFlipTargetWindow(pictureHandle) '描画先をサブ画面へ
            DX.ScreenFlip() 'サブ画面へ描画
            '後処理
            DX.ClearDrawScreen() '裏画面クリア
            DX.SetScreenFlipTargetWindow(0) '描画先をメイン画面(0番のハンドルの画面がそれ)へ戻す

            sw.Stop()
            Thread.Sleep(Math.Max(0, 16 - sw.ElapsedMilliseconds)) '簡単な垂直同期
        End While
    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        isEnd = False
        targetForm = New Form
        With targetForm
            .FormBorderStyle = FormBorderStyle.None '枠無
            .Size = New Size(192, 108)
            .Show() '表示
            .DesktopLocation = New Point(0, 0)
        End With

        pictureHandle = PictureBox1.Handle

        drawThread = New Thread(New ParameterizedThreadStart(AddressOf DrawLoop)) With {
            .IsBackground = True
        }
        drawThread.Start(targetForm.Handle)
    End Sub
End Class
問題

以下のような問題が発生します。

  • 起動から不定な時間の経過/何らかの操作でフォームへの描画が停止する
    • メインスレッドから渡したPicture Boxへの描画は続く
  • VisualStudioから開始しても問題は発生しない
    • exeからプログラムを開始すると発生する

対策

描画先を描画スレッドではなくメインスレッドで行うようにすると解決します。

プログラム

動く状態を再現したプロジェクトはこちら

Imports System.Threading
Imports DxLibDLL

Public Class Form1
    Private isEnd As Boolean
    Private targetForm As Form
    Private drawThread As Thread
    Private pictureHandle As Integer

    'DxLibのオプション設定と初期化
    Private Sub InitDxLib(ByRef handle As Integer)
        DX.SetUserWindow(handle) 'ハンドルセット
        'ウィンドウがアクティブじゃない時も処理を続ける
        DX.SetAlwaysRunFlag(DX.TRUE)
        'DxLib_Init()を呼んだwindow以外からも操作を可能にする
        DX.SetMultiThreadFlag(DX.TRUE)
        'pngなどの透過チャンネルを有効に設定
        DX.SetMovieColorA8R8G8B8Flag(DX.TRUE)
        '一度裏画面に描画を行い、Flipすると描画が行われるように設定(ダブルバッファリング)
        DX.SetDrawScreen(DX.DX_SCREEN_BACK)
        '2枚以上の画面にScreen.flipする場合デフォルトではVSync待ちで遅くなるのでVSyncは切る
        DX.SetWaitVSyncFlag(DX.FALSE)
        'これが無いとプログラム本体のIME関連動作がおかしくなる
        DX.SetUseIMEFlag(DX.TRUE)
        '透過色を指定しない、これが無いとデフォルトでは黒が透過されてしまう
        DX.SetUseTransColor(DX.FALSE)

        If DX.DxLib_Init() = -1 Then MsgBox("初期化に失敗しました。", MsgBoxStyle.Critical)
    End Sub

    '描画ループ
    Private Sub DrawLoop(ByVal handleObj As Object)
        Dim formHandle = handleObj.ToInt32
        InitDxLib(formHandle)
        Dim i As Integer = 0
        Dim sw = Stopwatch.StartNew()
        Dim color = DX.GetColor(100, 0, 0)

        While Not isEnd
            sw.Restart()

            DX.SetDrawScreen(formHandle)
            DX.ClearDrawScreen() '描画先初期化

            i += 1
            If i = 100 Then i = 0
            DX.DrawBox(i, 0, 100, 100, color, DX.TRUE)

            DX.SetDrawScreen(DX.DX_SCREEN_BACK) '描画先を裏画面へ
            DX.DrawGraph(0, 0, formHandle, DX.TRUE) '裏画面へ描画
            DX.ScreenFlip() 'メインウィンドウへ表示
            'サブウィンドウへ表示し、その後メインウィンドウへ処理を戻す
            DX.DrawGraph(0, 0, pictureHandle, DX.TRUE)
            DX.SetScreenFlipTargetWindow(pictureHandle) '描画先をサブ画面へ
            DX.ScreenFlip() 'サブ画面へ描画
            '後処理
            DX.ClearDrawScreen() '裏画面クリア
            DX.SetScreenFlipTargetWindow(0) '描画先をメイン画面(0番のハンドルの画面がそれ)へ戻す

            sw.Stop()
            Thread.Sleep(Math.Max(0, 16 - sw.ElapsedMilliseconds)) '簡単な垂直同期
        End While
    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        isEnd = False
        targetForm = New Form
        With targetForm
            .FormBorderStyle = FormBorderStyle.None '枠無
            .Size = New Size(192, 108)
            .Show() '表示
            .DesktopLocation = New Point(0, 0)
        End With

        pictureHandle = PictureBox1.Handle

        drawThread = New Thread(New ParameterizedThreadStart(AddressOf DrawLoop)) With {
            .IsBackground = True
        }
        drawThread.Start(targetForm.Handle)
    End Sub
End Class
原因

はっきり特定したわけではありませんが、描画スレッドのリソースが勝手に解放されてしまうのが原因のようです。
Visual Studioからの起動時に問題が発生しないのは、Visual Studioからの動作の監視によってリソース開放が防がれているものと考えられます。

感想

VSから始めると発生しないってのが厄介でした。これWindowsの方のバグってことでいいんですかね?

【日記】インターンの当落報告は期限をキッチリ切って欲しいと思う話

というわけで、 id:kuxumarinさんのエントリに触発されて自分もインターン申込みでイラッとしたことを書きます。

インターンの当落報告は期限をキッチリ切って欲しい

表題どおりなんですが、これに尽きます。

「この期間で連絡無ければお祈り」とか、期限切っていないのとか、正直やめて欲しいなと思いました。連絡の期限を待つだけの時間ははっきり言ってムダですし、その期日を記憶することも自分には結構な負担でした。そもそも落ちた時は別に受けられるインターンが結構有る時代で、早めに落ちたことを伝えて貰えば別のインターンを探すことにも繋げられる訳で、当落を伝えないということは学生の貴重な長休みの機会を奪うということに他なりません。

特に「〇〇のイベントで告知しちゃったから当落通知ができないって話を聞いた」というお話を聞いた時には「ふざけんな」と強く思いました。「先に申し込んだのはこっちなのに、後から申し込んだ人間に席を奪われた上に、機会まで浪費させられるのか?」と。

確かに企業としては優秀な学生を採用したいということについては分かりますが、このことがあったので、少なくとも2社とその関連企業には今後の転職でも関わり合いたくないと感じています。

まとめ

自分はインターンの当落通知は期限をキッチリ切るべきで、不合格ならばできる限り早めに伝えてほしいと思います。また、それを超えて採用する場合には既に応募している人間に不利益が無いようにして欲しいと思います。

退学エントリ

大学院を退学することになったので、退学エントリを書きます。

なんで辞めるの?

アクセルとブレーキを同時に踏み込んでいるような感覚が強くなったから、というのが一番大きい理由です。

自力で何かを作ろうとしても講義や研究室で取られるサバイバルコストが高すぎ、何をするにもまったく身が入らない感覚を抱えて前期を過ごしていました。興味を持っても意識を向けることができないという状況が物凄く辛かったです。

大学が悪いと主張する気はそこまで無いです。自分にとって理不尽だと感じたり、不満を感じることは数多く有りましたが、言っても贅沢でしかないのかなという気分です。結局は向いていなかったということなのでしょう。

後悔は無いの?

大学院に進学したことに後悔は有りません。入学・退学については諸々のタイミング的にはしょうがなかったと思いますし、外部発表を経験することもできました。

ただ、未練が無いわけではないです。大学院を卒業しないということは、海外で働こうと思っても就職面で非常に厳しいことは把握しています。

まあ自分は選んだので、選んだなりに良い道を歩けるようにやっていきます。

これから何するの?

アドテクの会社でエンジニアとして働きます。上手く言葉に出来ませんが、ギアをトップに入れたまま全開で走りたいです。

【日記】manifes2018に参加した

キャリアセレクトさんのmanifes2018を聞いてきました。

会場

会場はココネ株式会社さんのオフィスでした。

アメニティ

ポケコログッズ何点かと、KLab株式会社さんよりエナジードリンクをいただきました。

f:id:wrongwrongwrongwrong163377:20180826072651p:plain

f:id:wrongwrongwrongwrong163377:20180826072834j:plain

眺め

めっちゃ色々見えました。42階はヤバかったです。

f:id:wrongwrongwrongwrong163377:20180826072043p:plain

f:id:wrongwrongwrongwrong163377:20180826072305p:plain

刺さった発表

聞いた内容から刺さったものを紹介します*1

GBAプログラミング

@shumon_84さんによる、GBAゲームボーイアドバンス)を動かすためのプログラミングに関する発表でした。時の流れから資料がリンク切れだらけであったり、ハード的な制約があったりと、そういった障害を乗り越えて自作ゲームを動かしていたのがとても面白かったです。 

GBAには割り算、剰余算、浮動少数が無いという話もとても興味深かったです。

@shumon_84さんは本も出されています。続編も執筆中だとか。

booth.pm

 私が考えるPCの"最新"学習方法

岩手県立大学 竹田さんによる、低レイヤの学習にPC98を用いることのメリットについての発表でした。具体的には「最近のPCはあまりにも複雑化して仕様を追いきれないが、PC98であれば全ての仕様を個人で追えるレベルであることから、低レイヤの学習にはPC98がオススメ」という内容で、PC98と言われた瞬間は「何言ってだこいつ」と思いましたが、発表を聞き終わったときにはかなり納得感がありました。

 ヴィジュアルプログラミング言語「MAX」について

@ichgwさんによる、 ヴィジュアルプログラミング言語 MAXについての発表です。MAXについては公式が分かりやすい解説動画を上げていました。

www.youtube.com

ヴィジュアルプログラミングというと初学者向けの学習用ツールしか知りませんでしたが*2メディアアートに強く、界隈では長く使われているものだというのは初めて知りました。コンテンツを直感的な操作で設定して流すことができるというのはとても面白いです。

VJ(Visual Jockey)という役割についても初めて知りました。

ボスキタスイッチ

 あくあたん工房による「ボスが部屋を出たことを検知→ボスがドアノブに触れたのを検知→論文を床にばら撒く」というプロダクトです。自動版Boss Keyですね。発表者は@taxio_techさんでした。

aquatan.studio

ハッカソンで賞を取った 作品で、プロダクトの絵面といいPVといいめっちゃ笑いました。

刺さったワード

内容的にはこれ以上書いてしまうと際限が無いので、単語だけでもまとめます。

Malbolge

Malbolge - Wikipedia

PDL ―― 移植駆動開発

「自力で移植とテスト書いて勉強するのが効率的」という内容でした。

 その他リンク

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

 
カイゼン・ジャーニー たった1人からはじめて、「越境」するチームをつくるまで

カイゼン・ジャーニー たった1人からはじめて、「越境」するチームをつくるまで

 

*1:ツイッター垢とか探しきらなかったので紹介抜けはご容赦下さいm(_ _)m

*2:後から知りましたが、ラダー図(ラダー・ロジック)もヴィジュアルプログラミング扱いなんですね。

【日記】Navitime エンジニア体験インターンに参加した

概要

Navitime エンジニア体験インターンに参加してきました。
内容はHTML/CSS/JavScriptを用いたNavitimeAPIを叩くWebアプリケーションのサービスを3日間で作るというものです。
昼食は出たものの費用は自腹でした。とはいえそれだけ払う価値のある3日間だったと思います。

得たもの

1日目

二人一組にあらかじめ割り振られた席でスタートしました(ちょっと遅刻しました。。。)。このペアで3日間やります。
日程として、午前中はHTML/CSS/JavScriptの基礎とAPIの叩き方について学び、午後からはAPIの仕様を調べながら自分達で作成するサービスを企画しました。
基礎的な学習についてはサンプルコードと解説が充実しており、メンターの方々からも親切に教えてもらえたので、効率よく学ぶことができたと思います。

あのおじさんがプリントされたドロップ

f:id:wrongwrongwrongwrong163377:20180822195137j:plain
f:id:wrongwrongwrongwrong163377:20180821220354j:plain

2日目

2日目は1日中開発をしました。あまり詰まることもなく順調に進めることができたと思います。
社内も少しだけ見学させて頂きました。社長の「本質を知るべき」という理念とそれを実現する行動力、後オフィスチェアが凄かったです。

Navitime外装の緑茶

f:id:wrongwrongwrongwrong163377:20180822195533p:plain
f:id:wrongwrongwrongwrong163377:20180822195731p:plain

3日目

3日目は、午前中開発、午後は発表準備と発表でした。
発表の結果は残念ながらイイネを稼ぐことができませんでした。コメントとしては「一目で分からない」という内容を頂き、まさに自分が作るものが抱える課題そのもので、反省しきりです。
ペアを組んだSS君、色々迷惑も掛けたと思いますが、本当にありがとうございました。

認定証書

f:id:wrongwrongwrongwrong163377:20180823234407p:plain

3日目 延長戦

帰りの駅でばったり揃ったメンバーとサイゼに行きました。
ぶっちゃけトーク(書けない)がとても面白かったです。
改めて3日間ありがとうございました。