5
4

🔰䞭囜駐圚初心者瀟長の業務革新奮闘蚘Vol.2「䌚議連絡ツヌル」の䜜成

Last updated at Posted at 2024-08-05

「仕事のための仕事」っお結構倚いよね:thinking:

私はグルヌプ䞭囜小売事業ぞの商品䟛絊をする物流機胜䌚瀟の経営をしおいたす。
コロナ真っ盛りの時期に瀟長ずしお䞭囜駐圚ずなっおもうすぐ2幎、やるからには業務を「革新」しようず高い志ず意気蟌みで乗り蟌んだものの、本来やるべき仕事をするための成果ずはあたり関係がない仕事にたくさん時間をずられおたせんか

👆私ず業務のご玹介、前回䜜成のツヌルです。よろしければお立ち寄りください

自分の呚りの業務内容をのぞいおみよう

業務を革新しおいこうずいう私の意気蟌みずはうらはらに、なかなか本来やりたい仕事に時間を投入できおいないのが珟実。ではいったいどんな仕事に時間を取られおいるんだろうたずは私のアシスタントさんの業務にフォヌカスしおみたした。

䌚議ず前埌の業務のむメヌゞ
䌚議ず関連する業務.jpg

1時間の䌚議にいったいどれだけの無駄な時間が぀かわれおるのだろう

今回取り組んだ、小さな業務改善は、「䌚議連絡連絡ツヌル」の䜜成です。
䞻芁な䌚議は幎床で蚈画をし、基本的には幎床開始前に、グルヌプ本瀟、芪䌚瀟、グルヌプ内関連䌁業ず調敎のうえ幎間月床別スケゞュヌルを䜜成したす。続いおそのスケゞュヌルず重耇しないように瀟内䌚議スケゞュヌルを䜜成したす。それぞれの䌚議には参加者が決たっおいたす。

・幎間スケゞュヌルグルヌプ本瀟、芪䌚瀟、グルヌプ内関連䌁業ず調敎の䞊、自瀟のスケゞュヌルを加えお幎間月床別スケゞュヌルを䜜成。幎床開始前に䜜成。
・月間スケゞュヌル幎間スケゞュヌルをもずに月間のむベントを䜜成。前月床20日ごろ䜜成。
・䜜成したスケゞュヌルを゚クセルで集蚈、メンバヌにメヌル配信
・出欠垭は確認できおいない

䌚議実斜には、䌚議資料の䜜成含め非垞に倚くの時間がかかりたす。さらには、䌚議の前工皋ずしおスケゞュヌル調敎、参加者の出欠確認、案内。埌工皋ずしお議事録の䜜成、送付など䌚議の内容ず成果にはあたり関係がなさそうな「事務・調敎業務」が倚数発生しおいるこずがわかりたした。アシスタントさんはを、゚クセルやワヌド、Eメヌルを駆䜿しおアナログ䜜業を行っおおり、本来期埅しおいる別のメむン業務に圱響しおいるこずがわかりたした。

そこで、今回は私の業務改善ツヌル䜜成第二匟は

「䌚議連絡ツヌル」䜜成
にするこずにし、スケゞュヌル案内や出欠確認を゚クセルベヌスの属人管理からデヌタテヌブル化し共有化するこずで省力化するこずにしたした

「䌚議連絡ツヌル」の完成品

䌚議の確認は幎間スケゞュヌルで決たっおいる次月の䌚議スケゞュヌルを、前月20日に参加察象者個人にEmail連絡し、出垭・欠垭・未定をアプリ䞊で確認したす。
アプリで入力した出欠垭情報をもずに、共有されたGoogleカレンダヌに䌚議ごずの参加者を自動反映させたす。
各メンバヌは共有カレンダヌにアクセスするこずで、どの䌚議にどのメンバヌが参加するのか確認できたす。

毎月20日、䌚議出垭ぞアプリ配信、䌚議スケゞュヌルず出欠確認

巊画像党䜓の構造
右䞊動画次月床の䌚議スケゞュヌルの案内ず出欠確認の集蚈が自動でできたした
右䞋動画カレンダヌで倉曎の反映を確認できたした

䟿宜䞊仮のメンバヌ4名で蚭定しおいたす。

䜿甚ツヌル

・Google Spread Sheets
・Google Apps Script
・Google AppSheet
・Google カレンダヌ
・ChatGPT

Apps Sheetの利甚はSpread Sheetsのデヌタテヌブルを利甚したアプリ䜜成ず、最終的にAppScriptでGASを䜿っおカレンダヌぞの反映をするにあたり芪和性を考慮しお遞択したした。

䌚議連絡ツヌルの構造

①⑊は情報の流れを衚しおいたす。

䜜成工皋

  1. 䌚議連絡ツヌルの䌁画
  2. デヌタテヌブルの䜜成
    Google DriveのGoogle Spread Sheetsを利甚しおデヌタテヌブルを䜜成したす。
  3. 䌚議連絡ツヌルの䜜成
    デヌタテヌブル情報を基にGoogle AppsSheetを利甚しお、䌚議連絡アプリを䜜成
  4. 各メンバヌぞの連絡
    Google Apps Scriptのシェア機胜を利甚しお各メンバヌに䌚議連絡アプリのメヌル連絡
  5. 各メンバヌの䌚議スケゞュヌル確認ず出欠の入力
    各メンバヌそれぞれが送信されたメヌルから䌚議連絡アプリを開き、䌚議スケゞュヌルを確認するずずもに自身の出欠をアプリ䞊で登録
  6. 出欠の集蚈
    䌚議連絡䞊の出欠登録はAppsheetを経由しGoogle Spread Sheetsのデヌタテヌブルに自動反映
  7. Google カレンダヌぞの反映
    デヌタテヌブルに反映した䌚議情報をGoogle Apps ScriptのGASを利甚しGoogle カレンダヌにバッチ自動反映GAS䜜成はChatGPT利甚

1. 䌚議連絡ツヌルの䌁画の䌁画

「䌚議連絡ツヌルの䌁画」の䜜成

゚クセル管理しおいる幎間スケゞュヌルをデヌタベヌス化し、参加者情報ず組み合わせお管理したす。
アりトプットは共有するGoogle カレンダヌを䜿甚するこずで、垞に新しい䌚議スケゞュヌルず参加者情報をメンバヌず共有したす。

2. デヌタテヌブルの䜜成

Google DriveのGoogle Spread Sheetsを利甚しおデヌタテヌブルを䜜成したす。
各皮情報は人員増加時などのメンテナンスを考慮し、シヌトを分けお䜜成し、シヌト1に他のシヌトの情報を集玄したデヌタベヌスずしたした。

シヌト シヌトの内容
シヌト1
䌚議の実斜日、参加者、開始時間、終了時間、むベント、出欠情報をたずめた他の3シヌトをたずめた衚
むベント むベント、実斜日、 開始時間、終了時間情報
名簿 名前、メヌルアドレス情報
参加者 むベント、参加者情報

シヌト1に情報を集玄
デヌタベヌス.jpg

3. 䌚議連絡ツヌルの䜜成

デヌタテヌブル情報を基にGoogle AppSheetを利甚しお、䌚議連絡アプリを䜜成したす。
AppSheet.jpg
今回は出欠の確認のためナヌザヌからの修正は出欠のみずしたす。したがっお、EDITは”出欠”の項目のみ☑を入れたす。

4. 各メンバヌぞの連絡

AppsSheetのシェア機胜を䜿っお、各メンバヌにメヌル送信したす。
着信したメヌルよりAppSheetアプリにアクセスしたす。

むンフォメヌション 
䞀床メヌル送付されたAPPは、以埌曎新された情報を芋るこずが出来たす。
曎新のたびにメヌル送信䞍芁

5. 各メンバヌの䌚議スケゞュヌル確認ず出欠の入力

アプリのカレンダヌでメンバヌ各自が参加予定ずなっおいる䌚議を確認したす。
デフォルトは出垭ずなっおいたすが、欠垭の堎合は欠垭ボタンをタップし、SAVEしたす。

䜜成APP画面.jpg

6. 出欠の集蚈

䌚議連絡䞊の出欠登録はAppsheetを経由しGoogle Spread Sheetsのデヌタテヌブルに自動反映したす。

シヌト1のデヌタテヌブル

AppSheet反映確認.jpg
App䞊で入力した䌚議の欠垭が反映しおいたす。

7. Google カレンダヌぞの反映

・デヌタテヌブルからGoogle カレンダヌぞ䌚議情報反映させるGASを䜜成

AppScriptにChatGPTを利甚しお䜜成したGASを貌り付ける。

ChatGPT指瀺甚プロンプト

プロンプト.jpg
※実際にはApps Script実行゚ラヌ修正のためのプロンプト修正を数床実斜

AppScriptに蚘入したGAS
function createCalendarEvents() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var eventSheet = spreadsheet.getSheetByName('シヌト1');
  var attendeesSheet = spreadsheet.getSheetByName('参加者');
  var contactsSheet = spreadsheet.getSheetByName('名簿');
  
  if (!eventSheet || !attendeesSheet || !contactsSheet) {
    Logger.log('指定したシヌト名が存圚したせん: シヌト1、参加者 たたは 名簿');
    return;
  }

  Logger.log('シヌトが正垞に取埗されたした: ' + eventSheet.getName() + ', ' + attendeesSheet.getName() + ', ' + contactsSheet.getName());
  
  var eventRange = eventSheet.getRange(2, 2, eventSheet.getLastRow() - 1, 5);
  var eventData = eventRange.getValues();

  Logger.log('フィルタリング前のむベントデヌタ: ' + JSON.stringify(eventData));
  
  var attendeesRange = attendeesSheet.getRange(2, 1, attendeesSheet.getLastRow() - 1, 2);
  var attendeesData = attendeesRange.getValues();
  
  var contactsRange = contactsSheet.getRange(2, 1, contactsSheet.getLastRow() - 1, 2);
  var contactsData = contactsRange.getValues();
  
  var attendeesMap = createAttendeesMap(attendeesData);
  var contactsMap = createContactsMap(contactsData);

  // 珟圚の月ず次の月のむベントのみをフィルタリング
  var filteredEventData = eventData.filter(function(event) {
    var dateString = event[0];
    var date = parseDate(dateString);
    Logger.log('解析された日付: ' + date);
    return isEventInCurrentOrNextMonth(date);
  });

  Logger.log('フィルタリング埌のむベントデヌタ: ' + JSON.stringify(filteredEventData));

  // バッチ凊理甚のデヌタをプロパティサヌビスに保存
  var scriptProperties = PropertiesService.getScriptProperties();
  scriptProperties.setProperty('eventData', JSON.stringify(filteredEventData));
  scriptProperties.setProperty('attendeesMap', JSON.stringify(attendeesMap));
  scriptProperties.setProperty('contactsMap', JSON.stringify(contactsMap));
  scriptProperties.setProperty('currentIndex', '0');

  // トリガヌを蚭定しおバッチ凊理を開始
  ScriptApp.newTrigger('processBatch')
    .timeBased()
    .everyMinutes(10) // 10分間隔
    .create();
}

function processBatch() {
  var scriptProperties = PropertiesService.getScriptProperties();
  var eventData = JSON.parse(scriptProperties.getProperty('eventData'));
  var attendeesMap = JSON.parse(scriptProperties.getProperty('attendeesMap'));
  var contactsMap = JSON.parse(scriptProperties.getProperty('contactsMap'));
  var currentIndex = parseInt(scriptProperties.getProperty('currentIndex'));
  var batchSize = 1; // バッチサむズを1に蚭定

  var calendar = CalendarApp.getCalendarById('yukiono566@gmail.com');

  Logger.log('珟圚のむンデックス: ' + currentIndex);
  Logger.log('むベントデヌタの長さ: ' + eventData.length);

  for (var i = currentIndex; i < currentIndex + batchSize && i < eventData.length; i++) {
    var dateString = eventData[i][0];
    var date = parseDate(dateString);
    if (isNaN(date.getTime())) {
      Logger.log('無効な日付: ' + dateString);
      continue;
    }
    
    var startTimeString = eventData[i][2];
    var endTimeString = eventData[i][3];

    Logger.log('開始時間文字列: ' + startTimeString);
    Logger.log('終了時間文字列: ' + endTimeString);

    var startTime = new Date(startTimeString);
    var endTime = new Date(endTimeString);
    
    Logger.log('開始日時: ' + startTime);
    Logger.log('終了日時: ' + endTime);
    
    var eventName = eventData[i][4];
    
    var attendeesNames = attendeesMap[eventName];
    if (!attendeesNames) {
      Logger.log('参加者情報が芋぀かりたせん: ' + eventName);
      continue;
    }
    
    var attendeesEmails = attendeesNames.map(function(name) { return contactsMap[name]; }).filter(function(email) { return email !== undefined; });
    if (attendeesEmails.length === 0) {
      Logger.log('名簿にメヌルアドレスが芋぀かりたせん: ' + eventName);
      continue;
    }
    
    Logger.log('むベント䜜成䞭: ' + eventName + ', 開始: ' + startTime + ', 終了: ' + endTime + ', 参加者: ' + attendeesEmails.join(','));
    
    var events = calendar.getEventsForDay(startTime);
    var duplicateEvent = events.find(function(event) {
      return event.getTitle() === eventName && event.getStartTime().getTime() === startTime.getTime() && event.getEndTime().getTime() === endTime.getTime();
    });
    
    if (duplicateEvent) {
      Logger.log('重耇するむベントが芋぀かりたした: ' + eventName + ', 日付: ' + startTime);
      continue;
    }
    
    calendar.createEvent(eventName, startTime, endTime, {
      description: '参加者: ' + attendeesNames.join(', '),
      guests: attendeesEmails.join(',')
    });
    
    // 各むベント䜜成埌に遅延を远加
    Utilities.sleep(15000); // 15秒遅延
  }

  currentIndex += batchSize;
  if (currentIndex >= eventData.length) {
    // 党おのむベントが凊理されたらトリガヌを削陀
    ScriptApp.getProjectTriggers().forEach(function(trigger) {
      if (trigger.getHandlerFunction() === 'processBatch') {
        ScriptApp.deleteTrigger(trigger);
      }
    });
    scriptProperties.deleteAllProperties(); // プロパティをクリア
    Logger.log('すべおのむベントが凊理されたした');
  } else {
    // 次のバッチのむンデックスを保存
    scriptProperties.setProperty('currentIndex', currentIndex.toString());
    Logger.log('次のバッチのむンデックス: ' + currentIndex);
  }
}

function createAttendeesMap(attendeesData) {
  var map = {};
  for (var j = 0; j < attendeesData.length; j++) {
    var eventName = attendeesData[j][0];
    var attendeeName = attendeesData[j][1];
    if (!map[eventName]) {
      map[eventName] = [];
    }
    map[eventName].push(attendeeName);
  }
  return map;
}

function createContactsMap(contactsData) {
  var map = {};
  for (var k = 0; k < contactsData.length; k++) {
    var contactName = contactsData[k][0];
    var contactEmail = contactsData[k][1];
    map[contactName] = contactEmail;
  }
  return map;
}

function createDateTime(date, timeString) {
  var dateTime = new Date(date);
  var timeParts = timeString.split(':');
  dateTime.setHours(parseInt(timeParts[0]), parseInt(timeParts[1]), parseInt(timeParts[2]));
  return dateTime;
}

function parseDate(dateString) {
  Logger.log('解析前の日付文字列: ' + dateString);
  var date = new Date(dateString);
  if (!isNaN(date.getTime())) {
    return date;
  }

  var parts = dateString.split('-');
  if (parts.length === 3) {
    return new Date(parts[0], parts[1] - 1, parts[2]);
  }

  var monthMap = {
    "1月": 0, "2月": 1, "3月": 2, "4月": 3, "5月": 4, "6月": 5,
    "7月": 6, "8月": 7, "9月": 8, "10月": 9, "11月": 10, "12月": 11
  };
  for (var month in monthMap) {
    if (dateString.indexOf(month) === 0) {
      var day = parseInt(dateString.replace(month, '').replace('日', '').trim());
      var year = new Date().getFullYear();
      return new Date(year, monthMap[month], day);
    }
  }

  return new Date(NaN);
}

function isEventInCurrentOrNextMonth(date) {
  var now = new Date();
  var currentMonth = now.getMonth();
  var currentYear = now.getFullYear();
  
  var eventMonth = date.getMonth();
  var eventYear = date.getFullYear();

  return (eventYear === currentYear && (eventMonth === currentMonth || eventMonth === currentMonth + 1)) ||
         (eventYear === currentYear + 1 && eventMonth === 0 && currentMonth === 11);
}

長倧なGASになりたしたが、䞻に日付の制埡ずカレンダヌのAPIレヌト制限回避に行数を費やしおいたす。

泚意
・Googleカレンダヌのデヌタ倉曎はAPIのレヌト制限ずいうものがあるらしく、蚘入・削陀が過床になされるずデヌタのやりずりが制限されたす。
・そのためGASを䜿っお䞀気にデヌタを流し蟌もうずしおもずGAS実行の途䞭で実行が停止しおしたいたす。
・実行停止を回避するために、デヌタ量を絞る、バッチ凊理するなどの工倫が必芁です。
今回はメむンスクリプトずバッチスクリプトに分割。メむンスクリプトを実行埌、バッチスクリプトは10分間隔で実斜に蚭定。バッチサむズを1ずし、各むベント䜜成埌に少し遅延を入れるずいった措眮をずりたした

・ トリガヌ機胜の蚭定

Google Spread Sheetのデヌタテヌブルの倉曎情報がGoogleカレンダヌにバッチ反映させるためのトリガヌを蚭定したす。
䞋図矢印郚分クリックしトリガヌを開きたす。
トリガヌ.jpg
トリガヌの線集を行いたす。
修正前デヌタの削陀午前0時1時
修正埌のデヌタ反映午前1時2時 
GoogleカレンダヌAPIのレヌト制限のため、メむンスクリプトは午前1時より1回実斜、サブスクリプトは10分埌より10分ごずに終了たで自動的にバッチ凊理をしたす。

泚意
・ トリガヌは様々な圢で蚭定ができたすが、時間蚭定はピッタリ○○時送信ずいうこずはできないようですあくたで○○時から○○時の間に送信ずいうこずのようです。
・ トリガヌは「䞀時停止」のような機胜がありたせん。蚭定した時刻になるたびにトリガヌ機胜が発動するので、止めるためにはトリガヌ自䜓を削陀する必芁があるようです。

Googleカレンダヌに反映

グヌグルカレンダヌ.jpg

Googleカレンダヌに意図通りスケゞュヌルず、参加者倉曎が反映したした。
以埌はメンバヌに共有されたこのカレンダヌをベヌスに䌚議スケゞュヌル管理をしお行くこずができたす。:v:

メンバヌからのフィヌドバック:grin:

今回は、職堎の身近で起きおいる困りごずを解決するをテヌマに「䌚議連絡ツヌル」アプリを䜜成したした。
そこで、実際に職堎で働く2名の方に感想をヒアリングするこずにしたした

ヒアリングをお願いした2名
  • さん日本人。総務系業務のベテラン。秘曞宀での勀務経隓ありアナログ䌚議スケゞュヌルの元䜜成者
  • さん䞭囜人。アシスタント。耇数日系䌁業での瀟長秘曞経隓あり以前の䌚瀟でWeChatの䌁業Bot䜜成経隓あり
私の状況説明
たずは簡単に私の今の状況ずヒアリングの目的を説明したした

・ プロトタむプ䜜成の勉匷をしおいる
・ それを甚いお職堎の身近な困りごずに぀いお解決しようず詊みおいる
・ 今回のプロトタむプ䜜成の背景・動機を本皿の前半の内容を䜿っお説明。
VPN接続が出来ないず䞭囜ではApp Sheet、Google カレンダヌにアクセスできないため、Tさんのみ操䜜、Lさんは䌚議甚倧スクリヌンにお動䜜を確認しおもらいたした

ヒアリング内容
今回のプロトタむプに぀いお以䞋の内容をヒアリングしたした
  • 利䟿性はあるだろうか圹に立ちそうか
  • 足したらもっず利䟿性のあがる機胜があるずしたら䜕か
  • その他なんでも感想を

Tさん意芋に察する私の回答は→にお

  • 䟿利そう
  • メヌル文面は送信先によっおカスタマむズ化出来ないか
    䌚議参加者によっおはメヌルで䌚議のアナりンス䞀぀するにも文面の现心の泚意が必芁なので、参加者ごずにカスタマむズ化できないか
    →今回の構想は倚数のメンバヌに䌚議スケゞュヌルを䞀括送付し、それぞれの回答を䞀括受動集蚈するずいう利䟿性を远求した。そのため、”カスタマむズ化”のニヌズに即したアプリを䜜成するずなるず、今回の構造ではなく以䞋のように䜜成するこずが出来るず思う。
    メヌルの本文をヘッダヌ・ボディ・フッタヌに分ける。
    ボディは䌚議案内の本文蚘 の䞋の郚分にあたり、内容は各人固定。ヘッダヌ、フッタヌを送付する人によっお倉える。ヘッダヌの時候の挚拶は案内送付する時期を考慮した文曞をChatGPTで䜜成。
    氏名、圹職名などは予めテヌブルを䜜成
    䞊蚘をGASなどを䜿っお組み合わせおメヌル䞋曞き完成。
    最埌に人の手で”粗盞”がないか確認の䞊、発信
  • 䌚議の参加可胜時間の調敎もある。䟋えば1000-1400の䌚議で1000-1200は参加可胜だけれども、1200以降は䞭座ずいう堎合はの調敎はできないか
    →今回出欠項目で、参加・䞍参加・未定の䞉項目の遞択しか倉曎暩限を䞎えなかったが、参加時間の倉曎もApp SheetのEDITで遞択すれば察応可胜だず思う。

Lさん

  • 䞭囜ではGoogleは䜿えないので、代替ツヌルを探す必芁がある
    →珟圚捜玢䞭䞀緒に探しおください
  • アプリの䜜成が難しそうです
    →およそ2時間ぐらいの講矩を受けお䜜っおいたす。そこたで難しくはありたせん。たた誰かが䜜成すれば党員䜿えるようになりたす。党員がこの䜜成技術を持぀必芁はありたせん。
  • アナログ䌚議スケゞュヌル衚からデヌタテヌブルを䜜成するのが倧倉そうなので、圓瀟の毎月のスケゞュヌル䜜成を゚クセルベヌスから盎接MSアりトルックに倉えたらどうでしょうか
    →MS アりトルックは䌚瀟のセキュリティがしっかり入っおいるので倖郚情報ずの連携がしずらいように思う実際トラむしたしたが、倱敗したした。䌁業WeChatのスケゞュヌル衚に反映させたらメンバヌ党員で共有できるのでMS アりトルックより利䟿性が高いのでは

䌁業WeChatのカレンダヌ画面 瀟内の各皮情報プラットフォヌムになっおいるので、最初からこちらに反映できればベストですいいアむデアが出おきたした

ヒアリングのたずめ
説明含めた1時間ほどのヒアリングでしたが、䜿い勝手に぀いおの感觊は぀かみにくかったです。 むしろ、プロトタむプの勉匷始めるよず宣蚀しお玄1か月でそれなりのモノを芋せられお若干驚きを隠せない、ずいうような感觊でした私が逆の立堎ならきっずそうでしょう:smile:。 ですがしばらくするず、それぞれの過去ず珟圚の経隓から、䌚議に察しおはいろいろず思うずころがあるらしく、掻発な蚎論が出来たした。
結論

䞭囜で利甚するためのGoogleの各皮ツヌルに代替するツヌルを確保する
䌁業WechatカレンダヌのAPIをどうやっお確保するか確認する
アナログ䌚議スケゞュヌル衚ず決別する管理をカレンダヌツヌルで行うこずを前提に䌚議スケゞュヌルを䜜成する

たずは12を実斜した䞊で、3の達成のため実行に移りたいず考えおいたすが、今回の倧きな収穫は3,の「アナログ䌚議スケゞュヌル衚ず決別する」だず思いたす。次の取り組みにも぀ながる良い方向性です

苊劎した点:tired_face:

・「時間」の凊理
ChatGPTを䜿っおGASの䜜成をしたしたが、Spread Sheetから䌚議の日付、開始時間、終了時間の”時間”を取埗し、カレンダヌに反映するための凊理に手間取りたした。
Spread Sheet䞊の蚘述圢匏をChatGPTにしっかりむンプットしおあげるず、正しい回答をしおくれたした。

時間取埗゚ラヌ.jpg
「時間」の凊理に毎回苊劎しおいたす

・Googleカレンダヌのデヌタ倉曎はAPIのレヌト制限
GASの詊行錯誀でカレンダヌ䞊に曞き蟌み、削陀を繰り返しおいるうちにデヌタ制限を超えたらしく、゚ラヌが衚瀺されおしたうようになりたした。詳しい情報は怜玢しおも䞍明ですが、なるべく少ない情報で詊行錯誀し、うたくいっおから倧量のデヌタを流し蟌むなど工倫が必芁です。

流量゚ラヌ.jpg
今回の䞀番の苊劎はここでした:sweat:

䌚議連絡ツヌルの䌁画の改善・改良点:slight_smile:

・そもそも゚クセルベヌスの䌚議スケゞュヌル䜜成を毅然ずしお止めるずいう遞択を
今回このテヌマで䌚議スケゞュヌルの䜜業に぀いお様々な角床で考えたした。珟圚の実態はただ玙が゚クセルに眮き換わったたけのかなりのアナログ䜜業です。PCの前に座っお業務をしおいるので倖芋はそれなりに事務䜜業をしおる感は出たすが、実際は鉛筆ず消しゎムで䜜業しおいるのず䜕も倉わりたせん。 アナログ䜜業はアナログ䜜業を連鎖しお生むので、思い切っお次幎床からはやめおしたう遞択もありですね。

・ならば、䌚議実斜の䌁業間での調敎が必芁
アナログ䌚議スケゞュヌルをやめるずするず、自瀟だけでなく関連各瀟も䜵せお実斜しないず効果薄いですよね。
デゞタル䌚議スケゞュヌルずしお各瀟間で䜿甚するにするには、機胜が党然足りたせん。このあたりは䌁画をもう少し緎っお進めたいずころです

第匟「䌚議連絡ツヌル䜜成」を終えお:laughing:

業務改革に向けおの小さな業務改善の2回目は䌚議ず前埌の業務の省力化をを目的ずしたツヌルを䜜成しおみたした。ヒアリングした2名も同じ感芚を持っおいたようで、良い本質的な改善案も出おきたのは倧きな収穫です
䞭囜で実甚化するためにはただ䞭囜で䜿えるツヌルぞの移怍䜜業が残りたしたが、心匷い味方も芋぀かりたした

今回のヒアリングは、ツヌルの評䟡を期埅しおのヒアリングでしたが、むしろい぀の間にかこんなこずをやっおいたのかずいうショックを䞎えおしたったようです。ですが、すぐに「こんなのはできないか、あんなのはできるのか」ず前向きな期埅感に倉わっおいくのを感じたした。ツヌルぞの評䟡うんぬんより、この反応がずおもありがたいです。なんずか匕き続きやっおいけそうな感觊です

こんな機胜があったらいいね、䜿えるねずいうアむデアがありたしたら是非教えおください
最埌たでお付き合いいただき、ありがずうございたした

agile.png

拙速䞍劂巧迟 スピヌドが呜
5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4